C++学习笔记(4)--练习题
2022/6/20 1:20:46
本文主要是介绍C++学习笔记(4)--练习题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
给出年、月、日 , 计算该日是该年的第几天?
//编写函数,将给定的字符串的大写字母转变成小写字母; 其它字符不变。 //ASCⅡ码表:大写字母[65-90]小写字母[97-122] void exam8() { string s = "Hello World"; cout << s << endl; for (size_t i = 0; i < s.length(); i++) { if (s[i] >= 'A' && s[i] <= 'Z')s[i] = (char)((int)s[i] + 32); } cout << s << endl; } //给出年、月、日 , 计算该日是该年的第几天? //“能被400整除,或者能被4整除但不能被100整除的都是闰年,其余的年份均为平年。能被400整除的为世纪闰年,如2000年就是世纪闰年。 bool isLeap(int y)//是否是闰年 { return (y % 400 == 0) || ((y % 4 == 0) && (y % 100 != 0)); } int getDays(int y, int m)//获取某个月的天数 { //if (m < 1 || m>12||y<0)return 0; switch (m) { case 2: if (isLeap(y))return 29; else return 28; case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31; default: return 30; } } int getAllDays(int y, int m, int d) { int count = 0; for (size_t i = 1; i <= m - 1; i++)//所有月份天数相加 { count += getDays(y, i); } count += d; return count; } void exam9() { int y = 2008, m = 3, d = 1; int count = getAllDays(y, m, d); cout << y << "年" << m << "月" << d << "日" << " 是本年中第" << count << "天" << endl; y = 2022, m = 12, d = 31; count = getAllDays(y, m, d); cout << y << "年" << m << "月" << d << "日" << " 是本年中第" << count << "天" << endl; }
编写函数,将给定的字符串的大写字母转变成小写字母; 其它字符不变。
//编写函数,将给定的字符串的大写字母转变成小写字母; 其它字符不变。 //ASCⅡ码表:大写字母[65-90]小写字母[97-122] void exam8() { string s = "Hello World"; cout << s << endl; for (size_t i = 0; i < s.length(); i++) { if (s[i] >= 'A' && s[i] <= 'Z')s[i] = (char)((int)s[i] + 32); } cout << s << endl; }
编写一个函数 converse ,将一维数组中的数逆序存放,不允许使用辅助数组。主函数输入原始数据,调用 converse ,实现逆置。并将原数组和逆置后的数组输出
//编写一个函数 converse ,将一维数组中的数逆序存放,不允许使用辅助数组。主函数输入原始数据,调用 converse ,实现逆置。并将原数组和逆置后的数组输出 void converse(int arr[],int len) { int half = len / 2; int temp; for (size_t i = 0; i < half; i++) { temp = arr[i]; arr[i] = arr[len - i - 1]; arr[len - i - 1] = temp; } } void showArr(int arr[], int len) { for (size_t i = 0; i < len; i++) { cout << arr[i] << ","; } cout << endl; } void exam7() { int arr[] = { 1,2,3,4,5,6 }; int len = sizeof(arr) / sizeof(arr[0]); showArr(arr,len); converse(arr,len); showArr(arr, len); int arr2[] = { 10,20,30,40,50,80,90 }; len = sizeof(arr2) / sizeof(arr[0]); showArr(arr2, len); converse(arr2, len); showArr(arr2, len); }
编一个函数 GCD,求两个无符号整数的最大公约数。主函数输入两个正整数 m 和 n, 调用 GCD,求出 m和 n 的最大公约数和最小公倍数 . 并输出。
//编一个函数 GCD,求两个无符号整数的最大公约数。主函数输入两个正整数 m 和 n, 调用 GCD,求出 m和 n 的最大公约数和最小公倍数.并输出。 //两个数的乘积等于抄这两个数的最大公约数与最小公倍数的乘积。假设有两个数是a、b,它们的最大公约数是p,最小公倍数是q。那么有这样的关系:ab = pq int GCD(int m, int n) { int min = m > n ? m : n; int commonDivisor=1; for (size_t i = 2; i <= min; i++) { if (m % i == 0 && n % i == 0)commonDivisor = i; } return commonDivisor; } void exam6() { int m = 12, n = 15; cout << "m=" << m << " n=" << n << " 最大公约数=" << GCD(m,n) << " 最小公倍数=" << m * n / GCD(m, n) << endl; m = 100, n = 75; cout << "m=" << m << " n=" << n << " 最大公约数=" << GCD(m, n) << " 最小公倍数=" << m * n / GCD(m, n) << endl; m = 66, n = 666; cout << "m=" << m << " n=" << n << " 最大公约数=" << GCD(m, n) << " 最小公倍数=" << m * n / GCD(m, n) << endl; }
//编程计算 : 1*2*3+3*4*5+ …+99*100*101 的值 void exam5() { int sum = 0; for (size_t i = 1; i <= 99; i+=2) { sum += i * (i + 1) * (i + 2); } cout << "sum=" << sum << endl; }
计算: 1+1/ (1+2) +1/ (1+2+3) +…+ 1/ (1+2+…+n) , n 由键盘输入
//计算: 1+1/ (1+2) +1/ (1+2+3) +…+ 1/ (1+2+…+n) , n 由键盘输入 void exam4() { string s; int n; while (true) { cout << "请输入正整数..." << endl; getline(cin, s); try { n = stoi(s); break; } catch (const std::exception&) { cout << "输入错误..." << endl; continue; } } float sum = 0, temp = 0; for (size_t i = 1; i <= n; i++) { temp += i; sum += 1 / temp; } cout << "n=" << n << " temp=" << temp << " sum=" << sum << endl; }
求全部水仙花数。所谓水仙花数是指一个三位数,其各位数字立方的和等于该数。如: 153 = 1*1*1+ 5*5*5 + 3*3*3。
//求全部水仙花数。所谓水仙花数是指一个三位数,其各位数字立方的和等于该数。如: 153 = 13+ 5 3 + 3 3。 void exam3() { list<int> flower; int a, b, c;//分别表示个位数,十位数,百位数 for (size_t i = 100; i < 1000; i++) { a = i % 10; b = i / 10 % 10; c = i / 100; if (i == a * a * a + b * b * b + c * c * c)flower.push_back(i); } for (list<int>::iterator i = flower.begin(); i !=flower.end();i++) { cout <<"水仙花数:" << *i << endl; } }
由键盘输入的任意一组字符, 统计其中大写字母的个数 m和小写字母的个数 n
//由键盘输入的任意一组字符, 统计其中大写字母的个数 m和小写字母的个数 n //ASCⅡ码表:大写字母[65-90]小写字母[97-122] void exam2() { string s; getline(cin,s); int m = 0, n = 0, temp = 0; for (size_t i = 0; i < s.length(); i++) { temp = (int)s[i]; if (temp >= 65 && temp <= 90)m++; else if (temp >= 97 && temp <= 122)n++; } cout << "大写字母个数=" << m << " 小写字母个数=" << n << endl; } void exam2_2() { string s; getline(cin, s); int m = 0, n = 0; for (size_t i = 0; i < s.length(); i++) { if (s[i] >= 'A' && s[i] <= 'Z')m++; else if (s[i] >= 'a' && s[i] <= 'z')n++; } cout << "大写字母个数=" << m << " 小写字母个数=" << n << endl; }
编程计算: 1!+2!+3!+ …+20! ,并将结果输出
//编程计算: 1!+2!+3!+ …+20! ,并将结果输出 void exam1() { long long sum = 0; long long fac = 1; for (size_t i = 1; i <= 20; i++) { fac *= i; sum += fac; cout <<"i="<<i<< " fac=" << fac << " sum=" << sum << endl; } cout << "intMax=" << numeric_limits<int>::max << endl; cout << "longMax=" << numeric_limits<long>::max << endl; cout << "longlongMax=" << numeric_limits<long long>::max << endl; }
这篇关于C++学习笔记(4)--练习题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-01UniApp 中组件的生命周期是多少-icode9专业技术文章分享
- 2024-11-01如何使用Svg Sprite Icon简化网页图标管理
- 2024-10-31Excel数据导出课程:新手从入门到精通的实用教程
- 2024-10-31Excel数据导入课程:新手入门指南
- 2024-10-31RBAC的权限课程:新手入门教程
- 2024-10-31Svg Sprite Icon课程:新手入门必备指南
- 2024-10-31怎么配置 L2TP 允许多用户连接-icode9专业技术文章分享
- 2024-10-31怎么在FreeBSD上 安装 OpenResty-icode9专业技术文章分享
- 2024-10-31运行 modprobe l2tp_ppp 时收到“module not found”消息提醒是什么-icode9专业技术文章分享
- 2024-10-31FreeBSD的下载命令有哪些-icode9专业技术文章分享