2023-2024-1-高级语言程序设计-第2次月考编程题

news2024/9/17 8:35:17

注:此前已发布过的题解不再发布(原题请在下面位置进行搜索)。

7-1-2 排序(算法任意)

本题要求将给定的n个整数从大到小排序后输出(可使用任意排序算法)。

输入格式:

输入第一行给出一个不超过10的正整数n。第二行给出n个整数,其间以空格分隔。

输出格式:

在一行中输出从大到小有序的数列,相邻数字间有一个空格,行末不得有多余空格。

输入样例:

在这里给出一组输入。例如:

6
4 1 3 5 6 2

输出样例:

在这里给出相应的输出。例如:

6 5 4 3 2 1
#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,a[10],i;
    cin>>n;
    for(i=0;i<n;i++)cin>>a[i];
    sort(a,a+n);
    for(i=n-1;i>=0;i--){
        cout<<a[i];
        if(i)cout<<' ';
    }
    return 0;
}

 7-1-4 从小到大排序

本题要求将给定的n个整数从小到大排序后输出。

输入格式:

输入第一行给出一个不超过10的正整数n。第二行给出n个整数,其间以空格分隔。

输出格式:

在一行中输出从小到大有序的数列,相邻数字间有一个空格,行末也有1个空格。

输入样例:

4
5 1 7 6

输出样例:

1 5 6 7 
#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,i,a[10];
    cin>>n;
    for(i=0;i<n;i++)
        cin>>a[i];
    sort(a,a+n);
    for(i=0;i<n;i++)cout<<a[i]<<' ';
    return 0;
}

 7-2-6 矩阵转置

将一个3×3矩阵转置(即行和列互换)。

输入格式:

在一行中输入9个小于100的整数,其间各以一个空格间隔。

输出格式:

输出3行3列的二维数组,每个数据输出占4列。

输入样例:

1 2 3 4 5 6 7 8 9

输出样例:

   1   4   7
   2   5   8
   3   6   9
#include<bits/stdc++.h>
using namespace std;
int main(){
    int i,j,a[10],k;
    for(i=0;i<9;i++)
        cin>>a[i];
    for(i=0;i<3;i++){
        k=i;
        for(j=0;j<3;j++){
             printf("%4d",a[k]);
            k+=3;
        }
        cout<<endl;
    }
    return 0;
}

 

7-2-7 方阵右上三角元素和

求一个5×5数组右上三角(含对角线)元素的和。

输入格式:

输入5行5列的方阵,每行第一个数前没有空格,每行的每个数之间各有一个空格。

输出格式:

直接输出结果。没有其它任何附加字符。

输入样例:

1 2 4 5 8
1 4 7 4 1
1 2 3 6 9
5 6 9 8 4
7 5 3 6 8

输出样例:

74
#include<bits/stdc++.h>
using namespace std;
int main(){
    int i,j,x,s=0;
    for(i=0;i<5;i++){
        for(j=0;j<5;j++){
          cin>>x;
            if(j>=i)
            s+=x;
        }
    }cout<<s;
    return 0;
}

 7-2-8 求二维数组除了四条边框之外的元素的和

求5×5数组除了四条边框之外的元素的和。

输入格式:

输入5行5列的方阵,每行第一个数前没有空格,每行的每个数之间各有一个空格。

输出格式:

直接输出结果。没有其它任何附加字符。。

输入样例:

1 1 1 1 1
1 2 3 4 1
1 4 5 1 2
8 4 1 1 1
2 1 1 1 1

输出样例:

25
#include<bits/stdc++.h>
using namespace std;
int main(){
    int i,j,x,s=0;
    for(i=0;i<5;i++){
        for(j=0;j<5;j++){
          cin>>x;
           if(i!=0&&i!=4&&j!=0&&j!=4)
                s+=x;
        }
    }cout<<s;
    return 0;
}

 

7-2-10 方阵转置

本题要求编写程序,将一个给定的 n×n 方阵转置(行列互换)后输出。

输入格式:

输入第一行给出一个正整数n(1≤n≤6)。随后n行,每行给出n个整数,其间以空格分隔。

输出格式:

输出转置后的n行n列矩阵,每个数占4位。

输入样例:

3
1 2 3
4 5 6
7 8 9

输出样例:

   1   4   7
   2   5   8
   3   6   9
#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,i,j,a[10][10];
    cin>>n;
    for(i=1;i<=n;i++){
        for(j=1;j<=n;j++)
            cin>>a[i][j];
    }
    for(j=1;j<=n;j++){
        for(i=1;i<=n;i++){
           printf("%4d",a[i][j]);
        }
        cout<<endl;
    }
return 0;
}

 7-2-11 求矩阵各行元素的所有正数的和

本题要求编写程序,求一个给定的m×n矩阵各行元素的所有正数的和。

输入格式:

输入第一行给出两个正整数m和n(1≤m,n≤10)。随后m行,每行给出n个整数,其间以空格分隔。

输出格式:

每行输出对应矩阵行元素的所有正数和。

输入样例:

例如:

3 4
-3 1 5 2
-1 -4 6 7
1 0 2 3

输出样例:

