c++0305习题

文章探讨了编程中的几个问题,包括计算表达式的结果,兑换货币的方法计数,买鸡组合问题,字符大小写转换以及球落下反弹路程的计算。
摘要由CSDN通过智能技术生成

一、求下面表达式的值

1.0

2.-1

3.1

4.(1)1 (2)3.2  (3)0  (4)7.0

5.(1)0(2)300.005(3)0(4)1(5)1

二、将100元兑换成1元、2元、5元纸币,保证1元、2元、5元纸币的数量至少为1,将所有兑换方法输出,并输出总共有多少种兑换方法?

#include <iostream>
using namespace std;

int main() {
	int count = 0; // 初始化兑换方案计数器为0

	// 三重循环,分别遍历1元、2元、5元纸币的数量
	for (int i = 1; i <= 100; i++) { // 1元纸币数量从1到100循环
		for (int j = 1; j <= 50; j++) { // 2元纸币数量从1到50循环
			for (int k = 1; k <= 20; k++) { // 5元纸币数量从1到20循环
				if (i + 2 * j + 5 * k == 100) { // 判断当前组合是否能兑换成100元
					count++; // 如果能兑换成功,计数器加1
					cout << "1元:" << i << "张,2元:" << j << "张,5元:" << k << "张" << endl; // 输出当前兑换方案
				}
			}
		}
	}

	cout << "总共有 " << count << " 种兑换方法。" << endl; // 输出总共有多少种兑换方法
	return 0;
}

扩展1.(简约版):

 扩展2.(不考虑所有钱币都存在版):

三. 公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,用100文钱买一百只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱。并输出总共有多少种购买方法。

#include <iostream>
using namespace std;

int main() {
    int count = 0;

    for (int i = 1; i <= 20; i++) {
        for (int j = 1; j <= 33; j++) {
            int k = 100 - i - j;
            if (5 * i + 3 * j + k / 3 == 100 && k % 3 == 0) {
                count++;
                cout << "公鸡:" << i << " 只,母鸡:" << j << " 只,小鸡:" << k << " 只" << endl;
            }
        }
    }

    cout << "总共有 " << count << " 种购买方法。" << endl;

    return 0;
}

四, 输入一些字符,直接输入#号结束,将输入的字符大写转换为小写,小写转换为大写,如果是数字则不操作,分别统计完成转换后大写字母小写字母及数字个数。

#include <iostream>
#include <cctype>
using namespace std;

int main() {
    char input;
    int daCount = 0, xiaoCount = 0, shuziCount = 0;

    cout << "请输入一些字符,以#号结束:" << endl;

    while (cin >> input && input != '#') {
        if (isupper(input)) {
            cout << "转换后:" << static_cast<char>(tolower(input))<<endl ;
            xiaoCount++;
        }
        else if (islower(input)) {
            cout << "转换后:" << static_cast<char>(toupper(input))<<endl ;
            daCount++;
        }
        else if (isdigit(input)) {
            cout << "数字不做转换:" << input<<endl
 ;
            shuziCount++;
        }
    }

    cout << "大写字母个数:" << daCount << endl;
    cout << "小写字母个数:" << xiaoCount << endl;
    cout << "数字个数:" << shuziCount << endl;

    return 0;
}

//while (cin >> input && input != '#') { ... }:这是一个while循环,用于持续地从标准输入读取字符,直到输入为#为止。
// cin >> input表示从标准输入流(通常是键盘)读取一个字符,并将其存储在变量input中。
// input != '#'是一个条件判断,只要读取到的字符不是#,循环就会继续执行。
//if (isupper(input)) { ... }:这是一个if条件语句,用于检查变量input是否包含一个大写字母。
// isupper是一个标准库函数,用于检测传入的字符是否为大写字母。如果是大写字母,则执行大括号{ ... }内的代码。

//cout << "转换后:" << static_cast<char>(tolower(input)) << endl; :这行代码做了几件事情:
//tolower(input):调用tolower函数,将input中的大写字母转换为小写字母。如果input不是大写字母,tolower会返回input本身。
//static_cast<char>(...):这是一个类型转换,确保tolower函数的返回值被正确地解释为字符类型。
// 虽然在这个特定的例子中可能不是必需的(因为tolower通常返回int,但可以直接赋值给char),但在更一般的情况下,类型转换可以确保类型的正确性。
//cout << "转换后:" << ... << endl; :输出转换后的字符到标准输出流(通常是屏幕)。
// "转换后:"是一个字符串字面量,用于在输出中标识转换后的字符。endl是一个操纵符,用于插入一个新行,并刷新输出缓冲区。
//lowercaseCount++; :这行代码增加lowercaseCount变量的值。注意,虽然变量名是lowercaseCount,但实际上这里是在计数大写字母被转换为小写字母的次数。
//总结:这段代码的主要功能是读取用户输入的字符,如果字符是大写字母,就输出转换后的小写字母,并增加一个计数器
//这个过程会持续进行,直到用户输入#字符为止。

简单版代码:

#include<iostream>
#include<cctype>
using namespace std;
int main() {
	char input;
	int daxiecount=0, xiaoxiecount=0, shuzicount = 0;
	cout << "请输入一些字符,以#号结束:" << endl;
	while (cin>>input&&input!='#') {
		if (isupper(input)) {
			input = tolower(input);
			xiaoxiecount++;
		}
		else if (islower(input)) {
			input = toupper(input);
			xiaoxiecount++;
		}
		else {
			shuzicount++;
		}
		cout << input;
	}
	cout << endl;
	cout << "大写个数" << daxiecount << ' ' << "小写个数" << xiaoxiecount << ' ' << "数字个数" << shuzicount << ' ' << endl;
	return 0;
}

五、一个球从100高度落下,每次反弹原高度的一半,求第10次落地时共经过的路程。 

//5.一个球从100高度落下,每次反弹原高度的一半,求第10次落地时共经过的路程。
#include <iostream>
using namespace std;

int main() {
    double height = 100.0;
    double distance = 100.0; // 第一次落地的路程
    for (int i = 2; i <= 10; i++) {
        height /= 2; // 反弹的高度
        distance += height * 2; // 一次上升和下降的距离
    }

    cout << "第10次落地时共经过的路程为:" << distance << endl;

    return 0;
}

 

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值