2020年12月 C/C++(一级)真题解析#中国电子学会#全国青少年软件编程等级考试

在这里插入图片描述

C/C++编程(1~8级)全部真题・点这里

第1题:字符三角形

描述
给定一个字符,用它构造一个底边长5个字符,高3个字符的等腰字符三角形。
输入
输入只有一行, 包含一个字符。
输出
该字符构成的等腰三角形,底边长5个字符,高3个字符。
样例输入
*
1
样例输出
  *
 ***
*****

你可以使用C语言编写一个程序来构造一个底边长为5个字符、高为3个字符的等腰字符三角形。以下是示例代码:

#include <stdio.h>

int main() {
    
    
    char ch;
    scanf("%c", &ch);

    printf("  %c\n", ch);
    printf(" %c%c%c\n", ch, ch, ch);
    printf("%c%c%c%c%c\n", ch, ch, ch, ch, ch);

    return 0;
}

在主函数中,我们声明了字符变量ch,使用scanf函数读取输入的字符。

接下来,我们使用printf函数打印构成等腰字符三角形的字符。在每一行,我们使用空格来控制字符的位置,然后使用%c格式化字符变量ch来打印字符。第一行有两个空格,第二行有一个空格,第三行没有空格。

最后,我们使用return 0;语句结束程序。

你可以将以上代码保存为一个.c文件,使用C语言编译器编译运行,输入一个字符,即可得到构造的等腰字符三角形输出结果。

第2题:计算(a+b)*(c-b)的值

描述
给定3个整数a、b、c,计算表达式(a+b)*(c-b)的值。
输入
输入仅一行,包括三个整数a、b、c, 数与数之间以一个空格分开。
输出
输出一行,即表达式的值
样例输入
2 3 5
样例输出
10

你可以使用C语言编写一个程序来计算表达式(a+b)*(c-b)的值。以下是示例代码:

#include <stdio.h>

int main() {
    
    
    int a, b, c;
    scanf("%d %d %d", &a, &b, &c);

    int result = (a + b) * (c - b);

    printf("%d\n", result);

    return 0;
}

在主函数中,我们声明了整数变量a、b、c,使用scanf函数读取输入的三个整数。

接下来,我们使用一个表达式将(a+b)*(c-b)的结果赋值给result变量。

最后,我们使用printf函数打印result的值。

你可以将以上代码保存为一个.c文件,使用C语言编译器编译运行,输入三个整数,即可得到表达式的值输出结果。

第3题:晶晶赴约会

晶晶的朋友贝贝约晶晶下周一起去看展览,但晶晶每周的1、3、5有课必须上课, 请帮晶晶判断她能否接受贝贝的邀请,如果能输出YES;如果不能则输出NO。注意YES 和NO都是大写字母!
输入
输入有一行,贝贝邀请晶晶去看展览的日期,用数字1到7表示从星期一到星期 日。
输出
输出有一行,如果晶晶可以接受贝贝的邀请,输出YES,否则,输出NO。
注 意YES和NO都是大写字母!
输入样例
2
输出样例
YES

你可以使用C语言编写一个程序来判断晶晶是否能接受贝贝的邀请。以下是示例代码:

#include <stdio.h>

int main() {
    
    
    int day;
    scanf("%d", &day);

    if (day == 1 || day == 3 || day == 5) {
    
    
        printf("NO\n");
    } else {
    
    
        printf("YES\n");
    }

    return 0;
}

在主函数中,我们声明了整数变量day,使用scanf函数读取输入的日期。

接下来,我们使用条件语句判断day的值是否等于1、3或5。如果是,表示晶晶当天有课必须上课,输出"NO";否则,表示晶晶可以接受邀请,输出"YES"。

最后,我们使用printf函数打印结果。

你可以将以上代码保存为一个.c文件,使用C语言编译器编译运行,输入贝贝邀请晶晶去看展览的日期,即可得到是否接受邀请的输出结果。

第4题:角谷猜想

