🌐第一部分 基础语法篇
😎1.1 获取字符串长度
描述
按顺序分别定义char、int、long、double类型的变量,并用sizeof()依次输出这几个变量在内存中所占用的字节数。
输入描述:
用户按顺序分别定义char、int、long、double类型的变量。
输出描述:
输出这几个变量的内存占用大小。
每个占一行,格式如下:
xxx
yyy
zzz
...
(以上xxx、yyy和zzz均代表整数)
💡解决如下:
#include <iostream> using namespace std; template <typename T>//使用模板类就简洁多了 void Disp(T value){ cout<<sizeof(value)<<endl; } int main(){ char ch; int i; long l; double d; Disp(ch); Disp(i); Disp(l); Disp(d); return 0; }
😎1.2 实现四舍五入
描述
将浮点数转换为整数类型,要求四舍五入。
输入描述:
随机输入的浮点数
输出描述:
四舍五入之后的整数
示例1
输入: 14.99 输出: 15
💡解决如下:
#include <iostream> #include <cmath> using namespace std; //四舍五入函数:考虑正数+负数 int Func(double d){ int k=abs(d*10-int(d)*10);//k为小数点后一位 if(k>=5 && d>=0) return int(d)+1; else if(k>=5 && d<0) return int(d)-1; else return int(d); } int main(){ double d; cin>>d; //需要注意C、C++强制转换都是去尾法[向0靠近] //比如int(3.14)=int(3.94)=3 cout<<Func(d)<<endl; }
😎1.3 两数求和
描述
键盘录入两个整数 a 和 b,并对 a 和 b 求和,输出结果。
输入描述:
输入任意两个 int 类型的整数,范围[-1000, 1000]
输出描述:
输出两个整数的和
示例1
输入: 1 2 输出: 3
💡解决如下:
#include <iostream> using namespace std; int Sum(int a,int b){ return a+b; } int main() { int a,b; cin>>a; cin>>b; cout<<Sum(a,b)<<endl; return 0; }
😎1.4 获取两数中的较大值
描述
键盘录入两个整数 a 和 b,获取这两个整数中的较大值,并输出。
输入描述:
输入任意两个整数
输出描述:
输出两个整数中的较大值
示例1
输入: 10 20 输出: 30
💡解决如下:
#include <iostream> using namespace std; int main(){ int a,b; cin>>a; cin>>b; cout<<(a>b?a:b)<<endl; return 0; }
😎1.5 简单运算
描述
键盘输入两个 int 范围的正整数 a 和 b,范围为[1, 9999],输出这两个 int 范围的正整数的和,差,积,商,模(若 a > b 则输出 a - b,a / b,a % b 的值反之输出 b - a,b / a,b % a 的值,不考虑小数)
输入描述:
两个 int 范围的正整数,范围为[1, 9999]
输出描述:
输出这两个 int 范围的正整数的和,差,积,商,模(若 a > b 则输出 a - b,a / b,a % b 的值反之输出 b - a,b / a,b % a 的值,不考虑小数和数据越界情况)
示例1
输入: 10 5 输出: 15 5 50 2 0
💡解决如下:
#include <iostream> using namespace std; void Disp(int a,int b){ cout<<a+b<<" "<<abs(a-b)<<" "<<a*b<<" "<<(a>b?a/b:b/a)<<" "<<(a>b?a%b:b%a)<<endl; } int main(){ int a,b; cin>>a; cin>>b; Disp(a, b); return 0; }
😎1.6 交换两个变量的值
描述
实现交换两个int类型变量的值
输入描述:
a变量和b变量的值,要求都是int类型的值
输出描述:
交换后a变量和b变量的值
示例1
输入: 1 2 输出: 2 1
💡解决如下:
#include <iostream> using namespace std; void Swap(int *ptr1,int *ptr2){ int t=*ptr1; *ptr1=*ptr2; *ptr2=t; } int main(){ int a,b; cin>>a; cin>>b; int *p1=&a,*p2=&b; Swap(p1, p2); cout<<a<<" "<<b<<endl; return 0; }
😎1.7 获取三个数中的最大值(三元表达式实现)
描述
键盘录入三个整数 a、b、c,获取这三个整数中的最大值,并输出。(要求使用三元表达式实现)【即a>b?a:b;形式便是三元表达式】
输入描述:
输入任意三个整数
输出描述:
输出三个整数中的最大值
示例1
输入: 100 200 300 输出: 300
💡解决如下:
#include <iostream> using namespace std; int MaxThree(int a,int b,int c){ int max=a>b?a:b; return max>c?max:c; } int main(){ int a,b,c; cin>>a; cin>>b; cin>>c; cout<<MaxThree(a, b, c)<<endl; return 0; }
🌐第二部分 分支语法篇
😎2.1 计算商品打折结算金额
描述
牛牛商场促销活动:
满100打9折;
满500打8折;
满2000打7折;
满5000打6折
牛阿姨算不清楚自己应该付多少钱,请你帮忙算一下
输入描述:
牛阿姨购买商品打折前的总金额
输出描述:
参加活动后,牛阿姨购买商品应付金额。(保留小数点后1位)
示例1
输入: 654 输出: 523.2
💡解决如下:
#include <iostream> using namespace std; double Soal(double p){ if(p>=5000) return p*0.6; else if(p>=2000) return p*0.7; else if(p>=500) return p*0.8; else if(p>=100) return p*0.9; else return p; } int main(){ double price; cin>>price; cout<<Soal(price)<<endl; return 0; }
😎2.2 判断身材状态
描述
体重指数(BMI)是世界卫生组织(WHO)推荐国际统一使用的肥胖分型标准,即BMI=体重/身高2(kg/m2)。小于 18.5 属于"偏瘦",大于等于 18.5 小于 20.9 属于"苗条",大于等于 20.9 小于等于 24.9 属于"适中",超过 24.9 属于"偏胖"。下面由你来编写一段逻辑,输入用户的身高和体重,计算出对应的体重指数,并返回他们的身材状态。
输入描述:
用户的身高(m)和用户的体重(kg)
输出描述:
体重指数对应的身材状态:偏瘦,苗条,适中,偏胖。
示例1
输入: 62.5 1.75 输出: 苗条
💡解决如下:
#include <iostream> using namespace std; void Disc(double m,double kg){ double bmi=kg/(m*m); if(bmi>24.9) cout<<"偏胖"<<endl; else if(bmi>=20.9) cout<<"适中"<<endl; else if(bmi>=18.5) cout<<"苗条"<<endl; else cout<<"偏瘦"<<endl; } int main(){ double m,kg; cin>>kg; cin>>m; Disc(m, kg); return 0; }
😎2.3 判断成绩等级
描述
键盘录入一个成绩(整数),判断并输出成绩的等级,如果用户输入成绩不合法(小于0或者大于100)则输出成绩不合法。
90-100 优秀
80-89 良
70-79 中
60-69 及格
0-59 差
输入描述:
输入学生的成绩(整数)
输出描述:
输出成绩对应的等级
90-100 优秀
80-89 良
70-79 中
60-69 及格
0-59 差
如果用户输入成绩不合法(小于0或者大于100)则输出成绩不合法。
示例1
输入: 99 输出: 优秀
💡解决如下:
#include <iostream> using namespace std; void Disp(int e){ if(e>100) cout<<"成绩不合法"<<endl; else if(e>=90) cout<<"优秀"<<endl; else if(e>=80) cout<<"良"<<endl; else if(e>=70) cout<<"中"<<endl; else if(e>=60) cout<<"及格"<<endl; else if(e>=0)cout<<"差"<<endl; else cout<<"成绩不合法"<<endl; } int main(){ int score; cin>>score; Disp(score); return 0; }
😎2.4 判断季节
描述
键盘录入一个月份 month,判断属于哪个季节。(3 - 5 月为春季、6 - 8 月为夏季、9 - 11 月为秋季、12,1,2 月为冬季)
输入描述:
输入任意一个月份整数,范围在 1 - 12
输出描述:
输出对应月份的季节,3 - 5 月为春季、6 - 8 月为夏季、9 - 11 月为秋季、12,1,2 月为冬季。如果输入的月份不是 1 - 12,则输出“不合法”。
示例1
输入: 3 输出: 春季
💡解决如下:
#include <iostream> using namespace std; void Disp(int e){ if(e==1 || e==2 || e==12) cout<<"冬季"<<endl; else if(e>=3 && e<=5) cout<<"春季"<<endl; else if(e>=6 && e<=8) cout<<"夏季"<<endl; else if(e>=9 && e<=11) cout<<"秋季"<<endl; else cout<<"不合法"<<endl; } int main(){ int month; cin>>month; Disp(month); return 0; }
🌐第三部分 循环语法篇
😎3.1 求 1 - n 之间偶数的和
描述
键盘输入一个 int 类型的正整数 n,n 的范围为[1, 1000],求 1 - n 之间偶数的和,并输出。
输入描述:
输入任意一个 int 类型的正整数,n 的范围为[1, 1000]
输出描述:
输出 1 - n 之间偶数的和
示例1
输入: 4 输出: 6
💡解决如下:
#include <iostream> using namespace std; int Add(int n){ int sum=0; for(int i=1;i<=n;i++){ if(i%2==0) sum+=i; } return sum; } int main() { int n; cin>>n; cout<<Add(n)<<endl; return 0; }
😎3.2 计算一个数的阶乘
描述
键盘录入一个整数 n,求 n 的阶乘。
n 的阶乘为 n * (n - 1) * (n - 2) * ... * 1
例:5 的阶乘为 5 * 4 * 3 * 2 * 1
输入描述:
键盘录入任意一个整数 n ,范围为 1 - 20
输出描述:
输出该数的阶乘
示例1
输入: 5 输出: 120
💡解决如下:
#include <iostream> using namespace std; long Func(int n){//递归实现 if(n==0 || n==1) return 1; else return Func(n-1)*n; } int main() { long n; cin >> n; cout<<Func(n)<<endl; return 0; }
😎3.3 输出水仙花数
描述
在控制台输出所有的“水仙花数”。
水仙花数是指一个三位数,其各位数字的立方和等于该数本身。
举例:153就是一个水仙花数。
153 = 1*1*1 + 5*5*5 + 3*3*3 = 1 + 125 + 27 = 153
输入描述:
无
输出描述:
输出所有的“水仙花数”,每个“水仙花数”占一行,格式如下:
xxx
yyy
zzz
💡解决如下:
#include <iostream> using namespace std; void Disp(){ for(int i=100;i<999;i++){ int a=int(i/100);//百位数 int b=int((i%100)/10);//十位数 int c=i%10;//个位数 if(i==(a*a*a+b*b*b+c*c*c)) cout<<i<<endl; } } int main() { Disp(); return 0; }
😎3.4 打印乘法表
描述
键盘输入一个正整数 n,打印对应的乘法表。
例如键盘输入 3,则打印 3 × 3 乘法表
1 * 1 = 1
1 * 2 = 2 2 * 2 = 4
1 * 3 = 3 2 * 3 = 6 3 * 3 = 9
输入描述:
输入 1 - 9 之间的任意一个正整数 n
输出描述:
输出对应的乘法表。
例如键盘输入 3,则打印 3 × 3 乘法表
1 * 1 = 1
1 * 2 = 2 2 * 2 = 4
1 * 3 = 3 2 * 3 = 6 3 * 3 = 9
要求:数字和符号之间空格隔开,式子和式子之间使用 4 个空格隔开
💡解决如下:
#include <iostream> using namespace std; void Disp(int n){ for(int i=1;i<=n;i++){ for(int j=1;j<=i;j++){ cout<<j<<" "<<'*'<<" "<<i<<" = "<<i*j<<" "; } cout<<endl; } } int main() { int n; cin >> n; Disp(n); return 0; }
😎3.5 规律数列求和
描述
有数列为:9,99,999,...,9999999999(10个9)。要求使用循环结构编写程序计算此数列的和,并在控制台输出结果。
输入描述:
无
输出描述:
该数列的和
💡解决如下:
#include <iostream> using namespace std; //赋值 void Value(long a[],int n){ long num=9; for(int i=0;i<n;i++){ a[i]=num; num=num*10+9; } } //求和 long SumArr(long a[],int n){ long sum=0; for(int i=0;i<n;i++){ sum+=a[i]; } return sum; } int main() { long a[10]; int n=sizeof(a)/sizeof(a[0]); Value(a, n); cout<<SumArr(a,n)<<endl; return 0; }
😎3.6 计算小球走过的路程和反弹高度
描述
一球从 h 米高度自由落下,每次落地后反跳回原高度的一半再落下,求它在第 n 次落地时共经过了多少米?第 n 次返弹多高?
输入描述:
输入小球下落的高度和落地的次数(先输入小球初始高度再输入反弹次数)
输出描述:
输出小球第 n 次 落地时经过的距离和第 n 次反弹的高度(保留小数点后1位)
示例1
输入: 100 1 输出: 100.0 50.0
💡解决如下:
#include <ios> #include <iostream> #include <iomanip> using namespace std; void Disc(double h,double n){ double sum=0; for(double i=0;i<n;i++){ if(i==0) sum+=h; else sum+=2*h; h=h/2; } cout<<fixed<<setprecision(1)<<sum<<" "<<h<<endl; } int main() { double h,n; cin>>h>>n; Disc(h,n); return 0; }
😎3.7 判断一个数是不是质数
描述
输入一个大于 1 的整数,判断其是不是质数【质数就是素数】
输入描述:
输入一个大于 1 的整数
输出描述:
输出这个数是否是质数,如果是质数则输出“是质数”,否则输出“不是质数”
示例1
输入: 2 输出: 是质数
💡解决如下:
#include <iostream> using namespace std; //判断是否是质数 void Disc(long n){ for(int i=2;i<=n;i++){ if(n==2 || i==n){ cout<<"是质数"<<endl; break; } else { if(n%i ==0){ cout<<"不是质数"<<endl; break; } } } } int main() { long n; cin>>n; Disc(n); return 0; }