一、求下面表达式的值
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;
}