8
13
6
#include<bits/stdc++.h>
using namespace std;
int main(){
      int m,n,i,j,a[15][15];
    cin>>m>>n;
    for(i=1;i<=m;i++){
        int s=0;
        for(j=1;j<=n;j++){
            cin>>a[i][j];
            if(a[i][j]>0)
            s+=a[i][j];
        }
        cout<<s<<endl;
    }
return 0;
}

 

7-2-12 求矩阵各行元素的所有负数的和

本题要求编写程序,求一个给定的m×n矩阵各行元素的所有负数的和。

输入格式:

输入第一行给出两个正整数m和n(1≤m,n≤10)。随后m行,每行给出n个整数,其间以空格分隔。

输出格式:

每行输出对应矩阵行元素的所有负数和。

输入样例:

例如:

3 4
-3 1 5 2
-1 -4 6 7
1 0 -2 -3

输出样例:

-3
-5
-5
#include<bits/stdc++.h>
using namespace std;
int main(){
      int m,n,i,j,a[15][15];
    cin>>m>>n;
    for(i=1;i<=m;i++){
        int s=0;
        for(j=1;j<=n;j++){
            cin>>a[i][j];
            if(a[i][j]<0)
            s+=a[i][j];
        }
        cout<<s<<endl;
    }
return 0;
}

 7-2-13 方阵对角线元素求和及计数

对输入的一个N*N的方阵,求其两条对角线上的元素之和及非零元素的数量。

输入格式:

第一行输入一个不超过20的正整数N

在接下来的N行中,依次输入方阵的每一行的N个元素,方阵元素为绝对值不超过1000的整数,中间以空格间隔。

输出格式:

在一行中以sum = <s>, count = <c>.的格式输出方阵两对角线上的元素之和以及非零元素的数量,其中<s><c>分别表示元素之和非零元素数量,输出时以实际数量替换。

提示:(1)两条对角线的交叉元素不重复计算;(2)严格按规定格式输出,不得随意增删空格、换行等字符。

输入样例1:

4
1 2 3 4
1 2 3 4
0 1 2 3
0 1 2 3

输出样例1:

sum = 16, count = 7.

输入样例2:

5
1 2 3 2 1
1 2 3 2 1
1 2 3 2 1
1 2 3 2 1
1 2 3 2 1

输出样例:

sum = 15, count = 9.
#include<bits/stdc++.h>
using namespace std;
int main(){
      int n,i,j,a[20][20],s=0,k=0;
    cin>>n;
    for(i=0;i<n;i++){
        for(j=0;j<n;j++){
            cin>>a[i][j];
            if(i==j||i+j==n-1)
            {s+=a[i][j];
            if(a[i][j])k++;
            }
            
        }
    }
 printf("sum = %d, count = %d.",s,k);
return 0;
}

 

7-2-14 方阵左下三角元素的和

输入一个4×4数组,求一个4×4数组左下三角(包括主对角线)元素的和。

输入格式:

输入4行4列的方阵,每行第一个数前没有空格,每行的每个数之间各有一个空格。

输出格式:

直接输出左下三角(包括主对角线)元素的和。没有其它任何附加字符

输入样例:

1 2 3 4
5 6 7 8
9 1 2 3
4 5 6 7

输出样例:

46
#include<bits/stdc++.h>
using namespace std;
int main(){
    int i,j,x,s=0;
    for(i=0;i<4;i++){
        for(j=0;j<4;j++){
          cin>>x;
           if(i>=j)
                s+=x;
        }
    }cout<<s;
    return 0;
}

 

7-2-15 方阵转置

输入一个n×n的方阵,把其转置并输出。

输入格式:

测试数据有多组,处理到文件尾。对于每组测试,第一行输入一个整数n(n≤10),接下来的n行每行输入n个不超过2位的整数。

输出格式:

对于每组测试,输出这n×n矩阵的转置方阵,每行的每两个数据之间留一个空格。

输入样例:

5
5 51 96 80 45
51 57 77 45 47
72 45 58 83 21
0 28 42 72 42
91 61 7 73 66

输出样例:

5 51 72 0 91
51 57 45 28 61
96 77 58 42 7
80 45 83 72 73
45 47 21 42 66
#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,i,j,a[11][11];
    while(cin>>n){
    for(i=1;i<=n;i++){
        for(j=1;j<=n;j++)
            cin>>a[i][j];
    }
    for(j=1;j<=n;j++){
        for(i=1;i<=n;i++){
            if(i!=1)cout<<' ';
           printf("%d",a[i][j]);
        }
        cout<<endl;
    }}
return 0;
}

 7-2-16 判断对称方阵

输入一个整数n及一个n阶方阵,判断该方阵是否以主对角线对称,输出YesNo

输入格式:

首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组数据的第一行输入一个整数n(1<n<100),接下来输入n阶方阵(共n行,每行n个整数)。

输出格式:

对于每组测试,若该方阵以主对角线对称,则输出Yes,否则输出No

输入样例:

1
4
1 2 3 4
2 9 4 5
3 4 8 6
4 5 6 7

输出样例:

