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

简介: 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 求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>

usingnamespacestd;

floatAge(intn)

{

   floatnum=0;

   for (inti=0; i<n; i++)

   {

       floatage=0;cin>>age;

       num+=age;

   }

   returnnum/n;

}

intmain()

{

   cout<<"Input:";

   intn=0; cin>>n;

   cout<<Age(n)<<endl;

   system("pause"); return0;

}

// 求平均年龄

voidDemo31() {

   //--变量声明--

   // 人数, 临时记录变量, 学长的年龄总和

   intn, temp=0;

   doubleage=0;

   //--接收输入--

   // 注意这里age+=temp   也就是存储了所有学长年龄的和

   scanf_s("%d", &n);

   for (inti=0; i<n; i++) {

       scanf_s("%d", &temp);

       age+=temp;

   }

   //--数据处理--

   age/=n;

   //--输出--

   printf("%.2lf", age);

}

✨2.数列求和

#include<iostream>

usingnamespacestd;

//思路:利用数列求和

//1:10/9=1,100/9=11,1000/9=111

//2:求类似于2 + 22 + 222 + 2222 + 22222 +……可以转化成2*(1 + 11 + 111 + 1111 +……)

intSum(inta, intn)

{

   //计算1 + 11 + 111 + 1111 +……

   intnum=0;

   for (inti=1; i<=a; i++)

   {

       intb=1;

       for (intj=0; j<i; j++)//循环乘以10

       {

           b*=10;

       }

       num+=b/9;

   }

   //返回n*(1 + 11 + 111 + 1111 +……)

   returnnum*n;

}

intmain()

{

   cout<<"Input:"<<endl;

   inta=0,n=0; cin>>a; cin>>n;

   cout<<Sum(a, n) <<endl;

   system("pause"); return0;

}

#include<iostream>

usingnamespacestd;

intSum(inta, intn)

{

   intnum=0,count=n;

   for (inti=1; i<=a; i++)

   {

       num+=count;

       count=count*10+n;

   }

   returnnum ;

}

intmain()

{

   cout<<"Input:"<<endl;

   inta=0, n=0; cin>>a; cin>>n;

   cout<<Sum(a, n) <<endl;

   system("pause"); return0;

}

// 求2222222

voidDemo32() {

   //--变量声明--

   // 输入n, 输入a, 累加数存储变量, 答案存储变量

   intn, a;

   intnum, result=0;

   //--接收输入--

   scanf_s("%d %d", &n, &a);

   num=a;

   //--数据处理--

   /*

       num用于存储a,aa,aaa这样的数字

       num = aaa

       num*10 = aaa0

       num*10+a = aaaa

   */  

   for (inti=0; i<n; i++) {

       result+=num;

       num=num*10+a;

   }

   //--输出--

   printf("%d", result);

}

3.斐波那契数列

#include<iostream>

usingnamespacestd;

intSum(intn)

{

   inta=0, b=1;

   if (n==1&&n==2) { return1; }

   else

   {

       for (inti=0; i<n; i++)

       {

           inttemp=a+b;

           a=b;

           b=temp;

       }

       returna;

   }

}

intmain()

{

   cout<<"Input:";

   intn=0; cin>>n;

   cout<<Sum( n) <<endl;

   system("pause"); return0;

}

// 数兔子

voidDemo33() {

   //--变量声明--

   // 用户输入值  月数

   intn;

   // 用于存储当月 以及前1,2个月的兔子数

   intm1=1, m2=1, m3=0;;

   //--接收输入--

   scanf_s("%d", &n);

   //--数据处理--

   //前两个月不生兔子

   // 每个月的兔子数量   =  上一个月兔子数 + 上上一个月兔子数

   n-=2;

   while (n--) {

       m3=m1+m2;

       m1=m2;

       m2=m3;

   }

   //--输出--

   printf("%d", m3);

}

✨4.抛物问题

// 弹球

voidDemo34() {

   //--变量声明--

   // 初始条件

   intN, M;

   // 高度和距离

   doubleh, l=0;

   //--接收输入--

   scanf_s("%d %d", &M, &N);

   h=M;

   //--数据处理--

   while(N--){

       h/=2;

       l+=h*3;//大的等于两个小的 + 一个小的

   }

   //--输出--

   printf("%.2lf, %.2lf", h, l);

}


目录
相关文章
|
2月前
|
C语言
C语言--函数递归与迭代
C语言--函数递归与迭代
|
2月前
|
C语言
C语言---循环迭代的方式求第n个斐波那契数
C语言---循环迭代的方式求第n个斐波那契数
|
2月前
|
C语言
C语言---循环迭代---n的阶乘
C语言---循环迭代---n的阶乘
|
2月前
|
C语言
C语言---递归--求n的阶乘
C语言---递归--求n的阶乘
|
2月前
|
C语言
C语言学习记录——用递归思想求第n个斐波那契数,函数递归
C语言学习记录——用递归思想求第n个斐波那契数,函数递归
15 0
|
3月前
|
算法 C语言
C语言汉诺塔数列(循环版,递归版)
C语言汉诺塔数列(循环版,递归版)
54 0
|
3月前
|
机器学习/深度学习
20004.C语言编程基础(0001)- 递归法求阶乘
20004.C语言编程基础(0001)- 递归法求阶乘
48 0
|
9月前
|
C语言
【C语言】用函数递归的方法解决汉诺塔问题
【C语言】用函数递归的方法解决汉诺塔问题
45 0
|
11月前
|
算法 C语言
【C语言】——函数--递归及习题练习
【C语言】——函数--递归及习题练习
|
算法 C语言
[C语言][典例详解]打印杨辉三角(找规律简单实现)
[C语言][典例详解]打印杨辉三角(找规律简单实现)
105 0