2301_77350355 2023-04-06 15:27 采纳率: 50%
浏览 54
已结题

在vc++2010里用c语言编写一个函数,在一维数组中找到最大值和最小值及其下标并且顺序输出数组,一维数组由用户输入

要用函数写,有没有学长指导一下一把
在vc++2010里用c语言编写一个函数,在一维数组中找到最大值和最小值及其下标并且顺序输出数组,一维数组由用户输入

img

  • 写回答

2条回答 默认 最新

  • Dummer25 2023-04-06 15:33
    关注

    测试运行没问题

    #include <stdio.h>
    
    void find_max_min(double* numbers, int length, double* max_value, int* max_index, double* min_value, int* min_index);
    
    int main() {
        double numbers[10];
        int i;
    
        // 提示用户输入浮点数
        printf("请输入10个浮点数:\n");
        for (i = 0; i < 10; i++) {
            printf("请输入第%d个数:", i+1);
            scanf("%lf", &numbers[i]);
        }
    
        double max_value, min_value;
        int max_index, min_index;
    
        // 查找最大值和最小值及其下标
        find_max_min(numbers, 10, &max_value, &max_index, &min_value, &min_index);
    
        // 输出结果
        printf("排序后的数组为:");
        for (i = 0; i < 10; i++) {
            printf("%.3lf ", numbers[i]);
        }
        printf("\n最大值为:%.3lf,下标为:%d\n", max_value, max_index);
        printf("最小值为:%.3lf,下标为:%d\n", min_value, min_index);
    
        return 0;
    }
    
    void find_max_min(double* numbers, int length, double* max_value, int* max_index, double* min_value, int* min_index) {
        int i;
        *max_index = 0;
        *min_index = 0;
        *max_value = numbers[0];
        *min_value = numbers[0];
    
        for (i = 1; i < length; i++) {
            if (numbers[i] > *max_value) {
                *max_index = i;
                *max_value = numbers[i];
            }
            if (numbers[i] < *min_value) {
                *min_index = i;
                *min_value = numbers[i];
            }
        }
    }
    

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    1人已打赏
    2301_77350355 2023-04-06 15:37

    #include <stdio.h> int max,min,x,y,n; void fun(int a[100]) { int i,j,t; for(i=0;i<n;i++) { max=a[0]; min=a[0]; if(max<a[i]) { max=a[i]; x=i; } if(min>a[i]) { min=a[i]; y=i; } else { i++; } } for(i=0;i<n-1;i++) { for(j=0;j<n-1;j++) { if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } } void main() { int b[100],k; scanf("%d",&n); for(k=0;k<n;k++) { scanf("%d",&b[k]); } fun(b); printf("max=%d 下标为:%d\nmin=%d 下标为:%d\n",max,x,min,y); for(k=0;k<n;k++) { printf("%d ",b[k]); } }

    回复
    2301_77350355 2023-04-06 15:37

    能不能帮我看看我的代码哪里出问题了吗?

    回复
    Dummer25 回复 2301_77350355 2023-04-06 15:40

    你的代码中存在几个问题:

    max 和 min 变量在每次循环中被初始化为 a[0],这样就无法正确地找到最大值和最小值。

    在找到最小值时,应该是 if(min>a[i]) 而不是 if(min>a[i]) else { i++; }。因为这样会导致当前位置的数值被跳过,从而无法正确寻找最小值和对应下标。

    在排序时,应该是 for(i=0;i<n-1;i++) 而不是 for(i=0;i<n;i++)。因为排序需要比较相邻两个元素的大小,所以排序的外层循环只需要循环 n-1 次即可。

    下面是修改后的代码:

    
    #include <stdio.h> 
    
    int max, min, x, y, n; 
    
    void fun(int a[100]) {
        int i, j, t;
        max = a[0];
        min = a[0];
        for(i = 0; i < n; i++) {
            if(max < a[i]) {
                max = a[i];
                x = i;
            }
            if(min > a[i]) {
                min = a[i];
                y = i;
            }
        }
        for(i = 0; i < n - 1; i++) {
            for(j = 0; j < n - 1; j++) {
                if(a[j] > a[j+1]) {
                    t = a[j];
                    a[j] = a[j+1];
                    a[j+1] = t;
                }
            }
        }
    }
    
    int main() {
        int b[100], k;
        scanf("%d", &n);
        for(k = 0; k < n; k++) {
            scanf("%d", &b[k]);
        }
        fun(b);
        printf("max=%d 下标为:%d\nmin=%d 下标为:%d\n", max, x, min, y);
        for(k = 0; k < n; k++) {
            printf("%d ", b[k]);
        }
        return 0;
    }
    
    

    1
    回复
    展开全部8条评论
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 4月13日
  • 已采纳回答 4月6日
  • 修改了问题 4月6日
  • 创建了问题 4月6日

悬赏问题

  • ¥15 PADS Logic 原理图
  • ¥15 PADS Logic 图标
  • ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
  • ¥20 气象站点数据求取中~
  • ¥15 如何获取APP内弹出的网址链接
  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部