C++编程训练3


1.定义个字符型数组 char 数组,将顺序反置,acvkd ->dkvca;

#include <iostream>
using namespace std;

int main(){
    char (*fp);
    fp = new char;
    cout << "请输入一串字母:" << endl;
    cin >> fp;
    char temp;
    int len = strlen(fp);
    for (int i = 0;i < len / 2;++i) {
        temp = fp[len-i-1];
        fp[len - i - 1] = fp[i];
        fp[i] = temp;
    }
    cout << fp;
    return 0;
}

2.定义一个 int 类型的二维数组, 问 :计算上三角阵的和;

#include <iostream>
using namespace std;

int main() {
    //随意创建一个二位数组
    int a[5][5] = {
        {0, 1, 2, 3, 4},
        {5, 6, 7, 8, 9},
        {10, 11, 12, 13, 14},
        {15, 16, 17, 18, 19},
        {20, 21, 22, 23, 24} 
    };
    //i,j用于控制循环,sum为上三角阵的和
    //如果为任意数组a[m][n],则第一个for的5修改为m,第二个for的j=4修改为j=n-1
    int i = 0, j = 0, k = 0, sum = 0;
    for (i = 0;i < 5;++i) {
        for (j = 4;j >= i; --j) {
            sum += a[i][j];
        }
    }
    cout << "上三角阵的和为:" << sum << endl;
}

3.有 50 个人,围坐成一圈,然后开始报数,从 0 开始报数,报数是从 0-7,报到 7 的人,退 出这个圈子,然后下一人开始从 0 报,问报数 15 轮后,哪些人会留下来,原来他所在的位 置。把留下来的人输出原本他所在的位置.

#include <iostream>
using namespace std;

int main() {
    int people[50];
    int* p = people, count, i = 0, j = 0;
    //为每个人编号
    for (i; i < 50;++i) {
        *p = i + 1;
        ++p;
    }

    //将退出的人逐个淘汰
    for (i = 1; i < 16; ++i)
    {  //每数一轮报数清零
        count = 0;
        while (count < 8)
        {
            //如果超出上限,清零
            if (j == 50)
                j = 0;
            //自动跳过被重置的人,没被重置的继续数
            if (people[j])
                ++count;
            //每一轮都有人被淘汰,j+1确保退出的人+未退出的人总数为50
            ++j;
        }
        //退出的人清零
        people[j - 1] = 0;
        cout << "第" << i << "个退出的是" << j << endl;
    }

    //输出剩下的人的位置
    cout << "剩下的人的位置分别为:" << endl;
    for (i = 0;i < 50;++i) {
        if (people[i] !=0 ) {
            cout << people[i] << " ";
        }
    }
}

文章作者: 陈细利
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 陈细利 !
评论
 上一篇
C++编程训练4 C++编程训练4
观察复数对象 a+bi,抽提出这类对象共有的属性和方法,封装为一个类。 要求如下: 1) 编写构造函数,拷贝构造函数 2) 实现复数的相加、相减操作 头文件stdafx.h #ifndef STDAFX__H__INCLUDED #de
下一篇 
C++编程训练2 C++编程训练2
1.有 3 个强盗,抢了一个珠宝箱,打开一看,里面很多颗珠宝,分轮次来,老大拿 3 个,老 二拿 2 个,老三拿一个,构成一个轮次,接着开始下一轮,直到拿完宝箱中的珠宝。目前已 知老三拿了 25 颗珠宝,请问 1)宝箱里面原来有多少颗珠宝;
  目录