输入5个数,找最小值;输入10个数,排序

如题,两个小问题不会解
输入5个数,找最小值;输入10个数,排序
麻烦写完整图片/流程

代码加流程图我可以
第一题:

#include <stdio.h>

int main()
{
    int num[5], i, min;

    printf("请输入5个数:\n");
    for(i = 0; i < 5; i++)
    {
        scanf("%d", &num[i]);
    }

    min = num[0];
    for(i = 1; i < 5; i++)
    {
        if(num[i] < min)
        {
            min = num[i];
        }
    }

    printf("最小值为:%d\n", min);

    return 0;
}


第二题:

#include <stdio.h>

int main()
{
    int arr[10];
    int i, j, temp;
    printf("请输入10个整数:\n");
    for(i = 0; i < 10; i++)
    {
        scanf("%d", &arr[i]);
    }
    for(i = 0; i < 9; i++)
    {
        for(j = 0; j < 9 - i; j++)
        {
            if(arr[j] > arr[j + 1])
            {
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
    printf("排序后的数组为:\n");
    for(i = 0; i < 10; i++)
    {
        printf("%d ", arr[i]);
    }
    printf("\n");
    return 0;
}


  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7534368
  • 除此之外, 这篇博客: 要求:从键盘输入10个整数存入一个数组中,用函数编程将其中的最大数与最小数位置互换,然后输出互换后的数组。中的 要求:从键盘输入10个整数存入一个数组中,用函数编程将其中的最大数与最小数位置互换,然后输出互换后的数组。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

  • 函数原型:void MaxMinExchang(int a[], int n);

    输入提示信息:“Input 10 numbers:”
    输入格式:"%d"
    输出提示信息:“Exchang results:”
    输出格式:"%4d"

    程序运行结果示例:
    Input 10 numbers:8 2 7 4 9 11 5 47 6 97↙
    Exchang results: 8 97 7 4 9 11 5 47 6 2

    第一次这么认真地做学校C语言习题。虽然写的代码又臭又长,而且没有按照要求的函数原型来写……(标准答案在最后面)

    #include <stdio.h>
    #include <stdlib.h>
    void Input(int a[],int n);
    int Findmax(int a[],int n);
    int Findmin(int a[],int n);
    void Exchange(int x[], int n, int a,int b);
    void Output(int a[],int n);
    
    int main()
    {
        printf("Input 10 numbers:");
        int num[10];
        int max,min;
        Input(num,10);
        max=Findmax(num,10);
        min=Findmin(num,10);
        printf("%d,%d",max,min);
        Exchange(num,10,max,min);
        printf("Exchang results:");
        Output(num,10);
        return 0;
    }
    
    void Input(int a[],int n)
    {
        int i;
        for(i=0;i<n;i++)
        {
            scanf("%d",&a[i]);
        }
        return 0;
    }
    
    int Findmax(int a[],int n)
    {
        int i,findmax=a[0];
        for(i=1;i<n;i++)
        {
            if(findmax<a[i])
                findmax=a[i];
        }
        return findmax;
    }
    
    int Findmin(int a[],int n)
    {
        int i,findmin=a[0];
        for(i=1;i<n;i++)
        {
            if(findmin>a[i])
                findmin=a[i];
        }
        return findmin;
    }
    
    void Exchange(int x[], int n, int a,int b)
    {
        int i;
    printf("%d,%d\n",a,b);
        for(i=0;i<10;i++)
        {
    
            if(x[i]==a)
                x[i]=b;
            else if(x[i]==b)
                x[i]=a;
            else
                x[i]=x[i];
        }
    
    }
    
    void Output(int a[],int n)
    {
        int i;
        for(i=0;i<n;i++)
        {
            printf("%4d",a[i]);
        }
        return 0;
    }
    
    

    然后是标准答案:

    #include <stdio.h>
    void MaxMinExchang(int a[], int n);
    int FindMaxPos(int s[], int n);
    int FindMinPos(int s[], int n);
    int main()
    {  	   	  	
        int i, a[10];
        printf("Input 10 numbers:"); 
        for (i = 0; i < 10; i++) 
        {  	   	  	
            scanf("%d", &a[i]);
        }
        MaxMinExchang(a, 10);//1
        printf("Exchang results:");
        for (i = 0; i < 10; i++)
        {  	   	  	
            printf("%4d", a[i]);//1
        }
        printf("\n");
        return 0;
    }  	   	  	
    /* 函数功能:将数组中的最大数与最小数位置互换 */
    void MaxMinExchang(int a[], int n)
    {  	   	  	
        int  maxPos, minPos, temp; 
        maxPos = FindMaxPos(a, n);//1
        minPos = FindMinPos(a, n);//1
        temp = a[maxPos];
        a[maxPos] = a[minPos];//1
        a[minPos] = temp; 
    }  	   	  	
    /* 函数功能:计算数组中的最大值在数组中的下标位置 */
    int FindMaxPos(int s[], int n)//1
    {  	   	  	
        int maxPos = 0, max = s[0], i; 
        for (i = 1; i < n; i++) 
        {  	   	  	
            if (s[i] > max) //1
            {  	   	  	
                max = s[i]; 
                maxPos = i;
            }
        }
        return maxPos;
    }  	   	  	
    /* 函数功能:计算数组中的最小值在数组中的下标位置 */
    int FindMinPos(int s[], int n)//1
    {  	   	  	
        int minPos = 0, min = s[0], i; 
        for (i = 1; i < n; i++) 
        {  	   	  	
            if (s[i] < min)//1
            {  	   	  	
                min = s[i];
                minPos = i;
            }
        }
        return minPos;
    }  	   	  	
    

    同学们还是要认真对待每一门课程,不要像我一样偷懒!呜呜呜呜呜。

可以使用嵌套循环来遍历输入的所有数并比较它们的大小。
思路:

在程序中,首先定义 3 个变量,分别用来存储每个数的输入、最小值和循环计数器。然后使用 printf() 函数提示用户输入 5 个数的值,使用 for 循环接收输入,并将每个数的值存储在 num 数组中。

接着使用两个嵌套的 for 循环来遍历 num 数组中的所有数,并比较它们的大小,找出最小值。外层循环 i 从 0 开始,逐个遍历 num 数组中的每个数;内层循环 j 从 i+1 开始,逐个遍历 num 数组中剩余的数。使用 if 语句比较当前数和 min_num,如果找到了更小的数,就更新 min_num 的值。

最后使用 printf() 函数输出最小值,即可完成程序的编写。
以下是用 C 语言实现输入 5 个数并找出最小值的代码:

#include <stdio.h>

int main() {
    int i, j;
    float num[5], min_num;

    // 输入5个数
    printf("请输入5个数:\n");
    for (i = 0; i < 5; i++) {
        printf("请输入第%d个数:", i+1);
        scanf("%f", &num[i]);
    }

    // 找出最小值
    min_num = num[0];
    for (i = 0; i < 5; i++) {
        for (j = i+1; j < 5; j++) {
            if (num[j] < min_num) {
                min_num = num[j];
            }
        }
    }

    printf("最小值是:%f", min_num);

    return 0;
}