VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 264|回复: 5

[已解决]《实用C++》22课课后习题

[复制链接]
45_avatar_middle
最佳答案
0 
在线会员 发表于 2020-4-13 19:24:39 | 显示全部楼层 |阅读模式
用指针求数组里的最大最小数。

#include<iostream>
using namespace std;
void get_max_min(int src[ ], int* a, int* b)
{
        int i;
        for (i = 0; i <=sizeof(src)/4-1; i++)
        {
                *a = *a > src[i] ? *a : src[i];
                *b = *b < src[i] ? *b : src[i];
        }
}

int main()
{
        int num[ ] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12};
        int max = num[0], min = num[0];
        get_max_min(num, &max, &min);
        cout << "max=" << max << endl;
        cout << "min=" << min << endl;
        return 0;
}
我这里在定义函数中为了控制for循环次数,用了sizeof命令,因为老大说过整型数组的字节数为元素个数*4,可是运行下来我发现不对,多次调试发现他默认sizeof(src)恒等于4,也就是一个int型变量的字节数,然后将sizeof用到main函数中就可以了,这是为啥,求老大解答。下面是改过的程序,这是对的。
void get_max_min(int src[], int* a, int* b,int j)
{
        int i;
        for (i = 0; i <=j; i++)
        {
                *a = *a > src[i] ? *a : src[i];
                *b = *b < src[i] ? *b : src[i];
        }
}

int main()
{

        int num[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12};
        int max = num[0], min = num[0];
        int len = sizeof(num) / 4 - 1;
        get_max_min(num, &max, &min,len);
        cout << "max=" << max << endl;
        cout << "min=" << min << endl;
        return 0;
}


最佳答案
57_avatar_small
2020-4-14 11:34:35
可以看一下该网址,应该对你有帮助:https://www.cnblogs.com/lanhaicode/p/10348877.html




上一篇:计算c++字符串
下一篇:关于类数组的chu'shi'hua
57_avatar_middle
最佳答案
21 
在线会员 发表于 2020-4-14 11:34:35 | 显示全部楼层    本楼为最佳答案   
bestAnswer
可以看一下该网址,应该对你有帮助:https://www.cnblogs.com/lanhaicode/p/10348877.html
51_avatar_middle
最佳答案
80 
online_admins 发表于 2020-4-14 09:20:41 | 显示全部楼层
需要给函数加个参数,传入数组的长度,这样就OK了
45_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-4-14 09:38:16 | 显示全部楼层
Syc 发表于 2020-4-14 09:20
需要给函数加个参数,传入数组的长度,这样就OK了

是的,后来我也是这么改的,不过还是想知道为什么会这样?求解惑。。
45_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-4-14 16:25:23 | 显示全部楼层
JLDawson 发表于 2020-4-14 11:34
可以看一下该网址,应该对你有帮助:https://www.cnblogs.com/lanhaicode/p/10348877.html

懂了懂了,感谢!!!
43_avatar_middle
最佳答案
0 
在线会员 发表于 2020-5-11 18:11:56 | 显示全部楼层
本帖最后由 冯杋 于 2020-5-11 19:29 编辑
Syc 发表于 2020-4-14 09:20
需要给函数加个参数,传入数组的长度,这样就OK了

**代码**{
#include<iostream>
using namespace std;
void get_min_max(int src[], int* max_v, int* min_v)
{
        int size = sizeof(src) / sizeof(int);
int i;
        for (i = 0; i < size; i++)
        {
                if (src >* max_v){
                        *max_v = src;
                }
                else        if (src <* min_v ){
                        *min_v = src;
                }
        }
}


int main(){
       
/*实现一个函数,作用是获取一个数组中的最大值和最小值,函数声明如下:*/
    int src[] = {10,8,16,99,7,88};
    int max = src[0], min = src[0];
        get_min_max(src, &max, &min);
        cout << "max_num= " << max << endl;
        cout << "min_num= " << min << endl;
        getchar();
        return 0;
}Syc-老大在其他函数体中求主函数传入的数组元素个数为什么不行呢?《实用C++》22课课后习题
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-8-12 23:15

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表