你改了两个地方
一个是把bw=a[i]/100%10;
sw=a[i]%100/10; gw=a[i]%10;
该成了bw=a[i]/100;
sw=a[i]/10; gw=a[i];
如果这个数为2468,即a[i]=2468
那么正确的结果是bw=4;sw=6;gw=8
而你的结果是 bw=24;sw=246;gw=2468
这肯定是不对的啊
还有个地方
你将qw&&qw%2==0改成了qw%2==0
其实前面把qw与进去是为了判断千位是不是为0
因为题目说了4位数
如果千位为0就是3位数了
如果你在一开始就加个if语句判断下也是可以的
否则就要到这里判断
都有错,应该是:
....
{ qw=a[i]/1000; bw=a[i]/100%10;
sw=a[i]/10%100; gw=a[i]%10;
....
qw代表千位数,bw代表百位数,依此类推,你去用笔算一下,是不是我这样算,你那算法肯定错,原来的题目估计是印错了一个符号.
补充:按你那想法好象是可以,但最好不要那样算,我暂时看不出你那样算有没有其他错误,结果应该是没错,但思维有点问题,是按原题目那样算肯定不会有错,一般编程的思维都是那样的,你那样算有点怪怪的.
可以用四个循环变量,四层嵌套循环,每个变量从8到0(表示千位的到2就行了),递减2,不就行了。
程序没有那么复杂吧!
如果题目只要求这样的话,有一个好的办法
你可以尝试用 字符数组 c[5]
scanf("%s",c);
然后逐个判断ASCII码
前面QW保证千位的数字不是零,也就是说确认是个四位以上的数…………