求助!指针数组的应用问题,麻烦高手看看 谢谢 呵呵!
利用指针数组对键盘输入的五个数进行从小到大排序;下面是我写的一段代码,自己感觉上没有错误,编译的时候也没有错误,但一运行问题就来了,刚输入俩数,就不能继续了,麻烦高手路过的时候看一下阿!谢谢了 阿 呵呵#include<stdio.h>
int main()
{
int a[5];
int *p[5];
int *p1;
int i,j;
for(i=0;i<5;i++)
p[i]=&a[i];
printf("please input five inttegers:\n");
scanf("%d\n",&a[i]);
for(i=0;i<4;i++)
{
for(j=i+1;j<5;j++)
if(a[i]>a[j])
{
p1=p[i];
p[i]=p[i+1];
p[i+1]=p1;
}
}
for(i=0;i<5;i++)
printf("%d\n",*p[i]);
}
经过改正过的代码
//代码1
#include<stdio.h>
int main()
{
int a[5];
int *p[5];
int *p1;
int i,j;
for(i=0;i<5;i++)
p[i]=&a[i];
printf("please input five inttegers:\n");
for(i=0;i<5;i++)
scanf("%d",&a[i]);
for(i=0;i<4;i++)
{
for(j=i+1;j<5;j++)
if(*p[i]>*p[j])
{
p1=p[i];
p[i]=p[j];
p[j]=p1;
}
}
printf("----------------\n");
for(i=0;i<5;i++)
printf("%d ",*p[i]);
printf("\n");
}
//代码2
#include<stdio.h>
int main()
{
int i,j,k;
int a[5];
int *p[5];
for(i=0;i<5;i++)
p[i]=&a[i];
printf("please input 5 numbers:\n");
for(i=0;i<5;i++)
scanf("%d",p[i]);
for(i=0;i<4;i++)
for(j=i+1;j<5;j++)
if(*p[i]>*p[j])
{
k=*p[i];
*p[i]=*p[j];
*p[j]=k;
}
for(i=0;i<5;i++)
printf("%d ",*p[i]);
printf("\n");
}
代码1和代码2均可以很好的完成题目的要求
[[it] 本帖最后由 clqngw 于 2008-6-2 11:35 编辑 [/it]]
[[it] 本帖最后由 clqngw 于 2008-6-2 11:36 编辑 [/it]]