Yes
#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,i,j,a[101][101],t;
    cin>>t;
    while(t--){
        cin>>n;
    for(i=1;i<=n;i++){
        for(j=1;j<=n;j++)
            cin>>a[i][j];
    }
        int k=0;
    for(j=1;j<=n;j++){
        for(i=1;i<=n;i++){
            if(a[i][j]!=a[j][i])k=1;
        }
    }
    if(k)cout<<"No\n";
    else cout<<"Yes\n";
    }
return 0;
}

 7-2-17 求矩阵中的最大小值

输入一个n×m的整数矩阵(n<=10,m<=10),然后输出其中的最大值、最小值,并输出这两个值的下标。

输入格式:

输入矩阵的行数n和列数m(n<=10,m<=10),然后输入所有矩阵中的数据。

输出格式:

第一行输出n×m的数组中的最大值及其下标。每两项之间一个空格。 第二行输出n×m的数组中的最小值及其下标。每两项之间一个空格。 (如果有相同的最大的数,要求输出行列最小,行优先)

输入样例:

在这里给出一组输入。例如:

3 4
65 77 21 88
23 99 18 54
19 82 73 99

输出样例:

在这里给出相应的输出。例如:

max=99 row=1 col=1
min=18 row=1 col=2

 

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,m,i,j,a[101][101];
        cin>>n>>m;
    for(i=1;i<=n;i++){
        for(j=1;j<=m;j++)
            cin>>a[i][j];
    }
    int max=a[1][1],x1=1,y1=1,min=a[1][1],x2=1,y2=1;
    for(j=1;j<=m;j++){
        for(i=1;i<=n;i++){
            if(a[i][j]>max){max=a[i][j];x1=i;y1=j;}
            if(a[i][j]<min){min=a[i][j];x2=i;y2=j;}
        }
    }
 printf("max=%d row=%d col=%d\nmin=%d row=%d col=%d",max,x1-1,y1-1,min,x2-1,y2-1);
return 0;
}

 7-2-18 矩阵加法

首先从键盘上两个矩阵的行数n和列数m,然后输入两个矩阵A和B的元素值,最后求出两个矩阵的和C并输出其元素值。

输入格式:

第1行包含两个整数n和m,表示矩阵的行数和列数。
接下来n行,每行m个整数,表示矩阵A的元素值。
再接下来n行,每行m个整数,表示矩阵B的元素值。
相邻两个整数之间用空格分隔。

输出格式:

n行m个数,表示矩阵C的元素值。每行的两个数之间用一个空格分隔。

输入样例:

3 3
11 12 13
21 22 23
31 32 33
10 20 30
11 21 31
12 22 32

输出样例:

21 32 43 
32 43 54 
43 54 65 
#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,m,i,j,a[101][101],b[101][101];
        cin>>n>>m;
    for(i=1;i<=n;i++){
        for(j=1;j<=m;j++)
            cin>>a[i][j];
    }
    for(i=1;i<=n;i++){
        for(j=1;j<=m;j++)
            cin>>b[i][j];
    }
    for(i=1;i<=n;i++){
        for(j=1;j<=m;j++)
        {
            cout<<a[i][j]+b[i][j]<<' ';
        }
        cout<<endl;
    }
return 0;
}

 7-3-1 找画笔

豆豆对数字的执着,让他在理科领域游刃有余,但他近乎疯狂的投入也使父母有些担心,为了让孩子能够全面发展,决定拓宽他的学习领域。正好家旁边有个绘画培训中心,父母就给豆豆报了名。学习绘画的第一天就让豆豆产生了浓厚的兴趣,还主动要求买了很多很多的画笔。画笔有多种颜色,豆豆有一个习惯就是同种颜色的画笔就买两支,一支备用,这样就总共攒了 N 支画笔(N 是偶数且 1<N<100000)。

可是数字的敏感无孔不入,豆豆脑里蹦出了一个奇怪的问题:如果蒙上眼任意拿走一支画笔,分析剩下的 N-1 支画笔就能找出拿走了哪种颜色,你能回答他吗?

输入格式:

第一行一个整数N(N 是偶数且 1<N<100000),表示剩下的画笔个数就是题目描述中的 N-1。

第二行 N-1 个用空格隔开的正整数 Ai(0<Ai<100000),表示剩下的画笔的颜色编号。

注意:数据保证有一个画笔的颜色编号出现了一次,其余的都出现了两次。

输出格式:

一个整数,表示拿走的画笔的颜色编号。

输入样例:

10
1 1 9 11 5 3 11 5 9 

输出样例:

3
#include<bits/stdc++.h>
using namespace std;
int main(){
     int n,i,a[100005],b[100005]={0};
    cin>>n;
    for(i=1;i<n;i++){
        cin>>a[i];
        b[a[i]]++;
    }
    for(i=1;i<n;i++){
        if(b[a[i]]==1)cout<<a[i];
    }
return 0;
}

 

7-3-2 期末分数排序

考试结束了,全班同学的分数都出来了。老师需要对分数做一次排序,看看从高到低,分数的排列是怎样的。

输入格式:

第一行是一个n,表示班级同学的人数,1<=n<=500000。
第二行开始有n个分数,0<=分数<=100,分数都是整数,没有零点五分。

