C++编程训练1


1.输入任意 3 个数,然后按照从小到大的顺序进行输出。

#include <iostream>

int main()
{
    using namespace std;
    //a,b,c用于存储用户输入的数据,temp用于交换两个数的位置的临时变量
    double a = 0, b = 0, c = 0, temp=0; 
    cout << "Please enter three number:" << endl;
    cin >> a >> b >> c;    //获取用户输入的数字
    //利用中间变量调整数字的位置,使a<b<c
    if (a > b) {
        temp = a;
        a = b;
        b = temp;
    }
    if (a > c) {
        temp = a;
        a = c;
        c = temp;
    }
    if (b > c) {
        temp = b;
        b = c;
        c = temp;
    }
    //按从小到大的顺序输出结果
    cout << a << " " << b << " " << c << endl;
    return 0;
}

2.假设有一个函数,是一个线性分段的函数

​ X^2(X>0)

Y = 0 (X=0)

​ KX+b(X<0)

如果说给定任意一个X,计算出 Y 出来。

#include <iostream>

int main() {
    using namespace std;
    double X = 0, Y = 0, K = 0, B = 0;
    cout << "请输入X<0时的斜率K与截距B:" << endl;
    //获取用户输入的斜率和截距
    cin >> K >> B;
    cout << "请输入X的值:" << endl;
    //获取自变量X
    cin >> X;
    //根据X与0的关系计算出对应的Y值
    if (X > 0) {
        Y = X * X;
    }
    else {
        if (X == 0) {
            Y = 0;
        }
        else {
            Y = K * X + B;
        }
    }
    //输出Y值
    cout << "Y=" << Y << endl;
    return 0;
}

3.快递公司送包裹的费用计算,包裹的重量,包裹送的里程数,在一个

0-500KM 1.0 元/公里

500-1200KM 1.4 元/公里

1200-2000KM 2.1 元/公里

2000KM以上 3.2 元/公里

起步价(10 元)+ 包裹重量 单价 公里数 = 寄件费用

输入包裹重量和要寄送目的地的公里数,计算出价格出来。

#include <iostream>

int main() {
    using namespace std;
    double weight = 0, mile = 0, price = 0, total = 0;
    cout << "请输入包裹的重量和要寄送目的地的公里数:" << endl;
    cin >> weight >> mile;
    //根据公里数判断单价属于哪一个层次再进行计算
    if (mile > 2000) {
        price = 3.2;
    }
    else if (mile >= 1200) {
        price = 2.1;
    }
    else if (mile >= 500) {
        price = 1.4;
    }
    else {
        price = 1.0;
    }
    total = 10 + weight * price * mile;
    //输出寄件费用
    cout << "寄件费用为:" << total << "元。" << endl;
    return 0;
}

4.一个弹性的小球,从一定高度落下,假设高度为 h,然后到达地面后弹起,弹起的高度是原来 高度的 f*h;(0.2<f<0.8),当小球在地上不再弹起时,计算小球在空中经过的高度。(输入 h,f)

#include <iostream>

int main() {
    using namespace std;
    double h = 0, f = 0, total = 0;
    cout << "请分别输入高度和弹跳系数f(0.2<f<0.8):" << endl;
    cin >> h >> f;
    //计算小球在空中弹跳的总高度,高度为0时小球停下
    while (h)
    {
        total += h;
        h *= f;
    }
    cout << "小球在空中经过的高度为:" << total<<endl;
    return 0;
}

5.假设有这个一个数列

2/1,3/2,5/3,8/5……

要求计算这个数列的前 N项之和,要求输入 N,得到结果。

#include <iostream>

int main() {
    using namespace std;
    //lfnum为当前数,lfsum为前n项和
    //m和n分别为分子分母,temp为临时变量
    double lfnum = 0, lfsum = 0, m = 2, n = 1, temp=0;
    int N = 0;
    cout << "请输入N的值:" << endl;
    cin >> N;
    for (;N > 0;--N) {
        //先将当前项加到lfnum中
        lfnum = m / n;
        lfsum += lfnum;
        //调整位置,使m为下一个数的分子,n为下一个数的分母
        temp = n;
        n = m;
        m = m + temp;
    }
    cout << "这个数列的前" << N << "项和为:" << lfsum;
    return 0;
}

6.公式 S = 1+1/(1+2)+1/(1+2+3)+…+1/(1+2+3+…n)输入 n 的值,计算 S 的值。

#include <iostream>

