先上这个题目,但是我不是要问题怎么做,而是我编的这个为什么不能调试???,运行也是错的,编译是过了。我想值到我的编码为什么会出现这状况,不是这题怎么做.谢谢大家了。 2.—》》 我出错的代码: 为什么不能调试???哪错了,大家看看,谢谢; #include"stdio.h" int main() { int a[5]; int i,n; for(n=95860;;n++) { i=0; while(n>10) { a[i++]=n%10; n=n/10; } a[i]=n; if(a[0]==a[4]&&a[1]==a[3]) { printf("%d%d%d%d%d\n",a[0],a[1],a[2],a[3],a[4]); break; } } /*我来说下,首先a数组是用来存放每个位上的数的,那个if是用来选数,我们现在就是要 在95860后面开始找,找到一个数,那个数它是对称相等的,比如95859,以8位分界线 两边的数对称相等。*/ } |
|
20分 |
修改如下:
#include"stdio.h" int main() { int a[5]; int i, j, n; for (n = 95860;; n++) { i = 0; j = n; //用j记录n的值 while (j>10) { a[i++] = j % 10; j = j / 10; } a[i] = j; if (a[0] == a[4] && a[1] == a[3]) { printf("%d%d%d%d%d\n", a[0], a[1], a[2], a[3], a[4]); break; } } /*我来说下,首先a数组是用来存放每个位上的数的,那个if是用来选数,我们现在就是要 在95860后面开始找,找到一个数,那个数它是对称相等的,比如95859,以8位分界线 两边的数对称相等。*/ return 0; } |
我在你的代码for循环开始处添加一句 printf(“woaino %d “,n); 运行结果是
原因就是n是main()函数中的变量,对于for循环来说就属于外部全局的,所以,除了第一次,每次循环n都是从11开始,加到11后,进入while循环,执行n=n/10; n变为1,然后n++变成2,再在for循环中加到11,然后继续,所以找不到了。 只需要在for循环中添加 int m = n; 然后用m取值即可。你试试。 |
|
20分 |
#include <stdio.h>
void main() |
你的for循环里面没有循环条件,编译器不会给你编译通过,而且不符合语法规范。
|
|
n是for的变量,在while里面不能改
k =n, i=0; while(k) a[i++] =k%10, k/=10; |