循环的基础练习

题目1:自然数序列求和

问题描述
输入一个正整数n,计算从1到n之间所有自然数的累加和。
输入样例

5  

输出样例

和为=15  

参考代码

#include <iostream>  
using namespace std;  

int main() {  
    int n;  
    cout << "请输入一个整数:";  
    cin >> n;  
    int i = 1, sum = 0;  
    while (i <= n) {  
        sum += i;  
        i++;  
    }  
    cout << "和为=" << sum << endl;  
    return 0;  
}  

题目2:数字位数统计

问题描述
输入一个整数(可能为负数),输出其绝对值包含的位数(负号不计入位数)。
输入样例

-1234  

输出样例

该数为4位数  

参考代码

#include <iostream>  
using namespace std;  

int main() {  
    int n, i = 0;  
    cout << "请输入数字:";  
    cin >> n;  
    n = abs(n);  // 取绝对值  
    while (n != 0) {  
        n /= 10;  
        i++;  
    }  
    cout << "该数为" << i << "位数" << endl;  
    return 0;  
}  

题目3:动态步长游泳训练

问题描述
小明的初始游泳步长为2米,每次游完后步长衰减为前一次的98%。输入泳池总长度n(单位:米,double类型),计算他需要多少次才能游完。
输入样例

10  

输出样例

6  

参考代码

#include <iostream>  
using namespace std;  

int main() {  
    double n;  
    cin >> n;  
    double len_s = 2, len_a = 0;  
    int i = 1;  
    while (true) {  
        len_a += len_s;  
        if (len_a >= n) {  
            cout << i;  
            break;  
        }  
        len_s *= 0.98;  
        i++;  
    }  
    return 0;  
}  

题目4:复利投资年限计算

问题描述
某投资本金为60000元,年利率6%,每年利息加入本金继续生息。计算总收益(本金+利息)超过80000元所需的年限。
输入样例

(无输入)  

输出样例

5  

参考代码

#include <iostream>  
using namespace std;  

int main() {  
    int y = 0;  
    double a = 60000, s = 60000;  
    while (s <= 80000) {  
        s += a * 0.06;  
        a *= 1.06;  
        y++;  
    }  
    cout << y << endl;  
    return 0;  
}  

题目5:数字构造数列求和

问题描述
输入两个正整数n和a,构造数列:a, aa, aaa, ..., 共n项(例如a=2, n=3时数列为2, 22, 222),求数列所有项的和。
输入样例

3 2  

输出样例

sum=246  

参考代码

#include <iostream>  
using namespace std;  

int main() {  
    int n, a, sum = 0, b;  
    cout << "请输入n a的值:";  
    cin >> n >> a;  
    b = a;  
    int i = 0;  
    while (i < n) {  
        sum += a;  
        a = a * 10 + b;  
        i++;  
    }  
    cout << "sum=" << sum;  
    return 0;  
}  

题目6:人口增长预测模型

问题描述
假设当前世界人口为70亿,年增长率为0.1%,计算50年后的人口总量(保留两位小数)。
输入样例

(无输入)  

输出样例

73.58  

参考代码

#include <iostream>  
#include <iomanip>  
using namespace std;  

int main() {  
    double sum = 70;  
    int i = 1;  
    while (i <= 50) {  
        sum *= 1.001;  
        i++;  
    }  
    cout << fixed << setprecision(2) << sum;  
    return 0;  
}  

题目7:弹跳小球总距离计算

问题描述
小球从高度h米下落,每次触地后反弹至原高度的一半。计算小球在10次触地过程中经过的总距离(包含下落和反弹)。
输入样例

10  

输出样例

29.9219  

参考代码

#include <iostream>  
using namespace std;  

int main() {  
    double h;  
    while (cin >> h) {  
        double sum = 0.0;  
        int n = 10;  
        while (n--) {  
            sum += h + h / 2;  
            h /= 2;  
        }  
        cout << sum << endl;  
    }  
    return 0;  
}  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值