做有气质的优雅女人:有关C编程问题

来源:百度文库 编辑:高考问答 时间:2024/04/28 17:56:27
把千位数字和个位数字重新组成一个新的十位数(新十位数的十位数字是原四位数的千位数字,新十位数的个位数字是原四位数的个位数字), 以及把十位数字和百位数字组成另一个新的十位数 (新十位数的十位数字是原四位数的百位数字,新十位数的个位数字是原四位数的十位数字), 如果新组成的两个十位数均是偶数并且两个十位数中至少有一个能被9整除,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中, 并要计算满足上述条件的四位数的个数cnt
main()
{
int a[10]={4542,0215,3245,4285,2729,7895,2546,3578,2729,2546};
int I,thou,hun,ten,data,j,cnt=0,b[10];
int ab,cd;
clrscr();
for(I=0;I<10;I++)
{thou=a[I]/1000; hun=a[I]%1000/100;
ten=a[I]%100/10; data=a[I]%10;
ab=10*data+thou; cd=10*hun+ten;
if ((ab%9==0||cd%9==0)&&ab%2!=1&&cd%2!=1&&ab!=0&&cd!=0)
{b[cnt]=a[I];cnt++;}
}
for(I=0;I<=cnt-1;I++)
{for(j=I+1;j<cnt;j++)
if(b[I]<b[j])
{data=b[I];b[I]=b[j];b[j]=data;}
}
for(I=0;I<10;I++)
printf("%5d\n",b[I]);
}
为什么运行结果有一些是错误

同时两个新数的十位数字均不为零的判断写错了

if ((ab%9==0||cd%9==0)&&ab%2!=1&&cd%2!=1&&ab!=0&&cd!=0)
改成if ((ab%9==0||cd%9==0)&&ab%2!=1&&cd%2!=1&&thou!=0&&hun!=0)

你题目的描述真是够呛。。。。。
你ab赋值错了,应该是 :
ab = 10 * thou + data;