求大神帮忙啊~C语言编程从键盘输入三个整数存入数组中,操作指针使数组中的数按从大到小的次序输出。

这是我编的程序,不知道错在哪里了。。
#include<stdio.h>
main()
{
int *p,a[2],temp,i;
p=a;
printf("请输入三个数字");
for(i=0;i<=2;i++)
scanf("%d",a[i]);
if(*p<*(p+1))
{
temp=*p;
*p=*(p+1);
*(p+1)=temp;
}
else ;
if(*p<*(p+2))
{
temp=*p;
*p=*(p+2);
*(p+2)=temp;
}
else ;
if(*(p+1)<*(p+2))
{
temp=*(p+1);
*(p+1)=*(p+2);
*(p+2)=temp;
}
else ;
printf("%d\n",*p);
printf("%d\n",*(p+1));
printf("%d\n",*(p+2));
}

首先,输入三个数,你的数组开才开了2,数组开小了!a[3]

其次,scanf ("%d", &a[i]);这里要使用取地址符号才能进行输入

再次,你加的else ;这些语句都没有用,直接删除

#include<stdio.h>
int main()
{
int *p,a[3],temp,i;
p=a;
printf("请输入三个数字");
for(i=0;i<=2;i++)
scanf("%d",&a[i]);
if(*p<*(p+1))
{
temp=*p;
*p=*(p+1);
*(p+1)=temp;
}
if(*p<*(p+2))
{
temp=*p;
*p=*(p+2);
*(p+2)=temp;
}
if(*(p+1)<*(p+2))
{
temp=*(p+1);
*(p+1)=*(p+2);
*(p+2)=temp;
}
printf("%d\n",*p);
printf("%d\n",*(p+1));
printf("%d\n",*(p+2));
return 0;
}

温馨提示:答案为网友推荐,仅供参考