满意答案
ha141988
2013.05.26
采纳率:44% 等级:13
已帮助:10095人
需要修改三个地方:(确保程序正常运行)
1.scanf("%d",*ptr);改为scanf("%d",ptr);
因为ptr本身就是指针,*ptr是内容,不对;scanf函数的第二个参数应该是指针(也可以是地址)
2.第一个for循环,就是在scanf的那个循环体完后加上ptr=&num[0];
如果不加上你的ptr就指向一块未知的内存,那么你下面的for循环操作将出错
3.在printf("冒泡完了为:\n"); 语句后加上ptr=&num[0];
道理同上
还需修改的一个地方,就是你的算法不对,你这个根本不是什么冒泡算法,请你自己修正吧;这里就不帮你修改了!!!
修改后的程序如下:
#include
#define N 5
void main()
{
int *ptr,num[N],i,temp;
ptr=&num[0];
printf("请输入5个数字:");
for(i=0;i
{
scanf("%d",ptr); //修改错误
ptr++;
}
ptr=&num[0];//修改错误
for(i=0;i
{
if(*ptr
{
temp=*(ptr+1);
*(ptr+1)=*ptr;
*ptr=temp;
ptr++;
}
}
ptr=&num[0];//修改错误
printf("冒泡完了为:\n");
for(i=0;i
{
printf("%d",*ptr);
ptr++;
printf("\n");
}
}
10分享举报