用C语言写题目之“ 一维数组最小值及下标”

  • Post author:
  • Post category:其他




正确代码奉上

#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 版权协议,转载请附上原文出处链接和本声明。