int main() {
    using namespace std;
    //a为分母
    int n = 0, a = 1, i = 0;
    //S为前n项和,lfnum为当前数
    double S = 0, lfnum = 0;
    cout << "请输入n的值:" << endl;
    cin >> n;
    for (i=2; i <= n+1; ++i) {
        //得到每一项的值后将这一项加入到S中
        lfnum = (double)1 / a;
        S += lfnum;
        //相加后算出下一项的分母
        a += i;
    }
    //输出S
    cout<<"S="<<S<<endl;
    return 0;
}

7.任意给定两个正整数,计算他们的最大公约数和最小公倍数。

#include <iostream>

int main() {
    using namespace std;
    //na与nb为用户输入的两个整数
    //m为最大公约数,n为最小公倍数,temp为临时变量
    int na = 0, nb = 0, m = 0, n = 0, temp = 0;
    cout << "请输入2个正整数:" << endl;
    cin >> na >> nb;
    //求最大公约数
    // 让temp为na与nb中较小的那一个
    if (na > nb) {
        temp = nb;
        n = na;
    }
    else {
        temp = na;
        n = nb;
    }
    //利用穷举法从大到小依次试验,直到找到最大公约数
    while (true) {
        if (na % temp==0 && nb % temp==0) {
            break;
        }
        else {
            --temp;
        }
    }
    m = temp;

    //求最小公倍数
    do {
        if (n % na == 0 && n % nb == 0) {
            break;
        }
        else {
            ++n;
        }
    } while (true);
    cout << "最大公约数为" << m << "\n最小公倍数为" << n << endl;
    return 0;
}

8.根据下图,输入 x1,x2 计算曲线和 x 轴包围的面积,x 用弧度制

#include <iostream>
#include <cmath>

int main() {
    using namespace std;
    //y为函数值,temp为临时变量,area为面积
    //把区域分成足够多的小矩形,总面积近似看作为每个矩形面积的和
    //步长distance越小,结果越精确
    double x1 = 0, x2 = 0, y = 0, temp=0,
        area=0, distance = 0.0000001;
    cout << "请分别输入x1与x2的值:" << endl;
    cin >> x1 >> x2;
    //使x1>x2
    if (x1 > x2) {
        temp = x1;
        x1 = x2;
        x2 = temp;
    }
    //计算曲线与x轴围成的面积
    while (x1 <= x2) {
        y = cos(x1);
        //根据y与0的大小关系确定计算方法
        //也可以用fobs()直接获取y的绝对值
        if (y>=0){
            area += distance * y;
        }
        else {
            area += distance * (-y);
        }
        x1 += distance;
    }
    //输出面积
    cout << "曲线与x轴所包围的面积为" << area;
    return 0;
}

9.编写程序,计算出 1000 以内的素数,然后输出到屏幕上。

#include <iostream>
#include <cmath>

int main()
{
    using namespace std;
    // 从2开始用枚举法逐个检验
    int i=2, n;
    for (i; i <= 1000;i++) {
        n = 2;
        while (n < i && i % n != 0) {
            n++;
        }
        if (i == n) {
            cout << i << endl;
        }
    }
    return 0;

10.从键盘输入任意个英文字符,分别取出每个字符出来,然后将其进行加密,加密的规则:如果 是 A->C,Y->A,Z->B。

#include <iostream>

int main() {
    using namespace std;
    string password;
    cout << "请输入由任意个字符组成的字符串:" << endl;
    cin >> password;
    //通过网络获知可以用这个方法逐个读取每个字符
    for (char ch : password) {
        //如果是Y,Z,y,z这4个字符之一单独处理
        //其他的+2即可,为对应的ASCII码表的下2个
        if (ch == 'Y') {
            ch = 'A';
        }
        else if (ch == 'Z') {
            ch = 'B';
        }
        else if (ch == 'y') {
            ch = 'a';
        }
        else if (ch == 'z') {
            ch = 'b';
        }
        else {
            ch += 2;
        }
        cout << ch;
    }
    return 0;
}

文章作者: 陈细利
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 陈细利 !
评论
 上一篇
C++编程训练2 C++编程训练2
1.有 3 个强盗,抢了一个珠宝箱,打开一看,里面很多颗珠宝,分轮次来,老大拿 3 个,老 二拿 2 个,老三拿一个,构成一个轮次,接着开始下一轮,直到拿完宝箱中的珠宝。目前已 知老三拿了 25 颗珠宝,请问 1)宝箱里面原来有多少颗珠宝;
下一篇 
Python基础语法5 Python基础语法5
参考教材:Python程序设计基础与应用(机械工业出版社/董付国) ​ 由于时间紧迫,故只整理语法,没有写实例,在学习或复习过程中每个语法点都应搭配合适的例子进行练习。 第九章1.open()函数的文件打开方式 模式 说明
  目录