• 考研程序设计100题系列(21-30题)


    注: 数据来源网学天地,如有侵权,告知删除。 练习程序用!

    21. 求矩阵周边元素的平均值

    问题
    在这里插入图片描述
    思想

    本质上其实就是计算矩阵四周元素的元素和
    需要注意的几个点是:

    1. 考虑只有一行与一列的情况
    2. 注意每个元素相加的时候计算参与计算元素的总个数
    3. 最后

    答案

    #include 
    #include 
    
    using namespace std;
    
    
    
    // 处理函数声明
    float chuLi(int data[][5], int hang, int lie) {
        int len;
        lie=5;
    
        len=0;
        float sum=0;
        if(hang==1) {
            // 只有一行的情况
            for(int i=0; i<lie; i++) {
                sum+=data[0][i];
                len++;
            }
        }else if(lie==1) {
            // 只有一列的情况
            for(int i=0; i<hang; i++) {
                sum+=data[i][0];
                len++;
            }
        }else {
            // 多行多列的情况
            // 加两行的元素
            for(int i=0; i<lie; i++) {
                sum= sum + data[0][i] + data[hang-1][i];
                len+=2;
            }
    
            // 中间的两列相加
            for(int i=1; i<hang-1; i++) {
                sum= sum + data[i][0] + data[i][lie-1];
                len+=2;
            }
        }
    
        cout<<sum<<"--"<<len<<endl;
        return sum/len ;
    
    
    }
    
    int main() {
        int a[5][5] = {
            {0,1,2,7,9},
            {1,9,7,4,5},
            {2,3,8,3,1},
            {4,5,6,8,2},
            {5,9,1,4,1}
        };
    
        // 调用处理函数
        cout<<chuLi(a, sizeof(a)/sizeof(a[0]), 5);
    
    
        return 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
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64

    运行结果:
    在这里插入图片描述

    22. 按规则合并数

    问题

    在这里插入图片描述

    答案

    #include 
    using namespace std;
    int main() {
        int a,b,c;
        cout<<"请输入a,b的值:";
        cin>>a>>b;
    
        c = (b%10)*1000 + (a%10) *100 + (b/10)*10 +(a/10);
    
        cout<<c;
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    运行结果:
    在这里插入图片描述

    23. 用数组存储指定范围一下的素数

    问题
    在这里插入图片描述

    答案

    #include 
    #include 
    using namespace std;
    // 处理素数函数声明
    int suShu(int data[], int lim);
    int main() {
        int lim,k;
        cout<<"请输入lim:";
        cin>>lim;
        int data[lim/2];
        // 记录素数
        k = suShu(data, lim);
        cout<<"个数:"<<k<<endl;
        for(int i=0; i<k; i++) {
            cout<<data[i]<<ends;
        }
    }
    
    
    // 计算素数
    int suShu(int data[], int lim) {
        int k=0;
        for(int i=2; i<=lim; i++) {
            // 判断i是不是素数
            // 默认是
            bool flag = true;
            for(int j=2; j<sqrt(i); j++) {
                if(i%j==0) {
                    flag = false;
                    break;
                }
            }
            if(flag)
                data[k++] = i;
        }
        return k;
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39

    运行结果:

    在这里插入图片描述

    24. 统计分数最低的学生记录

    问题
    在这里插入图片描述

    答案

    #include 
    
    using namespace std;
    
    typedef struct stu {
        string sno;
        int score;
    } stu;
    
    
    // 处理函数声明
    int chuLi(stu data[], stu b[]);
    
    
    int main() {
        stu data[5] = {
            {"asd",55},
            {"dsc",59},
            {"cvf",95},
            {"fza",55},
            {"gfv",55}
        };
    
        stu b[5];
    
        // 调用处理函数
        int len = chuLi(data,b);
    
        // 输出查看
        for(int i=0; i<len; i++) {
            cout<<b[i].sno<<":"<<b[i].score<<endl;
        }
    
    }
    
    
    // 处理函数实现
    int chuLi(stu data[], stu b[]) {
        int num=0, min_score;
        min_score = data[0].score;
    
        // 先找出最小的
        for(int i=1; i<5; i++) {
            if(data[i].score<min_score) {
                min_score = data[i].score;
            }
        }
    
        // 在判断与最小的相等的放入b数组
        for(int i=0; i<5; i++) {
            if(data[i].score==min_score) {
                b[num++] = data[i];
            }
        }
    
        return num;
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59

    运行结果:

    在这里插入图片描述

    25. 处理将非偶数ascll的字符放到指定数组

    问题
    在这里插入图片描述

    答案

    #include 
    using namespace std;
    // 处理函数声明
    void chuLi(string str, char t[]);
    int main() {
        string str;
        cout<<"请输入一个字符串:";
        cin>>str;
        char t[str.length()];
        // 调用处理函数
        chuLi(str, t);
        // 输出展示
        for(int i=0; t[i]; i++) {
            cout<<t[i];
        }
    
    }
    
    
    //处理函数实现
    void chuLi(string str, char t[]) {
        int k=0;
        for(int i=0; i<str.length(); i++) {
            if(str[i] % 2!=0) {
                t[k++] = str[i];
            }
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    运行结果:
    在这里插入图片描述

    26. 按规则处理数据

    问题
    在这里插入图片描述

    答案

    #include 
    
    
    using namespace std;
    
    
    // 处理函数声明
    int fun(int m, int data[]);
    
    
    int main() {
        int m, n;
        cout<<"请输入m:";
        cin>>m;
        int data[m];
    
        // 调用处理函数
        n = fun(m,data);
    
        // 输出查看
        for(int i=0; i<n; i++) {
            cout<<data[i]<<ends;
        }
    }
    
    // 处理函数实现
    int fun(int m, int data[]){
        int n=0;
        for(int i=1; i<m; i++) {
            if(i%7 == 0|| i%11 == 0) {
                data[n++] = i;
            }
        }
    
        return n;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    运行结果:

    在这里插入图片描述

    27. 公式求pai

    问题
    在这里插入图片描述

    在这里插入图片描述

    答案

    #include 
    
    using namespace std;
    
    
    // 求pai函数声明
    double getPi(double jd);
    
    int main() {
        double pi, jd;
    
        cout<<"请输入精度:";
        cin>>jd;
    
        //获取pi
        pi = getPi(jd);
    
        cout<<"pi:"<<pi;
    }
    
    
    // 求pi函数实现
    double getPi(double jd){
        // t用于累加
        double pi=0, t=1, tsum=0;
    
        int zf = 1;
    
        while(1.0/t>jd) {
            tsum += 1.0/t * zf;
            t+=2;
            zf*=-1;
        }
        pi = 4 * tsum;
        return pi;
    }
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38

    运行结果:
    在这里插入图片描述

    28. 筛选规则数

    问题
    在这里插入图片描述

    答案

    #include 
    
    using namespace std;
    
    
    // 处理函数声明
    int chuLi(int data[], int low, int high);
    
    int main() {
        int low,high,len;
        cout<<"请输入low,high:";
        cin>>low>>high;
    
        int data[(high-low)/2];
        // 调用处理函数
        len = chuLi(data, low, high);
        // 输出查看
    
        for(int i=0; i<len; i++) {
            cout<<data[i]<<ends;
        }
    }
    
    // 处理函数实现
    int chuLi(int data[], int low, int high) {
        int len=0;
    
        for(int i=low; i<=high; i++) {
            if((i%7==0 || i%11==0) && !(i%7==0 && i%11==0)) {
                data[len++] = i;
            }
        }
    
        return len;
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    运行结果:

    在这里插入图片描述

    29. 处理高于平均数的学生

    问题
    在这里插入图片描述

    答案

    #include 
    
    using namespace std;
    
    typedef struct stu{
        string sno;
        int score;
    } stu;
    
    // 处理函数声明
    int chuli(stu data[],int n, stu data_t[]);
    
    int main() {
        stu data[5] = {
            {"dsada",25},
            {"dfddf",56},
            {"bgbx",85},
            {"dbgssa",46},
            {"dvsd",77}
        };
    
        stu data_t[5];
    
        int sum;
    
        // 调用处理函数
        sum = chuli(data,sizeof(data)/sizeof(data[0]), data_t);
    
        // 输出查看
        for(int i=0; i<sum; i++) {
            cout<<data_t[i].sno<<":"<<data_t[i].score<<endl;
        }
    }
    
    // 处理函数实现
    int chuli(stu data[],int n, stu data_t[]) {
    
        // 获取到平均数
        float avg=0;
    
        int len=0;// 统计
    
        for(int i;i<n; i++){
            avg+=data[i].score;
        }
    
        avg/=n;
    
    
        // 统计大于平均分的
        for(int i=0; i<n; i++) {
            if(data[i].score>avg){
                data_t[len++] = data[i];
            }
        }
    
        return len;
    
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61

    运行结果:

    在这里插入图片描述

    30. 将前导*移到尾部

    问题
    在这里插入图片描述

    答案

    #include 
    #include 
    
    using namespace std;
    
    // 我们采用反转的思想
    void fanzhuan(char c[], int low, int high);
    
    int main() {
        char c[15];
        cout<<"请输入一组字符";
        cin>>c;
    
        int num=0;
    
        // 统计前面星星数量
        while(c[num++]=='*');
        num--;
    
        // 调用反转函数
        // 1.整体反转(传下标)
        fanzhuan(c,0,strlen(c));
        // 前部分反转
        fanzhuan(c,0,strlen(c)-num);
        // 后部分反转
        fanzhuan(c, strlen(c)-num, strlen(c));
    
        // 输出查看
        cout<<c;
    }
    
    
    // 反转函数实现
    void fanzhuan(char c[], int low, int high) {
        int mid = (high-low)/2;
    
        for(int i=0; i<mid; i++) {
            char t = c[low+i];
            c[low+i] = c[high-i-1];
            c[high-i-1] = t;
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43

    运行结果:
    在这里插入图片描述

  • 相关阅读:
    14天阅读挑战赛(趣学算法)笔记2
    钉钉群内自定义机器人发送消息功能实现
    想比较全面地学习 SAP XXX,能指导下从哪儿开始学习吗?
    Jenkins介绍
    民族民俗景区3d智慧旅游系统提升游客旅游体验和质量
    最大正方形的边长长度问题解法
    前端设计模式之【中介模式】
    微信开发者工具 如何设置代码的缩进
    C_C++在linux和windows下文件操作比较总结
    Mybatis初级的概念和注解
  • 原文地址:https://blog.csdn.net/Seven597/article/details/127504472