注册 登录
编程论坛 C++教室

[c++]还是那个纠结数组问题数组问题啊~求解T-T,不懂还是不懂!!

糖包包 发布于 2011-05-10 23:53, 626 次点击
题目是:
设有有序(值从小到大)的两组数据,讲这两组数据有序合并(合并过程数组始终保持有序)。
我想用那个选择排序的方法来做。(上次问过一次可是我还是不懂。啊啊啊啊啊
我写出来是这样的:
程序代码:
#include <iostream>
using namespace std;
void main()
{
    int i,j,k,t;
    int a[4],b[7],c[12];
    cout<<"请输入a组数的5个数值(取值从大到小):"<<endl;
    for(i=0;i<4;i++)
        cin>>a[i];
    cout<<"请输入b组数的8个数值(取值从大到小):"<<endl;
    for(j=0;j<7;j++)
        cin>>b[j];
   
    for(k=0;k<12;k++)
    for(j=k+1;j<11;j++)
    for(i=j+1;i<10;i++)
           
          if(a[i]>b[j])
          {t=a[i];a[i]=c[k];c[k]=t;}
          if(a[i]<b[j])
          {t=b[i];a[i]=c[k];c[k]=t;}
      
            cout<<"数组c:"<<endl;
            for(k=0;k<12;k++)
                cout<<c[k]<<" ";
            cout<<endl;

}

可是它输出的时候不对。全部是很大位数的数字。T-T求老师啊~我纠结了好几天了。555555...
3 回复
#2
qq10235692232011-05-11 08:14
程序代码:
#include <iostream>
using namespace std;
void main()
{
    int i,j,k,t;
    int a[4],b[7],c[11];
    cout<<"请输入a组数的4个数值(取值从大到小):"<<endl;
    for(i=0;i<4;i++)
        cin>>a[i];
    cout<<"请输入b组数的7个数值(取值从大到小):"<<endl;
    for(j=0;j<7;j++)
        cin>>b[j];
  
    for(k=0;k<11;k++)
    for(j=k+1;j<7;j++)
    for(i=j+1;i<4;i++)  //三个for,数组都越界了
         {
          if(a[i]>b[j])
          {t=a[i];a[i]=c[k];c[k]=t;}
          if(a[i]<b[j])
          {t=b[i];a[i]=c[k];c[k]=t;}
          }
      
            cout<<"数组c:"<<endl;
            for(k=0;k<11;k++)
                cout<<c[k]<<" ";
            cout<<endl;

}
#3
pangding2011-05-12 11:38
数组凡是出怪数都是越界了。一但看到,应该很容易定位问题所在。
#4
linw12252011-05-12 13:28
题目是说两个数组有序合并成一个数组?
定义数组 a[4],b[7],c[11]
把a数组和b数组里面的书赋给c,然后在c数组中重新按需要的顺序排列。
不知道这么理解对不对。
然后楼主的代码里面:
cout<<"请输入a组数的5个数值(取值从大到小):"<<endl;
    for(i=0;i<4;i++)
        cin>>a[i];
    cout<<"请输入b组数的8个数值(取值从大到小):"<<endl;
    for(j=0;j<7;j++)
        cin>>b[j];

定义的数组a是4个数的,怎么能输入5个??
b数组也是同样的问题。
定义数组时: 比如 int a[5]; 这时候数组a就表示含有5个整数。
然后使用数组元素时: 比如 t=a[4];表示把a数组里面的第5个元素的值赋给t。
1