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变量,将它们拼接后输出,并输出较大者的值。

代码:

#include 
using 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个数中的最大数(没有用内联函数)。

用内联函数:

#include 
using 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。

(用内联函数)(修改后的代码

#include 
using 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运算符从堆中获取一个整型数组(数组长度由用户输入),赋值并打印。

代码:

#include 
using 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默认初始化分配内容。


以上为对各个问题的详细解答和代码示例,问题解决方法清晰易懂,支持多种实现方式。

上一篇:实验2 ARP协议分析
下一篇:学校电脑疑似被黑

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2025年04月22日 17时53分32秒