输出格式:

输出排序后的分数,按照从大到小排列,相同的分数排在一起,每两个分数之间间隔一个空格。

输入样例:

10
0 60 73 60 82 90 100 18 55 84 

输出样例:

100 90 84 82 73 60 60 55 18 0
#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,a[500005],i;
    cin>>n;
    for(i=0;i<n;i++){
        cin>>a[i];
    }
    sort(a,a+n);
    for(i=n-1;i>=0;i--){
        cout<<a[i];
        if(i>=1){
            cout<<" ";
        }
    }
    return 0;
}

 

7-3-4 分两列

一列纵队在上课的时候会造成很大的麻烦,体育老师常用的办法就是让同学们1、2报数,然后报2的同学向后退一步。现在我们已经知道一列纵队时候同学的学号分布,那么你能输出分成两列后同学的学号么?

输入格式:

第一行包括一个数n,表示班级里有n位学生,班级人数至少是1,不超过100。第二行包括n个数,表示一列纵队时每个同学的学号。

输出格式:

请按顺序输出分开两列后两列每位同学的学号,用空格隔开。每列同学占两行,报1的同学在第1行。

输入样例:

5
2 1 3 5 4

输出样例:

2 3 4
1 5
#include<bits/stdc++.h>
using namespace std;
int main(){
     int n,i,a[105],b[105],j=0,k=0,x;
    cin>>n;
    for(i=1;i<=n;i++){
        cin>>x;
        if(i%2==1)a[j++]=x;
        else b[k++]=x;
    }
    for(i=0;i<j;i++){
        if(i)cout<<' ';
        cout<<a[i];
    }
    cout<<endl;
     for(i=0;i<k;i++){
        if(i)cout<<' ';
        cout<<b[i];
    }cout<<endl;//测试点1,必须 换行
    return 0;
} 

 7-3-5 整理队伍

体育课上,教数学的体育老师怎么看这个队伍都不大对劲,于是对队伍进行了调整。张三,你和李四换一下位置......经过几次调整,队伍终于变得有条不紊了。

输入格式:

输入第一行包括一个整数n,表示班级里总共有n个人(1<=n<=100);第二行包括n个整数,表示同学们原来的顺序。第三行包括一个数m(m>=0),表示体育老师总共进行了m次调换;下面包括m行,每行包括两个数x,y,表示x位置的同学和y位置的同学调换位置。

输出格式:

输出调换之后的队伍,每两个同学的编号之间有一个空格。

输入样例:

5 
1 2 3 4 5 
3 
1 2 
1 5
3 4 

输出样例:

5 1 4 3 2
#include<bits/stdc++.h>
using namespace std;
int main(){
     int n,m,i,a[105];
    cin>>n;
    for(i=1;i<=n;i++)
        cin>>a[i];
    cin>>m;
    int x,y,t;
    while(m--){
        cin>>x>>y;
        t=a[x];
        a[x]=a[y];
        a[y]=t;
    }
    for(i=1;i<=n;i++){
        if(i!=1)cout<<" ";
        cout<<a[i];
    }
    return 0;
} 

 

7-3-7 结伴同行去秋游

可以去秋游啦!同学们别提多高兴了!老师说,单独行动有点危险,那么我们还是结伴同行吧。结伴的规则是这样的:排在最前的一个人和排在最后的那个人结成同伴,排在第2个的与排在倒数第2个的结成同伴......依次类推,2个一组成同伴。好,请马上排出来吧!老师语音一落,同学们“唰唰唰”很快结伴好了,准备出发喽!

输入格式:

第一行是一个整数n,表明n个同学。(2<=n<=50,n为偶数) 。
第二行n个整数表明n个同学的学号,学号之间有一个空格。

输出格式:

共n/2行,每行二个整数,表明结伴同学的学号,两个学号之间有一个空格。

输入样例:

6
5 6 4 12 3 2

输出样例:

5 2
6 3
4 12
#include<bits/stdc++.h>
using namespace std;
int main(){
      int a[105],i,n,x;
    cin>>n;
    for(i=1;i<=n;i++)cin>>a[i];
    for(i=1;i<=n/2;i++){
        cout<<a[i]<<' '<<a[n-i+1]<<endl;
    }
    return 0;
}

 7-3-8 摘苹果

陶陶家的院子里有一棵苹果树,每到秋天树上就会结出很多苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。

现在已知每个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。

输入格式:

