正确代码奉上
#include<stdio.h>
#include<math.h>
int main()
{
int a[5];
int i,min,weizhi,t;//min用来做最小数,weizhi就是最小数的下标
for(i=0;i<5;i++)//输入五个数
scanf("%d",&a[i]);
min=a[0];//令最小数为数组首位
for(i=0;i<5;i++)//寻找最小数和最小数的位置,并进行替换
{
if(a[i]<min)
{
min=a[i];//替换
weizhi=i;//替换
}
}
t=a[0];//根据题目要求和数组中最前面的元素换位置
a[0]=a[weizhi];
a[weizhi]=t;
for(i=0;i<5;i++)
printf("%4d",a[i]);
printf("\nmin=%d,weizhi=%d",min,weizhi);
}
题目介绍
有一数组内放5个整数,要求找出第一次出现的最小数和它的下标,然后把它和数组中最前面的元素即第一个数对换位置。
输入格式:
在一行中输入5个用空格间隔的整数。
输出格式:
在第一行输出变化后的一维数组,每个数占4列列宽,在第二行输出“min=最小值,weizhi=下标”,最小值和下标都是原样输出,没有列宽控制。
输入样例:
输出样例:
本题思路
学生认为这道题可以分为两块来写代码
第一块是题目中的
找出第一次出现的最小数和它的下标
这就需要使用循环加if判断语句来实现
第二块就是题目中的
然后把它和数组中最前面的元素即第一个数对换位置
这个就需要再定义一个新的变量**//代码中我用的是t**,用来交换元素。
其他在代码块中都有注释,希望可以帮助大家理解。
补充
本题目输出printf是右对齐;在前面加-,是左对齐
而%和d中间的数字表示数字宽度
ending
若有不懂的地方,可以在评论区留言,我看到会回复的呦。
文章若有解释不对的地方,还望大佬指出,我会立刻修正。
版权声明:本文为Especial_fierce原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。