C语言编程为什么编译成功运行没有结果?

题目:(1)n除以11(整数相除)所得到的商等于n的各位数字的平方和;(2)n中至少有两位数字相同。程序最终得到结果为131 550 900
我的源程序如下:
main()
{ int n,a,b,c;
for(n=100;n<1000;n++)
{ a=n/100;
b=n/10%10;
c=n/10;
if((n/11==a*a+b*b+c*c)&&((a==b)+(a==c)+(b==c))>=1)
printf("%5d",n);
}
getch();
}
到底哪里出问题了 求解答!!

求个为的时候错了,应该是求余运算 c=n%10; 另外条件语句也不对,给你改了一下, 程序如下:
main()
{ int n,a,b,c;
for(n=100;n<1000;n++)
{ a=n/100;
b=n/10%10;
c=n%10;
if((n/11==a*a+b*b+c*c)&&((a==b)||(a==c)||(b==c)))
printf("%5d",n);
}
getchar();
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-23
if语句的问题,你的C程序不存在语法错误,所以编译成功,但是存在逻辑错误,我看了一下,你的if的判断语句有问题,所以导致无法输出打印。追问

怎么修改呢?

追答

if判断太长,将其分解为多个if语句,用else if实现之

追问

改了木有用。。初学者求详解。。

追答

int a = n/11; /*n除以11*/
if (n<=999) {
/*获得三位数以下的每一位*/
n1 = n/100;
n2 = (n%100)/10;
n3 = (n%100)%10;
}
m = n1*n1 + n2*n2 + n3*n3; /*三数的平方和*/
if (a == m)
/*输出n*/

好好看一下如何写高质量的C程序,你的程序可读性非常不好

第2个回答  2012-03-23
#include <stdio.h>
int main()
{ int n,a,b,c;
for(n=100;n<1000;n++)
{ a=n/100;
b=(n-a*100)/10;
c=(n-a*100-b*10)/1;
if((n/11==a*a+b*b+c*c)&&((a==b)+(a==c)+(b==c))>=1)
printf("%5d",n);
}
printf("\n");
return 0;
}
以上是我按照你的题目自己编的完整程序 希望对你有帮助
第3个回答  2012-03-23
int main( void )
{
int n, a, b, c; // C很忌讳随意定义变量名, 百十个位直接用英文标明
for( n = 100; n < 1000; ++n) // 能用++n 的时候 不用 n++
{
a = n / 100;
b = (n / 10) % 10;
c = n % 10;
if( ( n / 11 == a * a + b * b + c * c) && ( ( a == b ) || (a == c) ||(b == c) ) )
printf("%5d\t“, n);
}
printf(" \n ");

return 0;
}
相似回答