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

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

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   72   5   83   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   72   5   83   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.hqwc.cn/news/256091.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Docker】Swarm的ingress网络

Docker Swarm Ingress网络是Docker集群中的一种网络模式&#xff0c;它允许在Swarm集群中运行的服务通过一个公共的入口点进行访问。Ingress网络将外部流量路由到Swarm集群中的适当服务&#xff0c;并提供负载均衡和服务发现功能。 在Docker Swarm中&#xff0c;Ingress网络使…

如何使用HadSky搭配内网穿透工具搭建个人论坛并发布至公网随时随地可访问

文章目录 前言1. 网站搭建1.1 网页下载和安装1.2 网页测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2 Cpolar稳定隧道&#xff08;云端设置&#xff09;2.3 Cpolar稳定隧道&#xff08;本地设置&#xff09;2.4 公网访问测试 总结 前言 经过多年的基础…

ORA-600 kcbzib_kcrsds_1一键恢复

一个19c库由于某种原因redo损坏强制打开库报ORA-600 kcbzib_kcrsds_1错误 SQL> startup mount pfile?/database/pfile.txt; ORACLE instance started. Total System Global Area 859830696 bytes Fixed Size 9034152 bytes Variable Size 5…

Android平板还能编程?Ubuntu本地安装code-server远程编程写代码

文章目录 1.ubuntu本地安装code-server2. 安装cpolar内网穿透3. 创建隧道映射本地端口4. 安卓平板测试访问5.固定域名公网地址6.结语 1.ubuntu本地安装code-server 准备一台虚拟机,Ubuntu或者centos都可以&#xff0c;这里以VMwhere ubuntu系统为例 下载code server服务,浏览器…

TCP通讯

第二十一章 网络通信 本章节主要讲解的是TCP和UDP两种通信方式它们都有着自己的优点和缺点 这两种通讯方式不通的地方就是TCP是一对一通信 UDP是一对多的通信方式 接下来会一一讲解 TCP通信 TCP通信方式呢 主要的通讯方式是一对一的通讯方式&#xff0c;也有着优点和缺点…

Spring AOP从入门到精通

目录 1. AOP的演化过程 1. 代理模式 2. 动态代理 2.1 JDK动态代理 2.2 Cglib动态代理 3. Spring模式 3.1 ProxyFactory 3.2 ProxyFactoryBean 3.3 AbstractAutoProxyCreator 2. Spring AOP抽象 1. 核心术语 1.1 连接点(JoinPoint) 1.2 切点(Pointcut) 1.3 增强(Ad…

使用Java网络编程,窗口,线程,IO,内部类等实现多人在线聊天1.0

1.整体思路 思路图 整体思路如上: 涉及知识点:线程网络编程集合IO等 TCP 协议 2.代码实现过程 服务端 import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import jav…

【C语言快速学习基础篇】之一基础类型、进制转换、数据位宽

文章目录 一、基础类型(根据系统不同占用字节数会有变化)1.1、有符号整形1.2、无符号整形1.3、字符型1.4、浮点型1.5、布尔型 二、进制转换2.1、二进制2.2、八进制2.3、十进制2.4、十六进制2.5、N进制2.6、进制转换关系对应表 三、数据位宽3.1、位3.2、字节3.3、字3.4、双字3.5…

【云原生-K8s】镜像漏洞安全扫描工具Trivy部署及使用

基础介绍基础描述Trivy特点 部署在线下载百度网盘下载安装 使用扫描nginx镜像扫描结果解析json格式输出 总结 基础介绍 基础描述 Trivy是一个开源的容器镜像漏洞扫描器&#xff0c;可以扫描常见的操作系统和应用程序依赖项的漏洞。它可以与Docker和Kubernetes集成&#xff0c;…

Go 语言中的函数调用。

更好的观看体验&#xff0c;请点击——函数调用 | YinKais Blog 本文将从函数的调用惯例和参数传递方法两个方面分别介绍函数执行的过程。 1、调用惯例 对于不同的编程语言&#xff0c; 它们在调用函数的时候往往都使用相同的语法&#xff1a; somefunction(arg0, arg1) 虽…

创建第一个 Flink 项目

一、运行环境介绍 Flink执行环境主要分为本地环境和集群环境&#xff0c;本地环境主要为了方便用户编写和调试代码使用&#xff0c;而集群环境则被用于正式环境中&#xff0c;可以借助Hadoop Yarn、k8s或Mesos等不同的资源管理器部署自己的应用。 环境依赖&#xff1a; 【1】…