读书人

关于求完数的源代码有几句理解不了

发布时间: 2013-10-01 12:15:56 作者: rapoo

求助,关于求完数的源代码有几句理解不了


#include<stdio.h>
int main()
{
int a[1000];
int i,j,n,m;
for(j=2;j<1000;j++)
{
n=0;
m=j;
for(i=1;i<j;i++)
{
if((j%i)==0)
{
m=m-i;
a[n]=i;
n++;
}
}
if(m==0)
{
printf("%d is a wanshu\n",j);
for(i=0;i<n-1;i++)
printf("%d,",a[i]);
printf("%d\n",a[n-1]);
}
}
return 0;
}

教程上的代码
其他的都理解了,可是最后几句

printf("%d is a wanshu\n",j);
for(i=0;i<n-1;i++)
printf("%d,",a[i]);
printf("%d\n",a[n-1]);

这几句是什么意思?为什么i要<n-1最后一个printf又是什么意思?a[n-1]到底是什么东西?
原来的数据不是a[n]吗怎么又变成a[i]了
最后的那个return 0;为什么要出现?谢谢,明天去考试了,祝自己好运
[解决办法]
因为 i < n-1 所以最后加了一个printf("%d\n",a[n-1]);

也可以 i < n 最后加一个printf("\n");
[解决办法]
1.遍历输出数组。。。。
2.输出数组下标为n-1的值(这里最好一个下标没有输出,所以。。)
[解决办法]
你问的真是让人无法回答。
为什么i要<n-1最后一个printf又是什么意思?a[n-1]到底是什么东西?
因为最后的a[n-1]要特殊输出,你看他多了个\n, a[n-1]就是最后一个元素。

原来的数据不是a[n]吗怎么又变成a[i]了
因为i的范围是0到n-2

最后的那个return 0;为什么要出现?
因为main的返回值是int

读书人网 >C语言

热点推荐