帮我看看这个C语言程序错在哪吧!

来源:百度知道 编辑:UC知道 时间:2024/06/14 08:25:55
就是要把miles数组中的数据复制到dist数组中,然后显示dist数组中的数字#include <stdio.h>
#define NUMELS 7
int main()
{
int miles[NUMELS]={15,22,16,18,27,23,20};
int *nPtr, dist[NUMELS];
int i;
nPtr=miles;
printf("The numbers in dist are:");
while (nPtr<miles+NUMELS)
{
for(i=0;i<NUMELS;i++)
dist[i]=*(nPtr+i);
printf("%d",dist[i]);
}
return 0;
}
这个运行的时候总是不断显示同一个数字。。。

给你提取出两条语句出来
1.while (nPtr<miles+NUMELS)
2.dist[i]=*(nPtr+i);
你认为nPtr指向的地址会变吗?它根本就是不变的,你将陷入无限循环。如果你是*(nPtr++)这个值就会变。而且你的程序是错误的。应该如下:
#include <stdio.h>
#define NUMELS 7
int main()
{
int miles[NUMELS]={15,22,16,18,27,23,20};
int *nPtr, dist[NUMELS];
int i=NUMELS;
nPtr=miles;
printf("The numbers in dist are:");
while (i--)
{
dist[i]=*(nPtr+7-i-1);
printf("%d ",dist[i]);
}
return 0;
}

while (nPtr<miles+NUMELS)//这个地方nPtr在循环里面并没有修改,当然循环无法结束了。
{
for(i=0;i<NUMELS;i++)
dist[i]=*(nPtr+i);
printf("%d",dist[i]); //这一句也应该包到for循环里面。
}

改成如下方式就可以了,你注意比较:
#define NUMELS 7

int main()
{
int miles[NUMELS]={15,22,16,18,27,23,20};
int *nPtr, dist[NUMELS];
int i;
nPtr=miles;
printf("The numbers in dist are:");
while (nPtr<miles+NUMEL