标题:为什么我的代码max函数没有发挥作用
只看楼主
暴君Dentiny
Rank: 2
等 级:论坛游民
帖 子:132
专家分:43
注 册:2019-5-6
结帖率:89.47%
已结贴  问题点数:10 回复次数:6 
为什么我的代码max函数没有发挥作用
代码如下
#include<stdio.h>
//问题:输入十个整数,调用一个函数按大小顺序排序排列
int main()
{
    int max(int max1[10]);
    int max2[10],w,z;
    printf("请输入10个整数");
    for (w = 0; w < 9; w++)
    {
        scanf_s("%d", &max2[w]);
    }
    max2[9] = max(max2);
    for(z=0;z<9;z++)
    printf("%d", max2[z]);
    return 0;
}
int max(int max1[10])
{
    int i, n = max1[0],x[10],y;
    for (i = 1; i < 10; i++)
    {
        n = n > max1[i] ? n : max1[i];
        for (y = 0; y < 9; y++)
        {
            x[y] = n;
        }
    }
    return(x[y]);
}
不知道哪错了,求大神帮帮忙
搜索更多相关主题的帖子: 代码 max 函数 int for 
2019-08-08 18:40
TysonKoothra
Rank: 5Rank: 5
等 级:职业侠客
威 望:7
帖 子:71
专家分:374
注 册:2018-10-21
得分:5 
我有两个问题,既然是排序的问题,函数名为什么是 max,而不是 sort。
第二个问题,max 函数在实现什么功能?它只会返回数组的最大值。
排序的话,用选择排序,可以这样写。
程序代码:
void sort(int *arr) {
    int i, j;
    for (i = 0; i < 9; i++) {
        for(j = i+1; j<10; j++) {
            if(arr[i] < arr[j]) {
                int tmp = arr[i];
                arr[i]=arr[j];
                arr[j]=tmp;
            }
        }
    }
}


[此贴子已经被作者于2019-8-8 19:50编辑过]

2019-08-08 19:49
暴君Dentiny
Rank: 2
等 级:论坛游民
帖 子:132
专家分:43
注 册:2019-5-6
得分:0 
回复 2楼 TysonKoothra
max和sort有什么区别吗,函数名字不同而已,还有在max函数中第二个循环已经将小的数赋值到n,n在这个循环中将值赋值到x 【y】中,感觉中间没什么问题啊

技术至上,学无止境
2019-08-08 23:51
TysonKoothra
Rank: 5Rank: 5
等 级:职业侠客
威 望:7
帖 子:71
专家分:374
注 册:2018-10-21
得分:0 
我仔细看了下,发现你的程序有好几个问题。
程序代码:
#include<stdio.h>
//问题:输入十个整数,调用一个函数按大小顺序排序排列
int main()
{
    int max(int max1[10]);
    int max2[10],w,z;
    printf("请输入10个整数");
    for (w = 0; w < 9; w++) // 这里应该是 w < 10,否则只输入了九个整数。
    {
        scanf_s("%d", &max2[w]);
    }
    max2[9] = max(max2); // 
    for(z=0;z<9;z++) // 这里应该是 z < 10,否则只打印了九个整数。
    printf("%d", max2[z]);
    return 0;
}
int max(int max1[10])
{
    int i, n = max1[0],x[10],y;
    for (i = 1; i < 10; i++)
    {
        n = n > max1[i] ? n : max1[i];
        for (y = 0; y < 9; y++)
        {
            x[y] = n; // 这里最大的 y是8
        }
    }
    return(x[y]); // 这里返回x[9], 之前没有能操作到 x[9]的操作。
}
2019-08-09 17:00
H_M
Rank: 2
等 级:论坛游民
威 望:1
帖 子:23
专家分:60
注 册:2019-2-7
得分:5 
回复 楼主 暴君Dentiny
你的代码问题很多,楼上指出了几个,我再这里补充一下。
1.用函数传递数只有两个方法,即传值和传址。这里所传递的是数组,最好使用传址,我想不到如何使用传值的方法来实现功能。因此函数声明应该这样诸如此类的:void max(int *max1);
2.你的功能函数中并不能实现想要的功能,你写的代码只能找到在当前这个数后面的最大的数,所以可能出现这种情况:83 83 83 68 68 68 68 48 48 10
3.帮人帮到底,我修改了,不止一种实现方法,我这里使用了冒泡排序法代码如下,:
程序代码:
#include<stdio.h>
//问题:输入十个整数,调用一个函数按大小顺序排序排列
int main()
{
    void max(int max1[10]);
    
    int max2[10],w,z;
    
    printf("请输入10个整数");
    for (w = 0; w < 10; w++)
    {
        scanf("%d", &max2[w]);
    }
    max(max2);
    for(z=0;z<10;z++)
        printf("%d ", max2[z]);
    return 0;
}
void max(int *max1)
{
    int i, n = max1[0],t,y;
    
    for(y = 0 ; y<10 ; y++)
    {
        for (i = y+1; i < 10; i++)
        {
            if (max1[y]<max1[i])
            {
                t = max1[i];
                max1[i] = max1[y];
                max1[y] = t;
            }
        }
    }    
}



无思路要敲代码,无思路不敲代码
2019-08-09 18:45
暴君Dentiny
Rank: 2
等 级:论坛游民
帖 子:132
专家分:43
注 册:2019-5-6
得分:0 
回复 5楼 H_M
谢谢了,感激不尽

技术至上,学无止境
2019-08-10 19:06
Iml梁
Rank: 2
等 级:论坛游民
帖 子:18
专家分:19
注 册:2019-8-13
得分:0 
n = n > max1[i] ? n : max1[i];
你的这个算法肯定是错的,你可以尝试每次循环输出一下N是什么。
2019-08-13 11:33



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-496288-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.099413 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved