这个C语言程序我有点看不懂

来源:百度知道 编辑:UC知道 时间:2024/06/09 15:57:12
输入一个正整数n,再输入n个正整数,先输出最大值及其下标,再将最大值与最后一个数交换,并输出交换后的n个数。
#include<stdio.h>
int main(void)
{
int i,n,index,a[100];
printf("Enter n:");
scanf("%d",&n);
printf("Enter %d integers:",n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
index=0;
for(i=1;i<n;i++){
if(a[i]>a[index])
index=i;
}
printf("max is %d\n tsub is %d\n",a[index],index);
index=i;
for(i=0;i<n;i++)
printf("%d",a[i]);
return 0;

}

后面这部分是什么意思
index=i;
for(i=0;i<n;i++)
printf("%d",a[i]);
return 0;

}
怎么就将最大值与最后一个数交换了呢?

index=i;
for(i=0;i<n;i++)
printf("%d",a[i]);
return 0;
这一段是把交换后的有数组输出到屏幕上来
index=0;
for(i=1;i<n;i++){
if(a[i]>a[index])
index=i;

这就是把最大值交换了,进行这个循环,就把数组进行从小到大的排序

没有交换,

for(i=0;i<n;i++)printf("%d",a[i]);
是正常的遍历所有a[i],而且a[i]从未被改变值.

我再用编译器验证了一下,输入 1 3 2,输出仍然是1 3 2而非1 2 3

这是一个找最大值的程序,程序先输入要在多少个数中找的个数,再输入那么多个的整数,然后就就在这些数中一个一个地找,找到比当前数大的就把它的下标记下来,最后输出最大值、它的下标和刚才输入的那些数
#include<stdio.h>
int main(void)
{
int i,n,index,a[100];
printf("Enter n:");
scanf("%d",&n);
printf("Enter %d integers:",n); //输入 要输入整数的个数
for (i=0;i<n;i++) // 输入整数
scanf("%d",&a[i]);
index=0;
for (i=1;i<n;i++) // 找出最大的数
{
if (a[i]>a[index])
index=i; // 把最大数的下标记下来
}
printf("m