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.mzph.cn/news/196981.shtml

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

相关文章

笔记66:自注意力和位置编码

本地笔记地址&#xff1a;D:\work_file\&#xff08;4&#xff09;DeepLearning_Learning\03_个人笔记\3.循环神经网络\第10章&#xff1a;动手学深度学习~注意力机制 a a a a a a a a a a a a a a a a a a a

paddleocr文本检测改进变迁

数据增强&#xff1a; BDA(Base Data Augmentation)&#xff1a;色调变换&#xff0c;透明度变换&#xff0c;旋转&#xff0c;背景模糊&#xff0c;饱和度变换。 图像变换类&#xff1a;AutoAugment&#xff0c;RandAugment 图像裁剪类&#xff1a;CutOut、RandErasing、Hi…

万字长文带你搞定MMUTLBTWU

最近一直在学习内存管理&#xff0c;也知道MMU是管理内存的映射的逻辑IP&#xff0c;还知道里面有个TLB。 今天刚刚好看到了几篇前辈的文章&#xff0c;很是不错&#xff0c;于是这里来一起学习一下吧。 PART 一&#xff1a;MMU 架构篇 MMU&#xff08;Memory Management Uni…

人工智能-A*算法-八数码问题

一&#xff0c;A*算法设计思想 A*算法&#xff08;A-star&#xff09;是一种寻路算法&#xff0c;主要用于游戏、机器人等领域。 它的设计思想是将最短路径搜索问题转化为一个优化问题&#xff0c;通过计算每个节点的评分&#xff08;f(n) g(n) h(n)&#xff09;来寻找最优…

Win7 旗舰版打开Rustdesk软件提示无法启动程序 ,计算机中丢失api-ms-win-shcore-scaling-|1-1-1.dll

环境: Win7 旗舰版 64位 Rustdesk1.19自编译客户端 问题描述: Win7 旗舰版打开Rustdesk软件提示无法启动程序 ,计算机中丢失api-ms-win-shcore-scaling-|1-1-1.dll "api-ms-win-shcore-scaling-|1-1-1.dll" 是一个系统动态链接库文件,它是Windows操作系统的一…

Ubuntu20.04/Linux中常用软件的安装

文章目录 一、安裝与卸载微信二、安裝与卸载QQ三、安装Chrome浏览器并加入apt更新四、安裝VScode4.1 安装常用插件4.2 减小Ipch缓存&#xff1a; 五、安装代码对比工具Meld六、安裝WPS七、安装PDF阅读器Foxit Reader八、安装文献管理软件Zotero九、安装有道云笔记十、安装远程控…

python pyaudio对音频进行端点检测,检测出说话区间

python pyaudio对音频进行端点检测&#xff0c;检测出说话区间 主要采用过零率和语音能量来进行检测&#xff0c;并设置双阈值。 代码如下&#xff1a; # -*- coding: utf-8 -*- import wave import os import matplotlib.pyplot as plt import numpy as np# 判断是否变号 de…

MysqlCluster集群部署

1.引言 1.1目的 部署MysqlCluster集群环境 1.2 MySQL集群Cluster原理 1. 数据分片 MySQL集群Cluster将数据分成多个片段&#xff0c;每个片段存储在不同的服务器上。这样可以将数据负载分散到多个服务器上&#xff0c;提高系统的性能和可扩展性。 2. 数据同步 MySQL集群…

layui+ssm实现数据表格双击编辑更新数据

layui实现数据表格双击编辑数据更新 在使用layui加载后端数据请求时&#xff0c;对数据选项框进行双击即可实现数据的输入编辑更改 代码块 var form layui.form, table layui.table,layer parent.layer undefined ? layui.layer : parent.layer,laypage layui.laypag…

ElasticSearch学习笔记(一)

计算机软件的学习&#xff0c;最重要的是举一反三&#xff0c;只要大胆尝试&#xff0c;认真验证自己的想法就能收到事办功倍的效果。在开始之前可以看看别人的教程做个快速的入门&#xff0c;然后去官方网站看看官方的教程&#xff0c;有中文教程固然是好&#xff0c;没有中文…

