你这个程序是从哪里弄来的??如果是标准程序库里弄出来,我就彻底无语了~
程序代码:
/*大概明白意思了,程序大意就是有两个数组,找出两个数组互异的元素并排序输出,但程序代码有些问题*/
/*这个程序主体没弄好就搞样例输入,这样只会增加混乱,好不容易分割程序模块,却发现程序内容不知所云~
原程序排版很不理想,变量标识不明确,结构似乎和原意表达有出入,最好用函数分开处理*/
/*以下是我把原程序整理后的结果*/
#include<stdio.h>
#include<string.h>
int main()
{
int a[1000],b[1000],c[1000];
int n,m;
/*-------------------------------------------------*/
printf("请输入第一组案例个数和第二组案例个数\n");
while(scanf("%d%d",&m,&n)!=EOF) //m,n为案例个数
{
int i,j; //用到什么声明什么,原贴把一大堆变量写到循环体外面会影响程序可读性
int w,p,k;
w=0;
p=0;
k=0;
printf("请输入第一组数据\n");
for(i=0;i<m;i++)
scanf("%d",&a[i]);
printf("请输入第二组数据\n");
for(i=0;i<n;i++)
scanf("%d",&b[i]);
/*-------------------------------------------------*/
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
if(a[i]!=b[j]) //k两个数组出现不同元素次数
k++;
if(a[i]==b[j]) //w两个数组出现不同元素次数
w++;
}
/*-------------------------------------------------*/
printf("两个数组大小分别为%4d%4d\n",m,n); //调试输出结果显示~这里m,n与k,w之间的关系较为混乱,规律性很低~
printf("两个数组出现不同元素次数为%d\n",k);
printf("两个数组出现相同元素次数为%d\n",w);
/*-------------------------------------------------*/
if(k==n) //如果两个数组出现元素不同次数等于第一个数组
{
c[p]=a[i];
p++; //不管怎么说,每次满足条件p的值都只能加1,这个原意猜测应该是个循环结构
}
/*-------------------------------------------------*/
if(w==m) //如果两个数组出现不同元素次数等于第二个数组
printf("NULL\n");
else
for(i=0;i<p-1;i++) //这个程序猜测有个bug,p始终不是0就是1~不会大于1的~
for(j=0;j<p-1-i;j++)
if(c[j]>c[j+1]) //典型的冒泡法排序,排序输出
{
int g;
g=c[i];
c[j]=c[j+1];
c[j+1]=g;
}
/*-------------------------------------------------*/
for(i=0;i<p;i++) //输出数据
printf("%d \n",c[i]);
/*-------------------------------------------------*/
printf("请输入第一组案例个数和第二组案例个数\n");
}
/*-------------------------------------------------*/
printf("\n");
return 0;
}
[此贴子已经被作者于2016-12-5 21:25编辑过]