C++之Max

背景

想学习数据结构,这是看的课程的习题,讲课老师用的是类C语言,具体的实现还是得自己来。

准备工作

  1. 开发工具Microsoft Visual Studio(VS) 建立一个空白的C++控制台项目

  2. 选择项目的存储路径

  3. 成功建立

我在 Microsoft Visual Studio中用C++写的第一个代码

具体代码

cpp 复制代码
#include <iostream>
#define N 10
void Output(int* a);
void Input(int* a);
int Max(int a[]);
int getRandom(int min, int max);
void getRandom(int b[]);
​
// 用数组做函数的参数,求10个整数的最大数
/*
    1. 先定义一个包含10个整数的数组
        1.1 写死(不灵活)
        1.2 可自行输入(手输,累,还容易输成其他类型的数据【需要对输入的数据类型进行卡控】)
        1.3 自动生成数据(棒,写代码累,但只需要写一次,可用千千万万次)
    2. 比较10个整数,输出最大的那个
*/
​
int main()
{
    int a[10];
    getRandom(a); //Input(a);
    Output(a);
    int m = Max(a);
    std::cout << "the Max number is :" << m;
}
​
​
/// <summary>
/// 為數組a賦初值
/// </summary>
/// <param name="a"></param>
void getRandom(int b[]) {
    for (int i = 0; i < N; i++)
        b[i] = getRandom(0, 100);
}
​
/// <summary>
/// 獲取隨機數
/// </summary>
/// <param name="min"></param>
/// <param name="max"></param>
/// <returns></returns>
int getRandom(int min, int max) {
    return (rand() % (max - min + 1) + min);
}
​
​
void Input(int* b) {
    for (int i = 0; i < N; i++)
        std::cin >> b[i];
}
​
int Max(int b[])
{
    int m = 0;
    for (int i = 0; i < N - 1; i++)
        if (b[i+1] > m) 
            m = b[i + 1];
    //for (int i = 1; i < N ; i++)
    //  if (b[i] > m)
    //      m = b[i];
    return m;
}
​
void Output(int* b) {
    for (int i = 0; i < N; i++)
        std::cout << b[i] << "\t";
    std::cout << "\n";
}

VS快捷键

复制代码
Ctrl+K+C =>// 屏蔽语句
​
Ctrl+K+U =>// 取消屏蔽

遇到的问题

  • 代码运行不起来

    • 函数在有调用的情况下,比如Input(a); 没有写函数声明

      ,导致系统运行不起来

    • 快捷生成函数声明=>选中点击右键=>

  • 输出报错=>调试错误 由于函数的调用约定造成的错误

    • 报错语句=>std::cout << "the Maxium number is :" + Max(a);

    • 报错内容=>ot properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.调试错误 由于函数的调用约定造成的错误

    • 报错原因=>看了下老师的类C语句,发现我的输出语句用的+,之前C#写习惯了,添加输出变量,直接加在后面,**+改成<<**就好

    • 调试错误 由于函数的调用约定造成的错误 - 乘舟凉 - 博客园 (cnblogs.com)=>虽然好像对我这个报错没啥用

  • 生成随机数

    • C++产生随机数的几种方法_c++随机数生成-CSDN博客=>**return (rand() % (max - min + 1) + min);**生成的随机数有点固定,第一次的数字永远是那几个,但如果是在循环里的话,基本会不一样,但要是每次重开程式,数据基本是固定的,不算真正的随机

    • 用了文中其他的随机函数,需头部添加#include <random>

      cpp 复制代码
      std::random_device rd;
      std::default_random_engine eng(rd());
      std::uniform_int_distribution<size_t> dis(0, 100);
      int res = dis(eng);
      return res; 

      我的输出最大值居然不对了!!!==>乌龙了,我的找最大数的函数写错了,比较的是bi+1>bi==>改成bi+1>m就可

记录要点

  • 数组是基于指针实现的;
  • 数组名代表首元素的地址,指针可以存储地址;
  • 访问首地址a0;*a;*(a+0);
  • 参数(int * b)和(int b\[\])都可以传入数组
  • malloc 创造动态数组,开辟失败则返回空指针
相关推荐
rit84324999 分钟前
MATLAB近红外光谱预处理:平滑与求导(MSV方法)
数据结构·算法·matlab
蚂蚁数据AntData14 分钟前
从ChatBI到业务记忆:重新定义数据智能的生产力边界
大数据·网络·数据库·人工智能·算法
_日拱一卒15 分钟前
LeetCode:22括号生成
算法·leetcode·职场和发展
cfm_291416 分钟前
JVM垃圾收集算法与收集器深度解析
jvm·测试工具·算法·性能优化
触底反弹23 分钟前
从 JS 引擎执行原理理解数据类型:栈内存、堆内存与作用域
javascript·数据结构·面试
郝学胜_神的一滴25 分钟前
干货版《算法导论》09:让哈希表稳如泰山的终极解法
数据结构·算法
CC数学建模31 分钟前
2026年第十六届APMCM 亚太地区大学生数学建模竞赛(中文赛项)赛题C题:创业社区规划与资源配置优化问题完整思路、代码、模型、文章,全网首发高质量分享!
python·算法·数学建模
徐小夕33 分钟前
我们放弃了单Agent方案:HiCAD 3.0 用 Harness 做多Agent编排,把3D建模的准确率提升了30%
前端·算法·github
洛水水37 分钟前
【力扣100题】88.多数元素
数据结构·算法·leetcode
Shan120543 分钟前
无向图的Hierholzer算法流程(一)
算法