所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数, 则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。如,假定初始整 数为5,计算过程分别为16、8、4、2、1。
程序要求输入一个整数,将经过处理得到1的过程输出来。
输入
一个正整数 N(N <= 2, 000, 000)
输出
从输入整数到1的步骤,每一步为一行,每一部中描述计算过程。最后一行输出"End”。 如果输入为1,直接输出"End”。
样例输入
5
样例输出
5*3+1=16
16/2=8
8/2=4
4/2=2
2/2=1
End

你可以使用C语言编写一个程序来实现角谷猜想。以下是示例代码:

#include <stdio.h>

void collatzConjecture(int num) {
    
    
    while (num != 1) {
    
    
        printf("%d", num);
        if (num % 2 == 0) {
    
    
            printf("/2=");
            num /= 2;
        } else {
    
    
            printf("*3+1=");
            num = num * 3 + 1;
        }
        printf("%d\n", num);
    }
    printf("End\n");
}

int main() {
    
    
    int num;
    scanf("%d", &num);

    collatzConjecture(num);

    return 0;
}

首先,我们定义了一个函数collatzConjecture,用于实现角谷猜想的计算过程。函数的参数是一个整数num。

在函数内部,我们使用while循环,判断num是否等于1。如果不等于1,则进行下一步的计算。

在每一步的计算过程中,我们输出当前的num值,并根据num的奇偶性进行不同的计算。如果num是偶数,我们将其除以2并输出计算结果;如果num是奇数,我们将其乘以3再加1,并输出计算结果。

最后,我们在循环结束后输出"End"表示计算过程结束。

在主函数中,我们声明了整数变量num,使用scanf函数读取输入的整数。

然后,我们调用collatzConjecture函数,传入num作为参数,进行角谷猜想的计算。

你可以将以上代码保存为一个.c文件,使用C语言编译器编译运行,输入一个正整数,即可得到经过处理得到1的过程的输出结果。

第5题:求满足条件的3位数

编写程序,按从小到大的顺序寻找同时符合条件1和2的所有3位数,条件为:
1.该数为完全平方数
2.该数至少有2位数字相同
例如,100同时满足上面两个条件。
输入
输入一个数n,n的大小不超过实际满足条件的3位数的个数。
输出
输出为第n个满足条件的3位数(升序)
样例输入
1
样例输出
100

你可以使用C语言编写一个程序来找到满足条件的3位数。以下是示例代码:

#include <stdio.h>
#include <math.h>

int isPerfectSquare(int num) {
    
    
    int root = sqrt(num);
    return (root * root == num);
}

int hasRepeatedDigits(int num) {
    
    
    int digits[10] = {
    
    0}; // 数字出现次数的统计数组

    while (num > 0) {
    
    
        int digit = num % 10;
        digits[digit]++;
        num /= 10;
    }

    for (int i = 0; i < 10; i++) {
    
    
        if (digits[i] >= 2) {
    
    
            return 1; // 至少有2位数字相同
        }
    }

    return 0;
}

int main() {
    
    
    int n;
    scanf("%d", &n);

    int count = 0; // 计数器
    int num = 100; // 从最小的3位数开始

    while (count < n) {
    
    
        if (isPerfectSquare(num) && hasRepeatedDigits(num)) {
    
    
            count++;
        }
        num++;
    }

    printf("%d\n", num-1);

    return 0;
}

在主函数中,我们声明了整数变量n,使用scanf函数读取输入的数n。

接下来,我们定义了两个辅助函数。函数isPerfectSquare用于判断一个数是否为完全平方数,函数hasRepeatedDigits用于判断一个数是否至少有两位数字相同。

在主函数中,我们使用一个while循环来遍历3位数,同时使用计数器count来记录满足条件的数的个数。

在循环中,我们判断当前的num是否满足条件1和条件2。如果满足,则将计数器count加1。

当计数器count达到输入的数n时,循环结束。

最后,我们输出满足条件的第n个3位数(即num-1)。

你可以将以上代码保存为一个.c文件,使用C语言编译器编译运行,输入一个数n,即可得到第n个满足条件的3位数的输出结果。

猜你喜欢

转载自blog.csdn.net/gozhuyinglong/article/details/132700632