包括三行数据。
第一行是一个整数n,表示有n个苹果。苹果至少有一个,不超过1000个。
第二行包含n个100到200之间(包括100和200)的整数(以厘米为单位)分别表示这n个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。
第三行是一个100到120之间(包含100和120)的整数(以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。

输出格式:

一个整数,表示陶陶能够摘到的苹果的数目。

输入样例:

10
100 200 150 140 129 134 167 198 200 111
110

输出样例:

5
#include<bits/stdc++.h>
using namespace std;
int main(){
      int a[1005],i,n,x,k=0;
    cin>>n;
    for(i=1;i<=n;i++)cin>>a[i];
    cin>>x;
    for(i=1;i<=n;i++){
        if(x+30>=a[i])k++;
    }cout<<k;
    return 0;
}

 

7-3-9 有重复的数据I

在一大堆数据中找出重复的是一件经常要做的事情。现在,我们要处理许多整数,在这些整数中,可能存在重复的数据。

你要写一个程序来做这件事情,读入数据,检查是否有重复的数据。如果有,输出“YES”这三个字母;如果没有,则输出“NO”。

输入格式:

你的程序首先会读到一个正整数n,1<=n<=100000。
然后是n个整数,这些整数的范围是[1,100000]。

输出格式:

如果这些整数中存在重复的,就输出:

YES

否则,就输出:

NO

输入样例:

5
1 2 3 1 4

输出样例:

YES
#include<bits/stdc++.h>
using namespace std;
int main(){
      int a[100005],i,n,k=0,b[100005]={0};
    cin>>n;
    for(i=1;i<=n;i++){cin>>a[i];b[a[i]]++;}
    for(i=1;i<=n;i++){
        if(b[a[i]]>1){k=1;break;}
    }
    if(k)cout<<"YES";
    else cout<<"NO";
    return 0;
}

 

7-3-11 排好队了吗?

本题要求编写程序,将输入的n个整数存入数组a中,判断它们是否按从大到小的次序排列好了?

输入格式:

输入在第1行中给出一个正整数n(1≤n≤100),第2行输入n个整数,其间以空格分隔。题目保证数据不超过长整型整数的范围。

输出格式:

如果这n个整数是按照从大到小的次序排列的,则在一行中输出“Yes”,否则,在一行中输出“No”。

输入样例1:

6
1 3 6 40 12 50

输出样例1:

No

输入样例2:

5
10 8 8 3 1

输出样例2:

Yes
#include<bits/stdc++.h>
using namespace std;
int main(){
      int n,i,a[1005],k=0;
    cin>>n;
     for(i=0;i<n;i++)cin>>a[i];
    for(i=0;i<n;i++){
        if(a[i]<a[i+1]){k=1;break;}
    }
    if(k)cout<<"No";
    else cout<<"Yes";
    return 0;
}

 7-3-12 算算评委最终评分

演讲比赛中有n(n<=12)个评委打分,编程求某个选手最终得分(去掉一个最高分和一个最低分后其余分数的平均值)。

输入格式:

第一行输入评委人数n(n<=12),第二行输入n个分数,数据之间用空格分隔。

输出格式:

输出选手最后得分,保留两位小数。

输入样例:

10
8 9 7 6 7 8 9 8 9 7

输出样例:

7.88
#include<bits/stdc++.h>
using namespace std;
int main(){
      int n,i,a[1005];
    cin>>n;
     for(i=0;i<n;i++)cin>>a[i];
    int max=a[0],min=a[0];double s=0;
    for(i=0;i<n;i++){
         if(a[i]>max)max=a[i];
        if(a[i]<min)min=a[i];
        s+=a[i];
    }
    s=s-min-max;
    printf("%.2f",s/(n-2));
    return 0;
}

 

7-3-13 小燕爱偶数*

桌上有若干张卡片,每张卡片上都写着一个整数。小燕喜欢偶数,把写着的偶数卡片全都拿走了。请问她拿走了多少卡片?都写着什么数字?

设卡片总数为 n 张,其中偶数为 m 张。

输入格式

n(0<n<=10000)
n 个整数(以空格间隔)

输出格式

m(0≤m≤n)
m 个偶数(以空格间隔,顺序不变)

输入样例1
6
37 25 -12 90 -1 78
输出样例1
3
-12 90 78
输入样例2
5
37 25 -17 3 -1
输出样例2
0
#include<bits/stdc++.h>
using namespace std;
int main(){
      int n,x,j=0,i,a[10005];
    cin>>n;
     for(i=0;i<n;i++){
         cin>>x;
         if(x%2==0)a[j++]=x;
     }
    cout<<j<<endl;
    for(i=0;i<j;i++){
         if(i)cout<<' ';
        cout<<a[i];
    }
    return 0;
}

 

7-3-14 年龄与疾病

任务描述

某医院想统计一下某项疾病的获得与否与年龄是否有关,需要对以前的诊断记录进行整理,按照0-18、19-35、36-60、61以上(含61)四个年龄段统计的患病人数占总患病人数的比例。

输入格式:

共2行,第一行为过往病人的数目n(0 < n <= 100),第二行为每个病人患病时的年龄。

输出格式:

按照0-18、19-35、36-60、61以上(含61)四个年龄段输出该段患病人数占总患病人数的比例,以百分比的形式输出,精确到小数点后两位。每个年龄段占一行,共四行。

输入样例:

10
1 11 21 31 41 51 61 71 81 91

输出样例:

20.00%
20.00%
20.00%
40.00%

题目来源

注:该题目选自OpenJudge网站,在线网址:http://noi.openjudge.cn/ch0106/05/

#include<bits/stdc++.h>
using namespace std;
int main(){
      int n,x,i;double a=0,b=0,c=0,d=0;
    cin>>n;
     for(i=0;i<n;i++){
         cin>>x;
         if(x>=0&&x<=18)a++;
         if(x>18&&x<36)b++;
         if(x>35&&x<61)c++;
         if(x>60)d++;
     }
    printf("%.2f%%\n",a/n*100);
    printf("%.2f%%\n",b/n*100);
    printf("%.2f%%\n",c/n*100);
    printf("%.2f%%\n",d/n*100);
    return 0;
}

 

7-4-5 字符转换

本题要求提取一个字符串中的所有数字字符('0'……'9'),将其转换为一个整数输出。

输入格式:

输入在一行中给出一个不超过80个字符且以回车结束的字符串。

输出格式:

在一行中输出转换后的整数。题目保证输出不超过长整型范围。

输入样例:

free82jeep5

输出样例:

825
#include<bits/stdc++.h>
using namespace std;
int main(){
    string s;int i,x=0;
    getline(cin,s);
    for(i=0;i<s.size();i++){
        if(s[i]>='0'&&s[i]<='9')
        x=x*10+(s[i]-'0');
    }cout<<x;
    return 0;
}

 7-4-7 输出大写英文字母

本题要求编写程序,顺序输出给定字符串中所出现过的大写英文字母,每个字母只输出一遍;若无大写英文字母则输出“Not Found”。

输入格式:

输入为一个以回车结束的字符串(少于80个字符)。

输出格式:

按照输入的顺序在一行中输出所出现过的大写英文字母,每个字母只输出一遍。若无大写英文字母则输出“Not Found”。

输入样例1:

FONTNAME and FILENAME

输出样例1:

FONTAMEIL

输入样例2:

fontname and filrname

输出样例2:

Not Found
#include<bits/stdc++.h>
using namespace std;
int main(){
    string s;
    getline(cin,s);
     map<char,int>b;int k=0;
    for(int i=0;i<s.size();i++){
        if(s[i]>='A'&&s[i]<='Z'&&b[s[i]]==0){b[s[i]]=1;k=1;cout<<s[i];}
    }if(k==0)cout<<"Not Found";
    return 0;
}

 7-4-8 找最长的字符串

本题要求编写程序,针对输入的N个字符串,输出其中最长的字符串。

输入格式:

输入第一行给出正整数N;随后N行,每行给出一个长度小于80的非空字符串,其中不会出现换行符,空格,制表符。

输出格式:

在一行中用以下格式输出最长的字符串:

The longest is: 最长的字符串

如果字符串的长度相同,则输出先输入的字符串。

输入样例:

5
li
wang
zhang
jin
xiang

输出样例:

The longest is: zhang
#include<bits/stdc++.h>
using namespace std;
int main(){
    int n;
    cin>>n;
    getchar();
    string s[n],x;
     for(int i=0;i<n;i++)cin>>s[i];
     int y=s[0].size();x=s[0];
    for(int i=0;i<n;i++){
        if(s[i].size()>y){x=s[i];y=s[i].size();}
    }
    cout<<"The longest is: "<<x;
    return 0;
}

 

7-4-9 英文单词排序

本题要求编写程序,输入若干英文单词,对这些单词按长度从小到大排序后输出。如果长度相同,按照输入的顺序不变。

输入格式:

输入为若干英文单词,每行一个,以#作为输入结束标志。其中英文单词总数不超过20个,英文单词为长度小于10的仅由小写英文字母组成的字符串。

输出格式:

输出为排序后的结果,每个单词后面都额外输出一个空格。

输入样例:

blue
red
yellow
green
purple
#

输出样例:

red blue green yellow purple 
#include<bits/stdc++.h>
using namespace std;
int main(){
    int i,j,k;
    string s[25],x,t;
    while(cin>>x){
        if(x=="#")break;
        s[j++]=x;
    }
    for(i=0;i<j-1;i++){
        for(k=0;k<j-1-i;k++){
            if(s[k].size()>s[k+1].size()){
                t=s[k];
                s[k]=s[k+1];
                s[k+1]=t;
            }
        }
    }
    for(i=0;i<j;i++){
        cout<<s[i]<<' ';}
    return 0;
}

 7-4-10 字符串循环左移

输入一个字符串和一个非负整数N,要求将字符串循环左移N次。

输入格式:

输入在第1行中给出一个不超过100个字符长度的、以回车结束的非空字符串;第2行给出非负整数N。

输出格式:

在一行中输出循环左移N次后的字符串。

输入样例:

Hello World!
2

输出样例:

llo World!He
#include<bits/stdc++.h>
using namespace std;
int main(){
     string s;int n;
    getline(cin,s);
    cin>>n;
    n%=s.size();
    for(int i=n;i<s.size();i++)
        cout<<s[i];
    for(int i=0;i<n;i++)
         cout<<s[i];
    return 0;
}

 

7-4-14 检查密码

本题要求你帮助某网站的用户注册模块写一个密码合法性检查的小功能。该网站要求用户设置的密码必须由不少于6个字符组成,并且只能有英文字母、数字和小数点 .,还必须既有字母也有数字。

输入格式:

输入第一行给出一个正整数 N(≤ 100),随后 N 行,每行给出一个用户设置的密码,为不超过 80 个字符的非空字符串,以回车结束。

注意: 题目保证不存在只有小数点的输入。

输出格式:

对每个用户的密码,在一行中输出系统反馈信息,分以下5种:

  • 如果密码合法,输出Your password is wan mei.
  • 如果密码太短,不论合法与否,都输出Your password is tai duan le.
  • 如果密码长度合法,但存在不合法字符,则输出Your password is tai luan le.
  • 如果密码长度合法,但只有字母没有数字,则输出Your password needs shu zi.
  • 如果密码长度合法,但只有数字没有字母,则输出Your password needs zi mu.

输入样例:

5
123s
zheshi.wodepw
1234.5678
WanMei23333
pass*word.6

输出样例:

Your password is tai duan le.
Your password needs shu zi.
Your password needs zi mu.
Your password is wan mei.
Your password is tai luan le.
#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,a,b,c,d,f;string s;
    cin>>n;
    getchar();
        while(n--){
        a=0,b=0,c=0,d=0,f=0;
        getline(cin,s);
        if(s.size()>=6)d=1;
        for(int i=0;i<s.size();i++){
            if((s[i]>='A'&&s[i]<='Z')||(s[i]>='a'&&s[i]<='z'))a=1;
            else if(s[i]>='0'&&s[i]<='9')b=1;
            else if(s[i]=='.')c=1;
            else f=1;
        }
     if(d==0){cout<<"Your password is tai duan le.\n";continue;}
     if(f==1){cout<<"Your password is tai luan le.\n";continue;}
     if(a==1&&b==0)cout<<"Your password needs shu zi.\n";
     else if(a==0&&b==1)cout<<"Your password needs zi mu.\n";
     else if(a==1&&b==1)cout<<"Your password is wan mei.\n";
    }
    return 0;
} 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1293100.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WVP-RPO开源项目搭建实践

