
编程序输出1到10000内的所有回文数并统计总个数。
#include<stdio.h>#include<conio.h>main(){inta,b,c,d,i;intsum;sum=0;printf("1到10000之间的...
#include<stdio.h>
#include<conio.h>
main()
{
int a,b,c,d,i;
int sum;
sum=0;
printf("1到10000之间的回文数为:\n");
for(i=11;i<=10000;i++)
{
if(i==a*1000+b*100+c*10+d)
{
if((a==b==0&&c==d)||(a=0&&b==d)||(a==d&&b==c)||(a==b==c==d))
{
printf("%d\n",i)
sum++;
printf("1到10000之间的回文总个数为:\n");
printf("%d\n",sum);
}
}
}
getch();
}
为什么总报错呢? 展开
#include<conio.h>
main()
{
int a,b,c,d,i;
int sum;
sum=0;
printf("1到10000之间的回文数为:\n");
for(i=11;i<=10000;i++)
{
if(i==a*1000+b*100+c*10+d)
{
if((a==b==0&&c==d)||(a=0&&b==d)||(a==d&&b==c)||(a==b==c==d))
{
printf("%d\n",i)
sum++;
printf("1到10000之间的回文总个数为:\n");
printf("%d\n",sum);
}
}
}
getch();
}
为什么总报错呢? 展开
2个回答
展开全部
① a,b,c,d都没有定义也没有计算;
② 那个逻辑判断也没有完备, 有漏掉的情况。
③ 给你个完整的代码;
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
unsigned int a, b, c, d;
int i;
int sum;
int flag = 0;
printf("Printing reverse number from 1 to 10000\n");
for (i=1; i <= 10000; i++)
{
flag = 0;
a = i/1000;
b = (i-a*1000)/100;
c = (i-a*1000-b*100)/10;
d = i-a*1000-b*100-c*10;
/* printf("%d=%d, %d, %d, %d\n", i, a, b, c, d); */ /* debug */
if (i < 10) /* single digit */
{
flag = 0;
}
else if (i<100) /* double digits */
{
if (c == d)
flag = 1;
}
else if (i < 1000) /* triple digits */
{
if (b == d)
flag = 1;
}
else /* quadruple digits */
{
if ((a == d) && (b == c))
flag = 1;
}
if (flag) {
printf("%d\n", i);
sum++;
}
}
printf("Sum = %d\n", sum);
return 0;
}
应该输出190个。
② 那个逻辑判断也没有完备, 有漏掉的情况。
③ 给你个完整的代码;
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
unsigned int a, b, c, d;
int i;
int sum;
int flag = 0;
printf("Printing reverse number from 1 to 10000\n");
for (i=1; i <= 10000; i++)
{
flag = 0;
a = i/1000;
b = (i-a*1000)/100;
c = (i-a*1000-b*100)/10;
d = i-a*1000-b*100-c*10;
/* printf("%d=%d, %d, %d, %d\n", i, a, b, c, d); */ /* debug */
if (i < 10) /* single digit */
{
flag = 0;
}
else if (i<100) /* double digits */
{
if (c == d)
flag = 1;
}
else if (i < 1000) /* triple digits */
{
if (b == d)
flag = 1;
}
else /* quadruple digits */
{
if ((a == d) && (b == c))
flag = 1;
}
if (flag) {
printf("%d\n", i);
sum++;
}
}
printf("Sum = %d\n", sum);
return 0;
}
应该输出190个。
展开全部
i==a*1000+b*100+c*10+d这条语句执行的时候,a,b,c,d的值都没有,当然报错啊。而且你想通过这样求得abcd的值是不可能的
a=i/1000;
b=i%1000/100;
c=i%100/10;
d=i%10;
判断是不是回文数的时候可以这样
if(a==0) //不是四位数
{
if(b==0) //不是三位数
{
if(c==d) //两位数,比较后两位
*******
}
else //是三位数,比较首末两位
{
if(b==d)
*******
}
}
else //是四位数,首末比较,中间比较
{
if(a==d&&b==c)
********
}
a=i/1000;
b=i%1000/100;
c=i%100/10;
d=i%10;
判断是不是回文数的时候可以这样
if(a==0) //不是四位数
{
if(b==0) //不是三位数
{
if(c==d) //两位数,比较后两位
*******
}
else //是三位数,比较首末两位
{
if(b==d)
*******
}
}
else //是四位数,首末比较,中间比较
{
if(a==d&&b==c)
********
}
追问
那个a=i/1000;
b=i%1000/100;
c=i%100/10;
d=i%10;
是什么意思啊?
追答
a,b,c,d分别是千,百,十,个位上的值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询