|
先上这个题目,但是我不是要问题怎么做,而是我编的这个为什么不能调试???,运行也是错的,编译是过了。我想值到我的编码为什么会出现这状况,不是这题怎么做.谢谢大家了。 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; |
|