简单循环
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 求Sn Sn = 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.25 2906.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; }
// 求2222222 void 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); }
本文含有隐藏内容,请 开通VIP 后查看