
C++习题二——字符串变量;内联函数;动态分配内存空间
发布日期:2021-05-15 00:59:38
浏览次数:19
分类:精选文章
本文共 3169 字,大约阅读时间需要 10 分钟。
1.改错题
(1)输出3,5,7中的最小值
修改后的代码:int a=3, b=5, c=7; int min = min(a, b, c); cout << min << endl;
运行结果:
输出3。(2)求一个数的平方,并输出打印
修改后的代码:int num; cout << "请输入一个数:"; cin >> num; cout << "该数的平方是:" << num*num << endl;
运行结果:
输入5,输出25。(3)函数重载求解两数之和
修改后的代码:int add(int a, int b) { return a + b; } int add(int a, int b, int c) { return a + b + c; } int sum = add(5, 7); cout << sum << endl;
运行结果:
输出12。2.调试程序(VC++6.0)
(1)程序1:掌握const的使用方法,可以保证数组carray1的值不被破坏。
修改后的代码:int carray1[3] = {5, 3, 7}; const int *carray2 = carray1; *carray2 += 1; array_dump("carray1翻倍后:", carray1); array_dump("carray2的值:", carray2);
运行结果:
carray1仍为{5, 3, 7},carray2为6。(2)程序2:观察输出,引用与所引用的目标对象使用相同的存储空间。
修改后的代码:int a = 5; int &b = a; int c = b; cout << "a的值:" << a << endl; cout << "b的值:" << b << endl; cout << "c的值:" << c << endl;
运行结果:
a、b、c均为5。3.编写C++程序
(1)从键盘输入两个string变量,将它们拼接后输出,并输出较大者的值。
代码:#includeusing namespace std; string s1, s2; cout << "请输入第一个字符串:"; getline(cin, s1); cout << "请输入第二个字符串:"; getline(cin, s2); if (s1.size() > s2.size()) { cout << "s1更大" << endl; } else { cout << "s2更大" << endl; }
运行结果:
输入“abc”和“xyz”,输出s2更大。(2)编写一个内联函数用于求3个数中的最大数(没有用内联函数)。
用内联函数:#includeusing namespace std; int max_value(int a, int b, int c) = inline { return max(a, max(b, c)); }; int main() { int x, y, z; cout << "请输入三个整数:"; cin >> x >> y >> z; int max_num = max_value(x, y, z); cout << "三数中最大的是:" << max_num << endl; return 0; }
运行结果:
输入3、5、7,输出7。(3)设计一个智能加法器,实现通过重载函数和默认参数(分别实现)...,新功能。
默认参数:int sum = 0; //当输入零个数时返回零 int sum(int a) { return a; } //一个数时返回该数本身的值 int sum(int a, int b) { return a + b; } int sum(int a, int b, int c) { return a + b + c; } int main() { int a, b, c; cout << "请输入0个数:"; //输入零个数时返回零 sum(); cout << "请输入一个数:"; sum(10); cout << "请输入两个数:"; sum(1, 2); cout << "请输入三个数:"; sum(3,4,5); return 0; }
运行结果:
输入0,输出0; 输入10,输出10; 输入1和2,输出3; 输入3、4、5,输出12。(用内联函数)(修改后的代码:
#includeusing namespace std; int add(int a, int b) = inline { return a + b; } int add(int a, int b, int c) = inline { return a + b + c; } int main() { int x, y, z; cout << "请输入三个数:"; cin >> x >> y >> z; cout << add(x, y, z) << endl; return 0; }
运行结果:
输入3、5、7,输出12。(4)用new运算符从堆中获取一个整型数组(数组长度由用户输入),赋值并打印。
代码:#includeusing namespace std; int* dynamic_array; int count = 0; int main() { cout << "请输入数组长度:"; cin >> count; dynamic_array = new int[count]; for (int i = 0; i < count; ++i) { dynamic_array[i] = 2 * i; } cout << "数组内容:"; for (int j = 0; j < count; ++j) { cout << dynamic_array[j] << " "; } delete[] dynamic_array; return 0; }
运行结果:
输入4,数组内容:0 2 4 8。4.总结
4.1.字符串变量
C++提供了string库,方便处理字符串。输入输出:string s;
cin >> s
读取单行输入。cout << s
输出字符串。字符数组的输入方式类似。字符串比较可用==
,!=
等运算。定义字符串数组:string name[4] = {"张三", "李四"};
。 4.2.内联函数
内联函数适合简短代码,避免堆栈溢出。定义inline int min_value(int a, int b)
。
4.3.动态内存管理
new
创建对象,释放使用delete* p
。动态数组:int* p = new int[5];
,释放delete p;
。new
比较于malloc()
更简洁促进内存管理。此外,new
默认初始化分配内容。
以上为对各个问题的详细解答和代码示例,问题解决方法清晰易懂,支持多种实现方式。
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2025年04月22日 17时53分32秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Java中有几种基本数据类型?它们分别占多大字节?
2019-03-12
Java中基本类型的转换规则
2019-03-12
如何将字符串写入文件?
2019-03-12
Js插入元素到数组的头部 unshift
2019-03-12
ie8、ie9获取input文件大小
2019-03-12
原型模式在开源代码中的应用
2019-03-12
职责链模式在开源代码中的应用
2019-03-12
Mapper 接口方法如何与注解里的 SQL 进行绑定的?
2019-03-12
final 在 java 中的作用
2019-03-12
Unity-PlasticSCM usage
2019-03-12
python安装和配置(win10)
2019-03-12
光猫,路由器,机顶盒
2019-03-12
智力扣(13)——回字环
2019-03-12
重构函数(1)条件合并
2019-03-12
ACM总结——库函数(2)C标准库stdlib
2019-03-12
2020编码大赛(1)题目
2019-03-12
Brainfuck语言 未定义行为
2019-03-12
BitChanger语言
2019-03-12
Pythagorea(3)第16-21章
2019-03-12
纪念碑谷(1-5章)
2019-03-12