2-15 编写一个程序,运行时提示输入一个数字,再把这个数字显示出来。
cpp
#include <iostream>
using namespace std;
int main() {
// 提示用户输入数字
cout << "请输入一个数字: ";
// 用于存储用户输入的数字的变量
double number;
// 从标准输入读取用户输入的数字
cin >> number;
// 显示用户输入的数字
cout << "您输入的数字是: " << number << endl;
return 0;
}
2-16 C++语言有哪几种数据类型?简述其值域。编程显示你使用的计算机中的各种数据类型的字节数。
cpp
#include <iostream>
using namespace std;
int main() {
cout << "整型的大小: " << sizeof(int) << " 字节\n";
cout << "长整型的大小: " << sizeof(long) << " 字节\n";
cout << "短整型的大小: " << sizeof(short) << " 字节\n";
cout << "字符型的大小: " << sizeof(char) << " 字节\n";
cout << "单精度浮点型的大小: " << sizeof(float) << " 字节\n";
cout << "双精度浮点型的大小: " << sizeof(double) << " 字节\n";
cout << "布尔型的大小: " << sizeof(bool) << " 字节\n";
// 根据需要添加更多的数据类型
return 0;
}
2-17 输出ASCⅡ码为32~127的字符。
cpp
#include <iostream>
using namespace std;
int main() {
// 输出ASCII码为32~127的字符
for (int i = 32; i <= 127; ++i) {
cout << char(i) << " ";
}
cout << endl;
return 0;
}
2-25 编写一个完整的程序,实现功能:向用户提问"现在正在下雨吗?",提示用户输入Y或N。若输入为Y,显示"现在正在下雨。";若输入为N,显示"现在没有下雨。";否则继续提问"现在正在下雨吗?"。
cpp
#include <iostream>
#include <string>
int main() {
std::string userInput;
do {
// 提问用户是否正在下雨
std::cout << "现在正在下雨吗?(输入Y或N): ";
std::cin >> userInput;
// 处理用户输入
if (userInput == "Y" || userInput == "y") {
std::cout << "现在正在下雨。\n";
} else if (userInput == "N" || userInput == "n") {
std::cout << "现在没有下雨。\n";
} else {
std::cout << "无效的输入,请输入Y或N。\n";
}
} while (userInput != "Y" && userInput != "y" && userInput != "N" && userInput != "n");
return 0;
}
2-26 编写一个完整的程序,运行时向用户提问"你考试考了多少分?(0~100)",接收输入后判断其等级显示出来。规则如下:
优90≤分数≤100
良80≤分数<90
中60≤分数<80
差0≤分数<60
cpp
#include <iostream>
int main() {
// 提示用户输入分数
std::cout << "你考试考了多少分?(0~100): ";
// 接收用户输入
int score;
std::cin >> score;
// 判断等级并显示结果
if (score >= 90 && score <= 100) {
std::cout << "优\n";
} else if (score >= 80 && score < 90) {
std::cout << "良\n";
} else if (score >= 60 && score < 80) {
std::cout << "中\n";
} else if (score >= 0 && score < 60) {
std::cout << "差\n";
} else {
std::cout << "输入无效,分数应在0~100之间。\n";
}
return 0;
}
2-27 实现一个简单的菜单程序,运行时显示"Menu:A(dd) D(elete) S(ort) Q(uit),Selet one:"提醒用户输入,A表示增加,D表示删除,S表示排序,Q表示退出,输入为A、D、S时分别提示"数据已经增加、删除、排序。"输入为Q时程序结束。
(1)要求使用if...else语句进行判断,用break、continue控制程序流程。
(2)要求使用switch语句。
cpp
//使用if...else
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<string> data; // 用于存储数据的向量
while (true) {
cout << "菜单:A(增加) D(删除) S(排序) Q(退出)\n";
char choice;
cout << "请选择:";
cin >> choice;
if (choice == 'A') {
// 增加数据
string newData;
cout << "输入要增加的数据:";
cin >> newData;
data.push_back(newData);
cout << "数据已经增加。\n";
} else if (choice == 'D') {
// 删除数据
if (data.empty()) {
cout << "没有数据可以删除。\n";
} else {
cout << "原始数据:";
for (size_t i = 0; i < data.size(); ++i) {
cout << data[i] << " ";
}
cout << "\n输入要删除的数据:";
string itemToDelete;
cin >> itemToDelete;
vector<string>::iterator it = find(data.begin(), data.end(), itemToDelete);
if (it != data.end()) {
data.erase(it);
cout << "数据已经删除。\n";
} else {
cout << "未找到数据。\n";
}
}
} else if (choice == 'S') {
// 排序数据
if (data.empty()) {
cout << "没有数据可以排序。\n";
} else {
sort(data.begin(), data.end());
cout << "数据已经排序。\n";
}
} else if (choice == 'Q') {
// 退出程序
cout << "程序正在退出。\n";
break;
} else {
// 处理无效输入
cout << "无效的选择。请键入 A、D、S 或 Q。\n";
continue;
}
// 显示当前数据
cout << "当前数据:";
for (size_t i = 0; i < data.size(); ++i) {
cout << data[i] << " ";
}
cout << "\n\n";
}
return 0;
}
cpp
// 使用switch语句
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<string> data; // 用于存储数据的向量
char choice;
while (true) {
cout << "菜单:A(增加) D(删除) S(排序) Q(退出)\n";
cout << "请选择:";
cin >> choice;
switch (choice) {
case 'A':
case 'a': {
// 增加数据
string newData;
cout << "请输入要增加的数据:";
cin >> newData;
data.push_back(newData);
cout << "数据已经增加。\n";
break;
}
case 'D':
case 'd': {
// 删除数据
if (data.empty()) {
cout << "没有数据可以删除。\n";
} else {
cout << "当前数据:";
for (size_t i = 0; i < data.size(); ++i) {
cout << data[i] << " ";
}
cout << "\n请输入要删除的数据:";
string itemToDelete;
cin >> itemToDelete;
size_t indexToDelete = 0;
bool found = false;
for (size_t i = 0; i < data.size(); ++i) {
if (data[i] == itemToDelete) {
indexToDelete = i;
found = true;
break;
}
}
if (found) {
data.erase(data.begin() + indexToDelete);
cout << "数据已经删除。\n";
} else {
cout << "未找到数据。\n";
}
}
break;
}
case 'S':
case 's': {
// 排序数据
if (data.empty()) {
cout << "没有数据可以排序。\n";
} else {
sort(data.begin(), data.end());
cout << "数据已经排序。\n";
}
break;
}
case 'Q':
case 'q':
// 退出程序
cout << "程序正在退出。\n";
return 0;
default:
// 处理无效输入
cout << "无效的选择,请输入A、D、S或Q。\n";
}
// 显示当前数据
cout << "当前数据:";
for (size_t i = 0; i < data.size(); ++i) {
cout << data[i] << " ";
}
cout << "\n\n";
}
return 0;
}
2-28 用穷举法找出1~100的质数并显示出来。分别使用while、do-while、for循环语句实现。
cpp
// 使用while循环
#include <iostream>
using namespace std;
int main() {
int number = 2;
cout << "1~100之间的质数有:";
while (number <= 100) {
int divisor = 2;
bool isPrime = true;
while (divisor <= number / 2) {
if (number % divisor == 0) {
isPrime = false;
break;
}
divisor++;
}
if (isPrime) {
cout << number << " ";
}
number++;
}
cout << endl;
return 0;
}
cpp
//使用do...while语句
#include <iostream>
using namespace std;
int main() {
int number = 2;
cout << "1~100之间的质数有:";
do {
int divisor = 2;
bool isPrime = true;
do {
if (number % divisor == 0) {
isPrime = false;
break;
}
divisor++;
} while (divisor <= number / 2);
if (isPrime) {
cout << number << " ";
}
number++;
} while (number <= 100);
cout << endl;
return 0;
}
cpp
//使用for循环语句
#include <iostream>
using namespace std;
int main() {
cout << "1~100之间的质数有:";
for (int number = 2; number <= 100; ++number) {
bool isPrime = true;
for (int divisor = 2; divisor <= number / 2; ++divisor) {
if (number % divisor == 0) {
isPrime = false;
break;
}
}
if (isPrime) {
cout << number << " ";
}
}
cout << endl;
return 0;
}
2-30 声明一个表示时间的结构体,可以精确表示年、月、日、小时、分、秒;提示用户输入年、月、日、小时、分、秒的值,然后完整地显示出来
cpp
#include <iostream>
using namespace std;
// 定义表示时间的结构体
struct Time {
int year;
int month;
int day;
int hour;
int minute;
int second;
};
int main() {
// 创建时间结构体变量
Time time;
// 提示用户输入时间信息
cout << "请输入年份: ";
cin >> time.year;
cout << "请输入月份: ";
cin >> time.month;
cout << "请输入日期: ";
cin >> time.day;
cout << "请输入小时: ";
cin >> time.hour;
cout << "请输入分钟: ";
cin >> time.minute;
cout << "请输入秒数: ";
cin >> time.second;
// 显示完整的时间信息
cout << "输入的时间为:" << time.year << "年" << time.month << "月" << time.day << "日 "
<< time.hour << "时" << time.minute << "分" << time.second << "秒" << endl;
return 0;
}
2-31 在程序中定义一个整型变量,赋以1~100的值,要求用户猜这个数,比较两个数的大小,把结果提示给用户,直到猜对为止。分别使用while、do...while语句实现循环。
cpp
//使用while循环
#include <iostream>
using namespace std;
int main() {
int targetNumber = 42; // 要猜的数字
int userGuess;
cout << "猜一猜1~100之间的数字: ";
// 使用while循环
while (true) {
cin >> userGuess;
if (userGuess == targetNumber) {
cout << "恭喜你,猜对了!" << endl;
break; // 结束循环
} else if (userGuess < targetNumber) {
cout << "猜的数字太小了,请再试一次: ";
} else {
cout << "猜的数字太大了,请再试一次: ";
}
}
return 0;
}
cpp
// 使用do...while语句
#include <iostream>
using namespace std;
int main() {
int targetNumber = 42; // 要猜的数字
int userGuess;
cout << "猜一猜1~100之间的数字: ";
// 使用do...while循环
do {
cin >> userGuess;
if (userGuess == targetNumber) {
cout << "恭喜你,猜对了!" << endl;
} else if (userGuess < targetNumber) {
cout << "猜的数字太小了,请再试一次: ";
} else {
cout << "猜的数字太大了,请再试一次: ";
}
} while (userGuess != targetNumber);
return 0;
}
2-32 口袋中有红、黄、蓝、白、黑5种颜色的球若干个。每次从口袋种取出3个不同颜色的球,问有多少种取法?
cpp
#include <iostream>
#include <string>
using namespace std;
int main() {
const int totalColors = 5; // 总颜色数
const int ballsPerDraw = 3; // 每次取出的球数
string colors[] = {"红", "黄", "蓝", "白", "黑"};
int combinationCount = 0;
// 循环遍历所有可能的排列
for (int color1 = 0; color1 < totalColors; ++color1) {
for (int color2 = 0; color2 < totalColors; ++color2) {
for (int color3 = 0; color3 < totalColors; ++color3) {
if (color1 != color2 && color1 != color3 && color2 != color3) {
// 输出当前排列和编号
cout << combinationCount + 1 << " ";
cout << colors[color1] << " " << colors[color2] << " " << colors[color3] << endl;
combinationCount++;
}
}
}
}
// 输出总的排列数
cout << "总共有 " << combinationCount << " 种取法。" << endl;
return 0;
}
2-33 输出九九乘法表
cpp
#include<bits/stdc++.h>
using namespace std;
//打印九九乘法表
int main(){
int i=0;
int j=0;
for(i=1;i<=9;i++){
for(j=1;j<=i;j++){
cout<<j<<"*"<<i<<"="<<i*j<<" ";
}
cout<<endl;
}
return 0;
}