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

2023年03月 C/C++(一级)真题解析#中国电子学会#全国青少年软件编程等级考试_第1张图片

第1题:字符长方形

给定一个字符,用它构造一个长为4个字符,宽为3个字符的长方形,可以参考样例输出。
时间限制:1000
内存限制:65536
输入
输入只有一行, 包含一个字符。
输出
该字符构成的长方形,长4个字符,宽3个字符。
样例输入
*
样例输出
****
****
****

以下是使用C语言编写的解决方案:

#include 

int main() {
    char ch;

    // 读取输入字符
    scanf("%c", &ch);

    // 输出长方形
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 4; j++) {
            printf("%c", ch);
        }
        printf("\n");
    }

    return 0;
}

你可以将上述代码保存为一个名为 “rectangle.c” 的文件,并使用C编译器进行编译和运行。输入一个字符后,程序将输出相应的长方形。

请注意,这个解决方案假设输入的字符是有效的,并且只读取一个字符。如果输入包含多个字符,或者不是有效的字符,可能会导致输出错误。

第2题:长方形面积

给出一个长方形的长和宽,求该长方形的面积。假设长为a,宽为b,则面积S=a×b。
时间限制:1000
内存限制:65536
输入
一行,2个正整数,以空格分隔,分别表示长方形的长和宽。长和宽都不大于1000。
输出
一个整数,即长方形的面积。
样例输入
4 3
样例输出
12

以下是解决该问题的C语言代码:

#include 

int main() {
    int length, width, area;

    // 读取输入的长和宽
    scanf("%d %d", &length, &width);

    // 计算面积
    area = length * width;

    // 输出面积
    printf("%d\n", area);

    return 0;
}

你可以将上述代码保存为一个名为 “rectangle_area.c” 的文件,并使用C编译器进行编译和运行。在输入长和宽后,程序将计算并输出长方形的面积。

请注意,这个解决方案假设输入的长和宽都是有效的正整数,并且在题目要求的范围内。如果输入包含非法字符、负数或超出限制范围的数值,可能会导致输出错误。

第3题:成绩等级转换

小明想将自己的百分制成绩转换为等级制,请你帮他完成这样的转换。转换规则为:
A,90-100
B,77-89
C,67-76
D,60-66
E,0-59
时间限制:1000
内存限制:65536
输入
一个0 - 100 的整数
输出
输出转换后的等级,一个A-E的大写字母。
样例输入
样例1:
85
样例2:
62
样例输出
样例1:
B
样例2:
D

以下是解决该问题的C语言代码:

#include 

char convertToGrade(int score) {
    if (score >= 90 && score <= 100) {
        return 'A';
    } else if (score >= 77 && score <= 89) {
        return 'B';
    } else if (score >= 67 && score <= 76) {
        return 'C';
    } else if (score >= 60 && score <= 66) {
        return 'D';
    } else {
        return 'E';
    }
}

int main() {
    int score;

    // 读取输入的成绩
    scanf("%d", &score);

    // 转换成绩为等级
    char grade = convertToGrade(score);

    // 输出等级
    printf("%c\n", grade);

    return 0;
}

你可以将上述代码保存为一个名为 “grade_conversion.c” 的文件,并使用C编译器进行编译和运行。在输入成绩后,程序将根据转换规则将其转换为相应的等级,并输出等级。

请注意,这个解决方案假设输入的成绩是有效的整数,并且在题目要求的范围内。如果输入包含非法字符、小数或超出限制范围的数值,可能会导致输出错误。

第4题:寻找特殊年号

年号中的每个数之和为20的年号是特殊年号。例如:2099、1991、1892是特殊的年号,而2021则不是。给定一个年号,找出严格大于给定年号的最小特殊年号。
时间限制:1000
内存限制:65535
输入
年号:整数y(1000≤y≤9000)。
输出
特殊年号:严格意义上大于y的最小年号,并且它的每个数之和为20。
样例输入
样例输入1
1892
样例输入2
2021
样例输出
样例输出1
1919
样例输出2
2099
提示
因为2+0+9+9=20,所以2099是特殊年号。 因为2+0+2+1=5,所以2021不是特殊年号。 特殊年号可能大于9000。

以下是解决该问题的C语言代码:

#include 

int sumOfDigits(int year) {
    int sum = 0;
    while (year != 0) {
        sum += year % 10;
        year /= 10;
    }
    return sum;
}

int findSpecialYear(int year) {
    int specialYear = year + 1;
    while (sumOfDigits(specialYear) != 20) {
        specialYear++;
    }
    return specialYear;
}

int main() {
    int year;

    // 读取输入的年号
    scanf("%d", &year);

    // 寻找特殊年号
    int specialYear = findSpecialYear(year);

    // 输出特殊年号
    printf("%d\n", specialYear);

    return 0;
}

你可以将上述代码保存为一个名为 “special_year.c” 的文件,并使用C编译器进行编译和运行。在输入年号后,程序将寻找严格大于给定年号的最小特殊年号,并输出该特殊年号。

请注意,这个解决方案假设输入的年号是有效的整数,并且在题目要求的范围内。如果输入包含非法字符、小数或超出限制范围的数值,可能会导致输出错误。此外,特殊年号可能大于9000,因此解决方案没有对特殊年号的上限进行限制。

第5题:机智的小明

小明的妈妈非常关心小明的成绩,每次考试后都会问小明是否进步了。机智的小明会努力找出之前比这次成绩低的试卷进行比较,如果找到了,他会回答妈妈自己进步了(Y),如果没找到,他只能回答妈妈没进步(N)。已知小明的n次成绩,请问每次妈妈询问小明,小明的回答是怎么样的。
时间限制:1000
内存限制:65536
输入
输入为2行,第1行是一个整数n(n < 100),即考试成绩的数量,第二行是n个整数,即每次考试成绩。输入保证n不大于100,考试成绩在0到100之间。
输出
n行,每行是小明的回答(Y或N)
样例输入
5
90 80 95 96 50
样例输出
N
N
Y
Y
N
提示
对于每一次成绩,只要之前的成绩有任意一次成绩比当前成绩低,就输出Y,否则输出N

以下是解决该问题的C语言代码:

#include 

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

    int grades[n];
    for (int i = 0; i < n; i++) {
        scanf("%d", &grades[i]);
    }

    for (int i = 0; i < n; i++) {
        int currentGrade = grades[i];
        int foundLowerGrade = 0;

        for (int j = 0; j < i; j++) {
            if (grades[j] < currentGrade) {
                foundLowerGrade = 1;
                break;
            }
        }

        if (foundLowerGrade) {
            printf("Y\n");
        } else {
            printf("N\n");
        }
    }

    return 0;
}

你可以将上述代码保存为一个名为 “clever_ming.c” 的文件,并使用C编译器进行编译和运行。在输入考试成绩后,程序将根据小明的回答规则输出每次妈妈询问时小明的回答。

请注意,这个解决方案假设输入的考试成绩是有效的整数,并且在题目要求的范围内。如果输入包含非法字符、小数或超出限制范围的数值,可能会导致输出错误。

你可能感兴趣的:(C/C++等级考试历届真题解析,c语言,c++,算法,电子学会,等级考试)