青少年软件编程C++二级真题(202109)
输出 一行,如果它是 C 语言的合法标识符,则输出 yes,否则输出 no。给定一个 5*5 的矩阵,每行只有一个最大值,每列只有一个最小值,寻找这个矩阵的鞍点。鞍点指的是矩阵中的一个元素,它是所在行的最大值,并且是所在列的最小值。输入:第一行有两个整数,分别是学生的人数 n( 1≤n≤100)),和求第 k 名学生的 k(1≤k≤n)。在一次考试中,每个学生的成绩都不相同,现知道了每个学生的学号
一、满足条件的数的累加
现有n个整数,将其中个位数为k的数进行累加求和
输入
第一行一个整数n。第二行n个非负整数,以空格分割,每个数不大于100000。第三行一个整数k。
输出
输出满足题目要求的累加和
样例输入
10
2 5 7 17 11 18 4 27 1 7
7
样例输出
58
#include<iostream>
using namespace std;
int main(){
int n,sum=0;
cin>>n;
int a[n];
for(int i=0;i<n;i++){
cin>>a[i];
}
int k;
cin>>k;
for(int i=0;i<n;i++){
if(a[i]%10==k){//个位数
sum+=a[i];
}
}
cout<<sum;
return 0;
}
二、合法C标识符
给定一个不包含空白符的字符串,请判断是否是 C 语言合法的标识符号(注:题目 保证这些字符串一定不是 C 语言的保留字)。 C 语言标识符要求: 1.非保留字; 2.只包含字母、数字及下划线(“ _”)。 3.不以数字开头。 输入 一行,包含一个字符串,字符串中不包含任何空白字符,且长度不大于 20。 输出 一行,如果它是 C 语言的合法标识符,则输出 yes,否则输出 no。
输入样例
RKPEGX9R;TWyYcp
输出样例
no
#include<iostream>
using namespace std;
int main(){
string s;
cin>>s;
if(s[0]>='0'&&s[0]<='9'){//判断第一个字符是否是数字
cout<<"no";
return 0;
}
for(int i=0;i<s.length();i++){
if(!((s[i]>='0'&&s[i]<='9')||(s[i]>='A'&&s[i]<='Z')||(s[i]>='a'&&s[i]<='z')||s[i]=='_')){
cout<<"no";
return 0;
}
}
cout<<"yes";
return 0;
}
三、计算鞍点
给定一个 5*5 的矩阵,每行只有一个最大值,每列只有一个最小值,寻找这个矩阵的鞍点。鞍点指的是矩阵中的一个元素,它是所在行的最大值,并且是所在列的最小值。 例如:在下面的例子中(第 4 行第 1 列的元素就是鞍点,值为 8 )。
11 3 5 6 9
12 4 7 8 10
10 5 6 9 11
8 6 4 7 2
15 10 11 20 25
输入
输入包含一个 5 行 5 列的矩阵。
输出
如果存在鞍点,输出鞍点所在的行、列及其值,如果不存在,输出"not found"。
输入样例
11 3 5 6 9
12 4 7 8 10
10 5 6 9 11
8 6 4 7 2
15 10 11 20 25
输出样例
4 1 8
#include<iostream>
using namespace std;
int main(){
int i, j;
int a[5][5];
int max[5], min[5];
for(i=0; i<5; i++){
for(j=0; j<5; j++){
cin>>a[i][j];
}
}
// 设置初始值
for(i=0; i<5; i++) {
max[i] = -1;
min[i] = 32768;
}
// 求行的最大值, 列的最小值
for(i=0; i<5; i++){
for(j=0; j<5; j++) {
if(a[i][j] > max[i])
max[i] = a[i][j];
if(a[i][j] < min[j])
min[j] = a[i][j];
}
}
// 比较最大值和最小值,输出结果
int flag = 1;
for(i=0; i<5; i++){
for(j=0; j<5; j++){
if(max[i] == min[j]) {
flag = 0;
cout<<i+1<<" "<<j+1<<" "<<max[i];
break;
}
}
}
if(flag)
cout<<"not found";
return 0;
}
四、谁考了第k名
在一次考试中,每个学生的成绩都不相同,现知道了每个学生的学号和成绩,求考第 k 名学生的学号和成绩。
输入:第一行有两个整数,分别是学生的人数 n( 1≤n≤100)),和求第 k 名学生的 k(1≤k≤n)。 其后有 n 行数据,每行包括一个学号(整数)和一个成绩(浮点数),中间用一个空格分隔。
输出:输出第 k 名学生的学号和成绩,中间用空格分隔。(注:请用%g 输出成绩)
输入样例
5 3
90788001 67.8
90788002 90.3
90788003 61
90788004 68.4
90788005 73.9
输出样例
90788004 68.4
#include<iostream>
using namespace std;
int main(){
int n,k;
cin>>n>>k;
long long a[n];//学号
float b[n];//分数
for(int i=1;i<=n;i++){
cin>>a[i]>>b[i];
}
for(int i=1;i<=n;i++){
for(int j=i+1;j<=n;j++){
if(b[i]<b[j]){//按升序排序
swap(a[i],a[j]);//交换学号位置
swap(b[i],b[j]);//交换分数位置
}
}
}
cout<<a[k]<<" "<<b[k];
return 0;
}
为武汉地区的开发者提供学习、交流和合作的平台。社区聚集了众多技术爱好者和专业人士,涵盖了多个领域,包括人工智能、大数据、云计算、区块链等。社区定期举办技术分享、培训和活动,为开发者提供更多的学习和交流机会。
更多推荐
所有评论(0)