编写C语言程序,输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
(2)输出数组时每个元素占8个宽度,每行5个;
#include <stdio.h>
main()
{
int a[10],i,max,maxp,min,minp,t;
printf("请输入数组");
for(i=0;i<1;i++)
scanf("%d",&a[i];
max=min=a[0];
maxp=minp=0;
for(i=1;i<10;i++)
{
if(a[i]>max)
{
max=a[i];
maxp=i;
}
if(a[i]<min)
{
min=a[i];
minp=i;
}
t=a[0];
a[0]=a[maxp];
a[maxp]=t;
t=a[9];
a[9]=a[minp];
a[minp]=t;
请将后面的补充完整,谢谢啦。 展开
#include <stdio.h>
main()
{
int a[10],i,max,maxp,min,minp,t;
printf("请输入数组");
for(i=0;i<10;i++)//是10不是1
scanf("%d",&a[i]);//这里丢了个括号
max=min=a[0];
maxp=minp=0;
for(i=1;i<10;i++)
{
if(a[i]>max)
{
max=a[i];
maxp=i;
}
if(a[i]<min)
{
min=a[i];
minp=i;
}
}//for循环应到这为止
if(minp!=0)//注意要加这个条件 防止最小值是第一个时交换 出错
{
t=a[0];
a[0]=a[maxp];
a[maxp]=t;
t=a[9];
a[9]=a[minp];
a[minp]=t;
}
else
{
t=a[0];
a[0]=a[maxp];
a[maxp]=t;
t=a[9];
a[9]=a[maxp];
a[maxp]=t;
}
for(i=0;i<10;i++)
{
if(i!=4)
printf("%8d",a[i]);
else printf("%8d\n",a[i]);
}
printf("\n");
}
没问题了 已改正
可能出错的情况都测试了 这样就可以同时找最大值最小值了
你的实现有问题,大小值位置必须分开找,找完之后交换,再找
#include<stdio.h>
int main(void)
{
int a[10],i,max,maxp,min,minp,t;
printf("请输入数组:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
minp=0;
for(i=1;i<10;i++)
{
if(a[i]<a[minp])
minp=i;
}
t=a[9];
a[9]=a[minp];
a[minp]=t;
maxp=0;
for(i=1;i<10;i++)
{
if(a[i]>a[maxp])
maxp=i;
}
t=a[0];
a[0]=a[maxp];
a[maxp]=t;
printf("输出:\n");
for(i=0;i<10;i++)
{
printf("%8d",a[i]);
if((i+1)%5==0)
printf("\n");
}
return 0;
}