0.拉取代码 GitHub - 648540858/wvp-GB28181-pro: WEB VIDEO PLATFORM是一个基于GB28181-2016标准实现的网络视频平台&#xff0c;支持NAT穿透&#xff0c;支持海康、大华、宇视等品牌的IPC、NVR、DVR接入。支持国标级联&#xff0c;支持rtsp/rtmp等视频流转发到国标平台&…

详细解读电力DLT698.45-2017通信规约--正向有功总电能

建立连接请看这篇&#xff1a;详细解读DLT698.45-2017通信规约--预连接响应http://mp.weixin.qq.com/s?__bizMzA3NjAwMjQzMQ&mid2652026396&idx1&sna0a17f005d23136c922a7c381ddb7e75&chksm8481f30cb3f67a1a94e66db77e61fe73c22b1904fcdbb0144108e132b265e7b4…

dtaidistance笔记:dtw_ndim (高维时间序列之间的DTW)

1 数据 第一个维度是sequence的index&#xff0c;每一行是多个元素&#xff08;表示这一时刻的record&#xff09; from dtaidistance.dtw_ndim import *s1 np.array([[0, 0],[0, 1],[2, 1],[0, 1],[0, 0]], dtypenp.double) s2 np.array([[0, 0],[2, 1],[0, 1],[0, .5],[0…

