帮忙看下这个C程序错哪里了

来源:百度知道 编辑:UC知道 时间:2024/05/22 16:05:10
#include "stdio.h"
main()
{int a[10],*p,*q,i,temp;
p=a[0];q=a[0];
for(i=0;i<=9;i++)
scanf("%d",a[i]);
for(i=1;i<=9;i++)
if(*p<a[i]) *p=a[i];

temp=*q;*q=*p;*p=*q;
for(i=0;i<=9;i++)
printf("%d",a[i]);
}

输入10个整数,将其中最大的数与第一个数交换。
初学不懂。。

p=a[0];q=a[0];
这是错误的,不能将数值赋值给指针
可以使用p=a;q=a
来将数组首地址赋给指针。
main()
{int a[10],i;
for(i=1;i<=10;i++)
scanf("%d",a[i]);
for(i=1;i<=9;i++)
if(a[0]<a[i]) a[0]=a[i];

for(i=0;i<=10;i++)
printf("%d",a[i]);
}

你试一下吧,我这没有TC环境,没法调试,不知道有没有错误。

第一行没有错

p=a[0];q=a[0];
这是错误的,不能将数值赋值给指针
scanf("%d",a[i]);
a[i]处应该为地址既改为a+i

第一行…引号改成单书名号<>