请高手帮忙看看c语言程序

来源:百度知道 编辑:UC知道 时间:2024/06/26 00:19:17
#include <stdio.h>
#include<math.h>
#include <conio.h>
void main()
{int i,a[2],b[2],j=0,qw,bw,sw,gw;
int flag;
printf("Input a[2]:");

for(i=0;i<3;i++)

scanf("%d",&a[i]);//输入a【2】

for(i=0;i<3;i++)
{ qw=a[i]/1000;bw=(a[i]%1000)/100;
sw=(a[i]%100)/10;gw=a[i]%10; / /求出千位百位十位各位
if(qw>=bw&&bw>=sw&&sw>=gw) //如果千位大于百位大于十位大于个位

flag==1;
else
{flag==0;break;
}
if(flag==1)
b[j++]=a[i]; //如果flag=1,用a【i】向b赋值
}
}
printf("%d",b[j]); //输出数组b
printf("\n");
getch();
}

请高手帮忙看看程序,目的是定义数组a【2】,选出千位大于百位大于十位大于个位的数,并赋值进b数组中,但是实现不了,请高手指教。不胜感激!!!
for(j=0;j<3;j++)
printf("%d",b[j]); //输出数组b
改为循环后输出仍然不行.

首先纠正楼上的回答,数组a[2]只有两个存储空间,而不是三个。

程序修改如下:

#include <stdio.h>
void main()
{
int i, a[2], b[2], j = 0, qw, bw, sw, gw;
int flag;
printf("Input a[2]:");

//for (i = 0;i < 3;i++)// [这里会发生数组越界错误,解决方法是循环减少一次]
for(i=0; i<2; i++)
scanf("%d", &a[i]); //输入a【2】

//for (i = 0;i < 3;i++)// [错误同上]
for(i=0; i<2; i++)
{
qw = a[i] / 1000;
bw = (a[i] % 1000) / 100;
sw = (a[i] % 100) / 10;
gw = a[i] % 10; // 求出千位百位十位各位

if (qw >= bw && bw >= sw && sw >= gw) //如果千位大于百位大于十位大于个位
/* 对元素赋值咋用双等号呢?
flag == 1;*/
flag = 1;
else
{
/* 理由同上
flag == 1;*/
flag = 0;
/* 使用break直接跳出了循环,改用continue
break;
*/
continue;
}
if (flag == 1)
b[j++] = a[i]; //如果flag=1,用a【i】向b赋值
}

/* 由下面转上来的代码*/
for(i=0; i<j; i++)// [打印所有b数组中的值]
/*