• 青少年软件编程C++二级真题(202109)


    一、满足条件的数的累加

    现有n个整数,将其中个位数为k的数进行累加求和

    输入

    第一行一个整数n。第二行n个非负整数,以空格分割,每个数不大于100000。第三行一个整数k。

    输出

    输出满足题目要求的累加和

    样例输入

    10

    2 5 7 17 11 18 4 27 1 7

    7

    样例输出

    58

    1. #include
    2. using namespace std;
    3. int main(){
    4. int n,sum=0;
    5. cin>>n;
    6. int a[n];
    7. for(int i=0;i
    8. cin>>a[i];
    9. }
    10. int k;
    11. cin>>k;
    12. for(int i=0;i
    13. if(a[i]%10==k){//个位数
    14. sum+=a[i];
    15. }
    16. }
    17. cout<
    18. return 0;
    19. }

    二、合法C标识符

    给定一个不包含空白符的字符串,请判断是否是 C 语言合法的标识符号(注:题目 保证这些字符串一定不是 C 语言的保留字)。 C 语言标识符要求: 1.非保留字; 2.只包含字母、数字及下划线(“ _”)。 3.不以数字开头。 输入 一行,包含一个字符串,字符串中不包含任何空白字符,且长度不大于 20。 输出 一行,如果它是 C 语言的合法标识符,则输出 yes,否则输出 no。

    输入样例

    RKPEGX9R;TWyYcp

    输出样例

    no

    1. #include
    2. using namespace std;
    3. int main(){
    4. string s;
    5. cin>>s;
    6. if(s[0]>='0'&&s[0]<='9'){//判断第一个字符是否是数字
    7. cout<<"no";
    8. return 0;
    9. }
    10. for(int i=0;ilength();i++){
    11. if(!((s[i]>='0'&&s[i]<='9')||(s[i]>='A'&&s[i]<='Z')||(s[i]>='a'&&s[i]<='z')||s[i]=='_')){
    12. cout<<"no";
    13. return 0;
    14. }
    15. }
    16. cout<<"yes";
    17. return 0;
    18. }

    三、计算鞍点

    给定一个 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

    1. #include
    2. using namespace std;
    3. int main(){
    4. int i, j;
    5. int a[5][5];
    6. int max[5], min[5];
    7. for(i=0; i<5; i++){
    8. for(j=0; j<5; j++){
    9. cin>>a[i][j];
    10. }
    11. }
    12. // 设置初始值
    13. for(i=0; i<5; i++) {
    14. max[i] = -1;
    15. min[i] = 32768;
    16. }
    17. // 求行的最大值, 列的最小值
    18. for(i=0; i<5; i++){
    19. for(j=0; j<5; j++) {
    20. if(a[i][j] > max[i])
    21. max[i] = a[i][j];
    22. if(a[i][j] < min[j])
    23. min[j] = a[i][j];
    24. }
    25. }
    26. // 比较最大值和最小值,输出结果
    27. int flag = 1;
    28. for(i=0; i<5; i++){
    29. for(j=0; j<5; j++){
    30. if(max[i] == min[j]) {
    31. flag = 0;
    32. cout<1<<" "<1<<" "<
    33. break;
    34. }
    35. }
    36. }
    37. if(flag)
    38. cout<<"not found";
    39. return 0;
    40. }

    四、谁考了第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

    1. #include
    2. using namespace std;
    3. int main(){
    4. int n,k;
    5. cin>>n>>k;
    6. long long a[n];//学号
    7. float b[n];//分数
    8. for(int i=1;i<=n;i++){
    9. cin>>a[i]>>b[i];
    10. }
    11. for(int i=1;i<=n;i++){
    12. for(int j=i+1;j<=n;j++){
    13. if(b[i]//按升序排序
    14. swap(a[i],a[j]);//交换学号位置
    15. swap(b[i],b[j]);//交换分数位置
    16. }
    17. }
    18. }
    19. cout<" "<
    20. return 0;
    21. }

  • 相关阅读:
    智慧能源解决方案-最新全套文件
    二进制加法(位运算)
    SSH私钥密钥——CTF靶机
    Hadoop编程——第三章:(2)Linux文件系统基础知识
    一个卡人机混合智能脖子的问题
    Win10开机内存占用超80%?一招解决!
    tensorflow的模型持久化
    广州市车联网先导区LTE-V2X 车载直连通讯设备技术规范
    腾讯云服务器2核4G、4核8G、8核16G、16核32G配置报价表出炉
    都2022年了不会还有人不懂ajax吧(明天更新省市区三级联动)
  • 原文地址:https://blog.csdn.net/zhangdeniu/article/details/126330398