请问这个程序的结果

来源:百度知道 编辑:UC知道 时间:2024/05/15 03:41:41
main()
{int a[5]={1,3,5,7,9};
int i,*p;
p=a;
for(i=1;i<5;i++)
*(p+i)=a[i-1];
for(i=0;i<5;i++)
printf("a%d=%d\n",i,a[i]);}
`
`
`
main()
{int n=924;
int num=0,i;
scanf("%d",&n);
for(i=1;i<=n;i++)
if(n%i==0)
num++;
printf("%d",num);
}

请问怎么判断这两个程序的结果,而且要速度快的判断的方法,这是考试里的判断c语言程序结果的题目……不会```
卷上的题目是这样写的```不排除是它自己的题目问题,但如果n=924,有人可以很快算出答案么?

因为
p=a;
for(i=1;i<5;i++)
*(p+i)=a[i-1];
所以a[i]都被改成1了,显示如下
a0=1
a1=1
a2=1
a3=1
a4=1

第二个有点问题,你既然n赋值了为何还要再输入n
结果看你的输入而定,表示的是输入数的因子个数,
包括自己和1
例如如果输入的n是10的话显示4
如果输入是924的话应该是显示...24吧

其实还有个求约数的算法,占用资源比较少,不过对于值比较小的数,题目这个算法比较好理解,924算小啦。
至于你说的n=924的话,就看你数学功底了,可以1,924,2,462,3,308,4,231...这样下去,也不是很难。

上面这个程序好像把数组里的数都换成A[0]然后输出了,也就是
a0=1
a1=1
a2=1
a3=1
a4=1
因为开头p=a就是让P指向数组a的头节点
后面*(p+i)=a[i-1]; 经过循环就是吧a[0]的值一个一个赋给数组后面的单元,所以最后数组中的数都换成1了
第二个看不懂什么意思,输入一个数,让i从1开始,用输入的数除i求余数,知道余数为零,输出循环的次数num。具体干什么用的我也看不懂,还有开头给n赋值也不知道有什么用,因为后面又将输入的数给了n。
如果你弄懂了第二个,希望把答案发给我,就在百度里给我留言好了