【C++习题】 《C++语言程序设计第四版》第1~6章 编程习题记录

这篇博客详细记录了《C++语言程序设计第四版》第1~6章中涉及switch语句和递归的编程习题。包括分数等级判断、菜单程序、质数查找、猜数字游戏、回文数检验、随机游戏、Fibonacci级数计算、幂运算重载、人员管理类设计、全局变量跨文件操作、友元函数和类的运用以及字符串和矩阵操作等实践题目,通过实例代码解析关键点和注意事项。
摘要由CSDN通过智能技术生成

【2_27】编写一段程序,运行时向用户提问“你考了多少分?(0~100)”,接受输入后判断其等级并显示出来。

判断依据如下:等级={优秀 (90~100分);良好 (80~89分);一般 (60~79分);不及格 (0~59分);}

要求:必须用switch语句实现。

代码:

int Code2_27()
{
    int scores = 0;
    cout << "你考了多少分?" << endl;
    cin >> scores;
    int caseScores = scores / 10;                         //用“整除”将分数的逻辑范围转化为case常量
    switch (caseScores)
    {
        case(10):case(9):   cout << "你的等级为:优秀";     //多个case对应一个表达式写法
        break;
	case(8):	    cout << "你的等级为:良好"; 
        break;
	case(7):case(6):    cout << "你的等级为:一般"; 
        break;
	case(5):case(4):case(3):case(2):case(1):case(0):cout << "你的等级为:不合格";
        break;
	default:cout << "请检查分数是否在此范围内!" << endl;
	break;
    }
    return scores;
}

需要注意的点:

1.switch语句里的case只能跟常量,而判断分数明显是逻辑判断,因此需要将逻辑值转化为常量

2.switch里多个case对应相同表达式的时写法


 

【2_28】实现一个简单的菜单程序,运行时显示"Menu: A(dd) D(elete) S(ort) Q(uit),Select one:"提示用户输入,A 表示增加,D 表示删除,S 表示排序,Q 表示退出,输入为 A、D、S 时分别提示"数据已经增加、删除、排序。"直到输入为 Q 时程序结束。

要求:必须使用 Switch 语句。

代码:

int Code2_28()
{

    char userInput;
    cout << "Menu: A(add) D(delete) S(sort) Q(quit),Select one:" << endl;
    cin >> userInput;
    while (userInput !='Q')
    {
        switch (userInput)	
        {
	    case 'A':cout << "数据已经增加...." << endl; break;
            case 'D':cout << "数据已经删除..." << endl; break;
	    case 'S':cout << "数据已经排序..." << endl; break;
	    default:cout << "未找到此功能,请重新输入...." << endl; break;
	}
	cin >> userInput;
	continue;
    }
    cout << "程序即将退出...." << endl;
    return 0;
}

需要注意的点:

1.switch对应的常量不仅只有整型常量,还有实型常量和字符型常量等,因此可直接匹配字符'A'。


 

【2_29】用穷举法找出1~100的质数并显示出来,并分别用while、do-while、for循环语句实现.。

代码:

int Code_2_29()
{
	//质数定义:不能被它本身和1以外的数整除


	/*
	*  description:用while循环求1~100之间的质数
	*  parm: null
	*  return: null
	*/ 
	int number_1 = 1;
	while (number_1 >=1&& number_1 <=100)
	{
		int i = 1;
		int counts = 0;
		while (i<= number_1)
		{
			if (number_1%i == 0)                    //整除的意思也就是求余数为0
			{
				counts++;		        //counts是余数为0的记次数
			}
			i++;				        //i从1递增到number本身
		}
		if (counts==2)				        //如果是两次整除就是1和本身,说明是质数
		{
			cout << number_1 << "是质数" << endl;
		}
		number_1++;
	}

	cout << "**************分割线***************" << endl;


	/*
	*  description:用do...while循环求1~100之间的质数
	*  parm: null
	*  return: null
	*/
	int number_2 = 1;
	do
	{
		int i = 1;
		int counts = 0;
		do
		{
			if (number_2%i==0)
			{
				counts++;
			}
			i++;
		} while (i<= number_2);

		if (counts==2)
		{
			cout << number_2 << "是质数" << endl;
		}
		number_2++;
	} while (number_2 >=1&& number_2 <=100);
	
	cout << "**************分割线***************" << endl;


	/*
	*  description:用for循环求1~100之间的质数
	*  parm: null
	*  return: null
	*/
	for (int number_3 = 1; number_3 <= 100; number_3++)
	{
		int counts = 0;
		for (int i = 1; i <= number_3; i++)
		{
			if (number_3%i==0)
			{
				counts++;
			}
		}
		if (counts==2)
		{
			cout << number_3 << "是质数"<<endl;
		}

	}
	return 0;
}

需要注意的点:

1.整除的意思也就是求余数为0

2.本质是双层循环嵌套:第一层循环穷举1~100,第二层循环穷举从1~自身


 

【2_32】在程序中定义一个整型变量,赋以 1~100 的值,要求用户猜这个数,比较两个数的大小,把结果提示给用户,直到猜对为止。

代码:

#include<cmath>
#include<time.h>
int Code_2_32()
{
	srand((unsigned)time(NULL));		        //置随机数种子
	int number = rand()%100+1;			//在1-100内随机取一个数
	int guessNum = -1;
	cout << "请猜一猜这个数字是多少?(1~100)" << endl;
	cin >> guessNum;
	while (guessNum != number)
	{
		if (guessNum>number)
		{
			cout << "输入的值偏大,请重新输入.." << endl;
		}
		else
		{
			cout << "输入的值偏小,请重新输入..." << endl;
		}
		cin >> guessNum;
	}
	cout << &
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值