一、三个数最大值#includeiostream using namespace std; int main(){ int a,b,c; cin a b c; int max a; if(b a){ if(b c){ max b; }else{ max c; } }else{ if(a c){ max a; }else{ max c; } } cout 三个数中的最大值为 max endl; return 0; }更精简的方法使用max函数#includeiostream using namespace std; int main(){ int a,b,c; cin abc; int numMax max(max(a,b),c); cout三个数中的最大值为 numMax; return 0; }二、密码破译#includeiostream using namespace std; int main(){ char c1C,c2h,c3i,c4n,c5a; c1 4; c2 4; c3 4; c4 4; c5 4; cout c1c2c3c4c5; }二、母牛的故事第一年只有母牛自己第二年母牛生出了一头小母牛共有两头母牛第三年母牛又生出了一头小母牛共有三头母牛第四年母牛又生出了一头小母牛共有四头母牛第五年母牛又生出了一头小母牛第二年出生的小母牛也生出了一个小母牛所以总共现在有 六头母牛#includeiostream using namespace std; int main(){ // 定义母牛年龄结构的变量 // cow0: 刚出生的母牛0岁和能生育的成年母牛 int cow0 1; // 初始状态第1年有1头母牛 int b1 0; // 1岁的母牛不能生育 int b2 0; // 2岁的母牛不能生育 int b3 0; // 3岁的母牛不能生育下一年将变成能生育的成年母牛 // 注意这里的年龄划分比较特殊需要理解题意 // 母牛在第4年开始每年生一头小牛 int year[55]; // 创建数组存储第1年到第54年的母牛总数 year[0] 0; // 第0年没有母牛数组索引0占位不用 year[1] 1; // 第1年有1头母牛初始状态 // 循环计算第2年到第54年的母牛数量 for(int i 2; i 55; i){ // 核心递推公式新生牛数量 已有的能生育的成年母牛数量 // 这里的cow0累加逻辑 // 第一年cow01代表第1年的初始母牛 // 以后每年b3代表3岁的牛它们在下一年将变成4岁能生育 cow0 cow0 b3; // 新出生的母牛 原有的新生牛积累 今年变成4岁的母牛 // 计算第i年的母牛总数 // 递推公式今年总数 去年总数 今年新生牛数量 year[i] year[i-1] cow0; // 年龄结构更新所有牛年龄1 b3 b2; // 原来的2岁变成3岁 b2 b1; // 原来的1岁变成2岁 b1 cow0; // 今年的新生牛变成1岁明年将变成2岁 } // 无限循环处理多个输入年份 while(1){ int p; // 定义变量存储输入的年份 cin p; // 读取用户输入的年份 // 如果输入不为0则输出对应年份的母牛总数 if(p ! 0){ cout year[p] endl; // 只输出数字符合题目要求 } else { // 如果输入0则退出循环题目约定输入0结束 break; } } return 0; }三、温度转换fixed作用设置浮点数以固定小数点格式显示来源定义在iostream中效果强制浮点数以小数形式显示而不是科学计数法setprecision(2)作用设置浮点数的精度小数位数来源定义在iomanip头文件中参数整数参数表示要显示的小数位数效果与fixed配合使用时指定小数点后的位数#includeiostream #includeiomanip using namespace std; int main(){ double f,c; cin f; c 5*(f-32)/9; cout fixedsetprecision(2)c; return 0; }四、最大公约数与最小公倍数#includeiostream using namespace std; int main(){ // 定义变量m和n用于计算temp用于临时存储余数min用于存储最小公倍数 int m, n, temp, min; // 从键盘输入两个整数 cin m n; // 如果n大于m交换两个数的值确保m是较大的数 // 注意这一步实际上不是必须的辗转相除法即使mn也能正常工作 if(n m){ temp n; // 将n暂存到temp n m; // 将m赋给n m temp; // 将原n值赋给m完成交换 } // 保存原始值用于后续计算最小公倍数 // 注意此时x和y保存的是交换后的值 int x m, y n; // 辗转相除法求最大公约数 // 循环直到除数为0 while(n ! 0){ temp m % n; // 计算m除以n的余数存入temp m n; // 将原来的除数n作为新的被除数 n temp; // 将余数作为新的除数 } // 循环结束时m中存储的就是最大公约数 // 输出最大公约数后面加一个空格 cout m ; // 计算最小公倍数 // 公式两数乘积 ÷ 最大公约数 // 先除后乘可以减少整数溢出的风险 min x / m * y; // 等价于 (x * y) / m但先除后乘更安全 // 输出最小公倍数 cout min; return 0; }五、阶乘求和#includeiostream using namespace std; // 函数功能计算 x 的阶乘 (x!) // 参数xint 类型表示要计算阶乘的数 // 返回值long long 类型避免阶乘结果溢出 long long mul(int x) { long long sum 1; for (int i 1; i x; i) { sum sum * i; // 累乘 } return sum; // 返回阶乘结果 } int main() { int n; cin n; // 从键盘读取 n 的值 long long result 0; // 定义 result 为 long long 类型存储累加和 // 循环从 1 到 n依次计算 ! 并累加到 result for (int i 1; i n; i) { result result mul(i); // 调用 mul(i) 计算 i!并累加 } cout result; return 0; }六、数字逆序输出法一、用数组#includeiostream using namespace std; int main(){ int a[10]; for(int i0 ; i10 ;i){ cina[i]; } for(int i9 ; i0 ;i--){ cout a[i] ; } }法二、用栈#includeiostream #includestack using namespace std; int main(){ stackints; for(int i0 ; i10 ;i){ int a; cin a; s.push(a); } while(!s.empty()){ cout s.top() ; s.pop(); } return 0; }七、是否是素数#includeiostream using namespace std; void isPrime(int x){ for(int i2 ; ix ;i){ if(x%i0){ coutnot prime; return; } } coutprime; } int main(){ int num; cin num; isPrime(num); return 0; }八、字符串的连接#includeiostream #includestring using namespace std; int main(){ string a,b; cin ab; coutab; return 0; }#includeiostream using namespace std; // 函数功能判断一个整数 x 是否为素数 // 参数x要判断的数 // 返回值1 表示是素数0 表示不是素数 int isPrime(int x) { // 从 2 开始检查到 x-1看是否有能整除 x 的数 for (int i 2; i x; i) { if (x % i 0) { // 如果 x 能被 i 整除 return 0; // 说明 x 不是素数返回 0 } } return 1; // 循环结束都没有找到因数说明 x 是素数返回 1 } int main() { int N; // 定义变量 N用于存储用户输入的上限 cin N; // 从键盘读取 N 的值 // 从 2 循环到 N依次判断每个数是否为素数 for (int i 2; i N; i) { if (isPrime(i) 1) { // 如果 i 是素数 cout i ; // 输出该素数后面跟一个空格 } } return 0; }九、字符逆序#includeiostream #includealgorithm using namespace std; int main() { string s; // 定义一个字符串变量 s用于存储用户输入的一行文本 // 从标准输入键盘读取一行字符串包括空格存入变量 s 中 // getline 会一直读取直到遇到换行符为止 getline(cin, s); // 调用 algorithm 头文件中的 reverse 函数反转字符串 s // s.begin() 返回指向字符串第一个字符的迭代器 // s.end() 返回指向字符串最后一个字符的下一个位置的迭代器 // reverse 函数将 [begin, end) 范围内的字符顺序反转 reverse(s.begin(), s.end()); // 将反转后的字符串 s 输出到标准输出屏幕 cout s; return 0; }string s; getline(cin, s); // 读取直到遇到换行符string s; getline(cin, s, #); // 读取直到遇到 # 字符十、字符串输入输出处理#includeiostream using namespace std; int main(){ int n; // 定义一个整数变量n用于存储字符串数量 cinn; // 从键盘输入n的值表示接下来要输入几个字符串 string s[n]; // 定义一个字符串数组s大小为n存储n个字符串 getchar(); // 读取并丢弃缓冲区中的换行符避免影响后面的getline // 第一个循环读取n行字符串 for(int i0 ; in ;i){ // 循环n次i从0到n-1 getline(cin,s[i]); // 从键盘读取一行字符串存入数组s的第i个元素 } // 第二个循环输出刚才读取的n行字符串 for(int i0 ; in ;i){ // 循环n次 couts[i]endlendl; // 输出第i个字符串然后输出两个换行符空一行 } string v; // 定义一个字符串变量v用于存储后续输入的文本 // 第三个循环持续读取多行文本直到文件结束CtrlZ或CtrlD while(getline(cin,v)){ // 只要还能从键盘读取一行文本就继续循环 // 遍历当前行字符串v的每个字符 for(int i0;iv.length();i){ // i从0到字符串长度-1 if(v[i] ! ) // 如果当前字符不是空格 coutv[i]; // 直接输出该字符 else // 如果当前字符是空格 coutendlendl; // 输出两个换行符即空一行 } coutendlendl; // 每处理完一行再输出两个换行符 } return 0; }模拟一下这段代码的运行过程输入示例3 Hello World C Programming Test Line This is a test line with spaces Another line here运行过程模拟cinn; // 读取到 n 3 getchar(); // 吃掉第一个换行符 // for循环读取3行字符串 getline(cin,s[0]); // s[0] Hello World getline(cin,s[1]); // s[1] C Programming getline(cin,s[2]); // s[2] Test Linecouts[0]endlendl; // 输出: Hello World\n\n couts[1]endlendl; // 输出: C Programming\n\n couts[2]endlendl; // 输出: Test Line\n\n此时屏幕显示Hello World C Programming Test Line处理后续输入的字符串// 读取第一行后续输入 getline(cin,v); // v This is a test line with spaces // 遍历处理每个字符 // T h i s [空格] i s [空格] a [空格] t e s t [空格] l i n e [空格] w i t h [空格] s p a c e s // 遇到空格就输出endlendl两个换行符 // 其他字符正常输出 输出结果 This (空一行) is (空一行) a (空一行) test (空一行) line (空一行) with (空一行) spaces // 最后再输出endlendl (空一行) (空一行) // 读取第二行后续输入 getline(cin,v); // v Another line here 输出结果 Another (空一行) line (空一行) here // 最后再输出endlendl (空一行) (空一行)最终的完整的输出结果Hello World C Programming Test Line This is a test line with spaces Another line here