水果党flstudio用什么midi键盘?哪个版本的FL Studio更适合我

好消息&#xff01;好消息&#xff01;特大好消息&#xff01; 水果党们&#xff01;终于有属于自己的专用MIDI键盘啦&#xff01; 万众期待的Novation FLKEY系列 正式出炉&#xff01; 话有点多话&#xff0c;先分享一份干货&#xff0c;尽快下载 FL Studio 21 Win-安装包&…

搜索推荐技术-爱奇艺搜索引擎技术

一、爱奇艺的搜索引擎框架示意图 即通过召回系统&#xff0c;即基于文本匹配的matching system&#xff0c;得到大量视频资源的候选集&#xff0c;经过粗排和精排&#xff0c;最后返回给用户。重点在于召回模块和排序模块。 二、召回模块 召回模块比较重要的是基础相关性&am…

Unity Meta Quest 一体机开发(九):【手势追踪】通过录制抓取手势实现自定义抓取姿势

文章目录 &#x1f4d5;教程说明&#x1f4d5;录制前的准备&#x1f4d5;第一种录制方法&#xff08;Hand Grab Pose Tool 场景&#xff09;⭐在运行模式中确认录制⭐保存录制的手势&#xff0c;将物体做成 Prefab⭐在编辑阶段调整抓取手势&#x1f50d;Fingers Freedom&#x…

leetcode 622. 设计循环链表

这道题讲了两种方法&#xff0c;第一个代码是用数组实现的&#xff0c;第二个是用链表实现的&#xff0c;希望对你们有帮助 &#xff08;最好在VS自己测试一遍&#xff0c;再放到 leetcode上哦&#xff09; 下面的是主函数&#xff08;作参考&#xff09;&#xff0c;静下心来…

第21章网络通信

Internet 提供了大量有用的信息&#xff0c;很少有人能在接触过Internet后拒绝它的诱惑。计算机网络实现了多台计算机间的互联&#xff0c;使得它们彼此之间能够进行数据交流。网络应用程序就是在已连接的不同计算机上运行的程序&#xff0c;这些程序借助于网络协议&#xff0c…

