输入一个正整数n(1 <n≤10),再输入n 个整数,将最小值与第一个数交换,最大值与最后一个数交换,然后输出

供稿:hz-xin.com     日期:2024-05-22
输入一个正整数n(1<n≤10),再输入n个整数,将最小值与第一个数交换,最大值与最后一个数交换。

可以参考下面的代码:
#include
void main()
{
int i,j=0,k=0,t,n,min,max,a[10];
printf("输入整百数度的个数: ");
scanf("%d",&n);
printf("输入%d个整数: ",n);
scanf("%d",&a[0]);
max=a[0];min=a[0];
for(i=1;i<n;i++)
{
scanf("%d",&a[i]);
if(max<a[i]) {max=a[i];j=i;}
if(min>a[i]) {min=a[i];k=i;}
}
t=a[k];a[k]=a[0];a[0]=t;
t=a[j];a[j]=a[n-1];a[n-1]=t;
printf("交换顺序后内输出: ");
for(i=0;i<n;i++)
printf("%d ",a[i]);
}

扩展资料:
1、printf()函数
printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出
信息。在编写程序时经常会用到此函数。函数的原型为:
int printf(const char *format, ...);
函数返回值为整型。若成功则返回输出的字符数,输出出错则返回负值。
printf()函数的调用格式为:
printf("", );
2、for循环
for循环小括号里第一个“;”号前为一个为不参与循环的单次表达式,其可作为某一变量的初始化赋值语句, 用来给循环控制变量赋初值; 也可用来计算其它与for循环无关但先于循环部分处理的一个表达式。
“;”号之间的条件表达式是一个关系表达式,其为循环的正式开端,当条件表达式成立时执行中间循环体。
参考资料来源:百度百科-for循环
参考资料来源:百度百科-printf()

#include void main(){int i,j=0,k=0,t,n,min,max,a[10];printf("输入整数的个数: ");scanf("%d",&n);printf("输入%d个整数: ",n);scanf("%d",&a[0]);max=a[0];min=a[0];for(i=1;ia[i]) {min=a[i];k=i;}}t=a[k];a[k]=a[0];a[0]=t;t=a[j];a[j]=a[n-1];a[n-1]=t;printf("交换顺序后输出: ");for(i=0;i<n;i++)printf("%d ",a[i]);}运行示例:

#include<stdio.h>

int main(void)

{

int a[10];

int n,i,min,max,t;

printf("Input n: ");

scanf("%d",&n);

printf("Input %d integers: ",n);

for(i=0;i<n;i++)

scanf("%d",&a[i]);

min=max=0;

printf("After swapped: ");

for(i=1;i<n;i++)

{if(a[i]>a[max])max=i;

if(a[i]<a[min])min=i;

}

t=a[min];

a[min]=a[0];

a[0]=t;

if(0==max)max=min;

t=a[max];

a[max]=a[n-1];

a[n-1]=t;

for(i=0;i<n;i++)

printf("%d ",a[i]);

return 0;

}



for(i=0;i<n;i++)
if(a[i]>max)
max=a[i];
a[i]=a[n-1];
a[n-1]=max;
for(i=0;i<n;i++)
if(a[i]<min)
min=a[i];
a[i]=a[0];
a[0]=min;
这里完全错了。你根本就没有找到所有数据中的最大值,你就做了交换,所以,最后的结果就是中间的数据的位置变了。
我给你说说思路吧,你的max与min不应该存储最大值与最小值,应该存储最大值与最小值在数组中的位置,这样的话,整个程序就好看一些了。思路也就清晰了。
max=min=0
for(i=0;i<n;i++)
{
if(a[i]>a[max])
max=i;
if(a[i]<a[min])
min=i;
}
i=a[max];
a[max]=a[n-1];
a[n-1]=i;
i=a[max];
a[max]=a[0];
a[0]=i;