写点什么

C/CPP 基础练习题(二)简单循环(2 + 22 + 222…;斐波那契数列)

作者:CtrlX
  • 2022 年 8 月 27 日
    山东
  • 本文字数:2308 字

    阅读完需:约 8 分钟

C/CPP基础练习题(二)简单循环(2 + 22 + 222…;斐波那契数列)

简单循环

1. 求平均年龄

01 星球有学长若干名, 给出每个学长的年龄, 求 01 星球学长的平均年龄, 保留小数点后两位

输入:

第一行: 整数 n(1<n<100), 表示人数

之后 n 行: 每行一个整数 a(15<a<55), 表示第 n 个学长的年龄

输出:

一个浮点数, 保留两位小数. 表示 01 星球学长平均年龄

样例输入:

3

18

18

17

样例输出:

17.67


2. 张三上课时走神, 在作业上写了很多222222222222222 结果被老师发现了张三连忙掩饰说自己在算2+22+222+2222+22222的和, 老师很欣慰, 问他算出来没有张三很困扰, 因为草稿纸写满了2  已经不够用了
大家快帮帮张三吧设计一个程序, 输入n和a 求SnSn = a + aa + aaa + … + aaaaa(n个a)
输入: 两个整数n, a(1<n<9), (1<=a<=9)输出:Sn的值
样例输入:5 2样例输出:24690样例解析: Sn = 2 + 22 + 222 + 2222 + 22222 = 24690
样例输入:4 5样例输出:6170样例解析: Sn = 5 + 55 + 555 + 5555
复制代码


3. super家养了一对刚出生的兔子, 兔子出生3个月起每月都会生一对小兔子, 小兔子出生后三个月起也会每月生一对兔子super想知道 如果兔子不死 n月后家里会有多少对兔子设计一个程序: 输入n, 输出兔子数量(2<n<30)
样例输入: 7样例输出:13
样例输入: 12样例输出: 144
复制代码


4. 云海学长为了探究神秘的物理现象, 从高楼抛下一个弹球 但由于高空抛物被警察抓了, 请各位小伙伴完成他未完成的心愿小球从某一高度落下,每次落地后反跳回原来高度的一半,再落下。输入弹球的初始高度M和回弹次数N, 输出弹球第N次回弹后的高度 和达到该高度后所经过的距离(保留两位小数)(0<M<1000, 0<N<50)
样例输入1000 5样例输出31.252906.25
复制代码

解答

1.求平均年龄

#include<iostream>using namespace std;
float Age(int n){ float num = 0; for (int i = 0; i < n; i++) { float age = 0;cin >> age; num += age; } return num/n;}
int main(){ cout << "Input:"; int n = 0; cin >> n;
cout<<Age(n)<<endl;
system("pause"); return 0;}
复制代码


// 求平均年龄void Demo31() {    //--变量声明--    // 人数, 临时记录变量, 学长的年龄总和    int n, temp = 0;    double age = 0;
//--接收输入-- // 注意这里age+=temp 也就是存储了所有学长年龄的和 scanf_s("%d", &n); for (int i = 0; i < n; i++) { scanf_s("%d", &temp); age += temp; }
//--数据处理-- age /= n;
//--输出-- printf("%.2lf", age);}
复制代码

✨2.数列求和

#include<iostream>using namespace std;
//思路:利用数列求和//1:10/9=1,100/9=11,1000/9=111//2:求类似于2 + 22 + 222 + 2222 + 22222 +……可以转化成2*(1 + 11 + 111 + 1111 +……)int Sum(int a, int n){ //计算1 + 11 + 111 + 1111 +…… int num = 0; for (int i = 1; i <= a; i++) { int b = 1; for (int j = 0; j < i; j++)//循环乘以10 { b *= 10; } num += b / 9; } //返回n*(1 + 11 + 111 + 1111 +……) return num * n;}
int main(){ cout << "Input:"<< endl; int a = 0,n = 0; cin >> a; cin >> n; cout << Sum(a, n) << endl;
system("pause"); return 0;}
复制代码


#include<iostream>using namespace std;
int Sum(int a, int n){ int num = 0,count = n; for (int i = 1; i <= a; i++) { num += count; count = count * 10 + n; } return num ;}
int main(){ cout << "Input:" << endl; int a = 0, n = 0; cin >> a; cin >> n; cout << Sum(a, n) << endl;
system("pause"); return 0;}
复制代码


// 求2222222void Demo32() {    //--变量声明--    // 输入n, 输入a, 累加数存储变量, 答案存储变量    int n, a;    int num, result = 0;
//--接收输入-- scanf_s("%d %d", &n, &a); num = a;
//--数据处理-- /* num用于存储a,aa,aaa这样的数字
num = aaa num*10 = aaa0 num*10+a = aaaa */ for (int i = 0; i < n; i++) { result += num; num = num * 10 + a; }

//--输出-- printf("%d", result);
}
复制代码

3.斐波那契数列

#include<iostream>using namespace std;
int Sum(int n){ int a = 0, b = 1; if (n == 1 && n == 2) { return 1; } else { for (int i = 0; i < n; i++) { int temp = a + b; a = b; b = temp; } return a; }}
int main(){ cout << "Input:"; int n = 0; cin >> n; cout << Sum( n) << endl;
system("pause"); return 0;}
复制代码


// 数兔子void Demo33() {    //--变量声明--    // 用户输入值  月数    int n;    // 用于存储当月 以及前1,2个月的兔子数    int m1 = 1, m2 = 1, m3 = 0;;
//--接收输入-- scanf_s("%d", &n);
//--数据处理-- //前两个月不生兔子 // 每个月的兔子数量 = 上一个月兔子数 + 上上一个月兔子数 n -= 2; while (n--) { m3 = m1 + m2; m1 = m2; m2 = m3; }
//--输出-- printf("%d", m3);}
复制代码

✨4.抛物问题

// 弹球void Demo34() {    //--变量声明--    // 初始条件    int N, M;    // 高度和距离    double h, l = 0;
//--接收输入-- scanf_s("%d %d", &M, &N); h = M; //--数据处理-- while(N--){ h /= 2; l += h * 3;//大的等于两个小的 + 一个小的 } //--输出-- printf("%.2lf, %.2lf", h, l);
}
复制代码


发布于: 刚刚阅读数: 7
用户头像

CtrlX

关注

Pain is inevitable,suffering is optional 2022.08.01 加入

【个人网站】ctrlx.life 【联系方式】微信:gitctrlx 【软件技能】前端,C++,Python,研究网络工程,数据结构与算法。

评论

发布
暂无评论
C/CPP基础练习题(二)简单循环(2 + 22 + 222…;斐波那契数列)_c_CtrlX_InfoQ写作社区