备忘录不小心删了怎么办?如何找回我的备忘录?

如果你的记性不太好&#xff0c;或者每天需要记住、完成的事情很多&#xff0c;那么养成随手记事的好习惯是非常有必要的。因为手机是每个成年人都会随身携带的电子设备&#xff0c;所以直接在手机上记录事情比较简单、便捷。而手机备忘录、便签、笔记等工具类软件&#xff0c;…

简单的界面与数据分离的架构

草图绘制于2021年2月19日 当时用到了&#xff1a;qt的子项目、delegate、view和widget的关系&#xff0c;有感而写的小备忘&#xff0c;2022年底考的软件设计师里面的设计模式虽然可能早已包含&#xff0c;但自己也得有自己啊&#xff0c;要把自己哪怕不成熟的东西也记录下来&…

HDFS客户端及API操作实验

实验二 HDFS客户端及API操作 实验目的&#xff1a; 1.掌握HDFS的客户端操作&#xff0c;包括上传文件、下载文件、重命名、查看目录等&#xff1b; 2.掌握HDFS的Java API使用&#xff0c;能够利用Java API实现上传、下载等常用操作&#xff1b; 实验内容&#xff1a; HDF…

fastadmin权限树。树形下拉框

fastadmin 笔记 权限树 在构造方法中编写相应的代码 值得一提的是&#xff0c;你的表必须有 id 字段以及 pid 字段。 // 必须将结果集转换为数组$ruleList \think\Db::name("state_list")->field(createtime,updatetime, true)->order(id ASC)->select();…

FTP服务文件上传失败,错误码553的排故过程

本文主要记录文件上传失败&#xff0c;错误码553的排故过程。 1 背景 树莓派通过FTP给嵌入式板卡传输文件&#xff0c;好几套设备&#xff0c;发现有的能传输成功&#xff0c;有的传输不成功。树莓派和嵌入式板卡都一样的&#xff0c;出现问题时感觉很懵。 2 逐项对比 2.1 自…

AF自动登录应用--实现无源码系统单点登录

在企业信息化的进程中&#xff0c;许多组织拥有一系列的老应用系统&#xff0c;这些系统在多年的运行中积累了大量的业务数据和流程。然而&#xff0c;这些老应用系统往往没有设计或实现单点登录&#xff08;SSO&#xff09;功能&#xff0c;用户需要在不同系统之间频繁输入账号…

C语言--每日选择题--Day35

第一题 1. 有如下定义&#xff1a;(x y) % 2 (int) a / (int) b 的值是&#xff08;&#xff09; int x 3; int y 2;float a 2.5; float b 3.5; A&#xff1a;0 B&#xff1a;2 C&#xff1a;1.5 D&#xff1a;1 答案及解析 D 本题是考查强制类型转换和操作符优先级 操作…

Figma安装指南:新手入门必看!

如果您想下载Figma客户端&#xff0c;可以直接在Figma官网Products>Downloads页面下载。 如果你不能访问Figma的官方网站&#xff0c;即使下载到客户端&#xff0c;你的网络环境也不能正常使用。 因为Figma的服务器在国外&#xff0c;在国内访问时经常会遇到网络不稳定的情…

SAP 生产订单状态控制

对于生产订单状态&#xff0c;我们经常会对状态进行控制&#xff0c;比如说已领料报工的生产订单就不允许做重读主数据 或者是部分入库不允许做TECO等等 可以通过一个标准的事物代码进行对生产订单状态的一个控制 Tcode&#xff1a;BS22 选择你需要你控制的订单的状态编号双击…

西南科技大学模拟电子技术实验六(BJT电压串联负反馈放大电路)预习报告

一、计算/设计过程 BJT电压串联负反馈放大电路图1-1-1-1为BJT电压串联负反馈放大实验电路,若需稳定输出电压,减小从信号源所取电流,可引入电压串联负反馈闭合开关。 图1-1-1-1 理论算法公式(1)闭环电压放大倍数 (2)反馈系数 (3)输入电阻 (4)输出电阻 计算过程。开环…