简单循环
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);
}