孩子都能学会的FPGA:第二十四课——用FPGA和格雷码实现异步FIFO

&#xff08;原创声明&#xff1a;该文是作者的原创&#xff0c;面向对象是FPGA入门者&#xff0c;后续会有进阶的高级教程。宗旨是让每个想做FPGA的人轻松入门&#xff0c;作者不光让大家知其然&#xff0c;还要让大家知其所以然&#xff01;每个工程作者都搭建了全自动化的仿…

加载离线镜像包:在线镜像离线为tar包、tar离线镜像包加载并根据imageId打tag

第一步&#xff1a;在线环境压缩离线镜像&#xff1a; 需要两个文件&#xff0c;第一个是脚本文件image_offline_load.sh脚本&#xff0c;第二个是image_list.txt 按行 存放需要离线的镜像名称 ./image_offline_load.sh save image_list.txt output.tar第二步&#xff1a;在离…

Nginx 简单入门操作

前言:之前的文章有些过就不罗嗦了。 Nginx 基础内容 是什么? Nginx 是一个轻量级的 HTTP 服务器,采用事件驱动、异步非阻塞处理方式的服务器,它具有极好的 IO 性能,常用于 HTTP服务器(包含动静分离)、正向代理、反向代理、负载均衡 等等. Nginx 和 Node.js 在很多方…

Docker快速理解及简介

docker快速理解及简介 1.Docker为什么出现&#xff1f; 迁移一个项目时&#xff0c;运行文档、配置环境、运行环境、运行依赖包、操作系统发行版、内核等都需要重新安装配置&#xff0c;比较麻烦。 2.Docker是什么&#xff1f; Docker是基于Go语言实现的云开源项目。解决了运行…

Altium Designer实用系列(五)----整理并导出PCB的BOM表

一、引言 最近老师安排了一个小的任务&#xff0c;就是把我们项目的两个电路板BOM整合一下&#xff0c;要注明元器件的耐温、耐压、购买渠道等等内容。    一开始我觉得这工作内容太简单了&#xff0c;两分钟的事。但是当我实际开始干的时候&#xff0c;才发现&#xff0c;好…

【react】动态页面转换成html文件下载,解决样式问题

需求 今天遇到一个需求&#xff0c;挺恶心人的&#xff0c;将一个在线文档页面&#xff0c;可以导出成为html页面查看。 看到网上有使用fs模块&#xff0c;通过react的ReactDOMServer.renderToStaticMarkup将组件转成html字符串&#xff0c;输出文件了。 但是我尝试了&#x…

CodeSys学习笔记

文章目录 1.运动控制的两种方式1.1.SM3_CNC1.2.SM3_Robotics 2.两种运动控制方式的速度、加速度等参数的控制2.1.SM3_CNC2.2.SM3_Robotics 3.CNC的M指令的使用&#xff08;实现&#xff09;逻辑。4.SM3_Robotics中的坐标系5.SM3_Robotics如何实现插补并连续执行&#xff1f; 记…

【Linux】diff命令使用

diff命令 是一个用于比较两个文件或目录之间差异的命令。它可以显示两个文件之间的行级别差异&#xff0c;并以易于阅读的格式输出结果。 著者 由保罗艾格特、迈克海特尔、大卫海耶斯、理查德史泰尔曼和Len Tower撰写。 diff命令 -Linux手册页 语法 diff [选项] [文件1]…

设备间的指令通信

指令通信的概念 要进行设备和设备之间的交流就需要通过串口发送数据进行交流 而串口发送简单的数据只需要传输介质 但是要发送复杂的数据就需要介质和传输的规则了 三种应用场景 比如在上位机和mcu之间 通过上位机管理控制器 从而控制电池 单片机和单片机之间 用户输入数据到…

MySQl int(1)、int(20) 的区别到底在哪里

MySQl int(1)、int(20) 的区别到底在哪里 常思一二&#xff0c;便得自然… int(1)数据类型介绍 在MySQL中&#xff0c;INT(1) 是一种定义整数类型的数据字段&#xff0c;其中的数字表示显示宽度而不是存储范围。具体说&#xff0c;INT(1) 中的数字 1 表示显示宽度&#xff0…

VividTalk创新AI语音匹配图片技术:照片+语音=逼真说话视频!

VividTalk是一个由南京大学、阿里巴巴、字节跳动和南开大学共同开发的项目工具。它通过先进的音频到3D网格映射技术和网格到视频的转换技术&#xff0c;实现了高质量、逼真的音频驱动的说话头像视频生成。这一创新技术使得只需提供一张人物的静态照片和一段语音录音&#xff0c…

KeePass开源密码管理器

KeePass开源密码管理器 KeePass 是一款免费的开源密码管理器&#xff0c;KeePass 将密码存储为一个数据库&#xff0c;而这个数据库由一个主密码或密码文件锁住&#xff0c;也就是说我们只需要记住一个主密码&#xff0c;或使用一个密码文件&#xff0c;就可以解开这个数据库&a…