C/C++编程(1~8级)全部真题・点这里
Python编程(1~6级)全部真题・点这里
第1题:日期输出
给定两个整数,表示一个日期的月和日。请按照"MM-DD"的格式输出日期,即如果月和日不到2位时,填补0使得满足2位。
时间限制:10000
内存限制:65536
输入
2个整数m,d(0 < m <= 12, 0 < d <= 31)。数据保证日期合法。
输出
按照题目要求输出日期
样例输入
7 18
样例输出
07-18
以下是一个使用C语言编写的解决方案,用于按照给定的月和日格式化输出日期:
#include <stdio.h>
int main() {
int month, day;
scanf("%d %d", &month, &day);
// 格式化输出日期
printf("%02d-%02d\n", month, day);
return 0;
}
在这个程序中,我们使用 scanf
函数分别读取输入的月份和日期。
然后,使用 printf
函数进行格式化输出,其中 %02d
表示按照两位数字的格式输出整数,不足两位时在前面补零。
最后,使用 \n
输出换行符,使输出结果换行。
这样设计的程序能够根据输入的月和日按照要求的格式输出日期。
第2题:计算(a+b)*(c-b)的值
给定3个整数a、b、c,计算表达式(a+b)*(c-b)的值。
时间限制:1000
内存限制:65536
输入
输入仅一行,包括三个整数a、b、c, 数与数之间以一个空格分开。 (-10,000 < a,b,c < 10,000)
输出
输出一行,即表达式的值
样例输入
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;
}
程序首先使用scanf
函数从标准输入读取三个整数a、b、c的值。
然后,根据给定的表达式(a+b)*(c-b)
计算结果,并将结果赋值给变量result
。
最后,使用printf
函数将变量result
的值输出到标准输出。
例如,如果输入为2 3 5
,则程序将计算(2+3)*(5-3)
的值,结果为10,并将其输出到标准输出。
第3题:有一门课不及格的学生
给出一名学生的语文和数学成绩,判断他是否恰好有一门课不及格(成绩小于60分)。
时间限制:10000
内存限制:65536
输入
一行,包含两个在0到100之间的整数,分别是该生的语文成绩和数学成绩。
输出
若该生恰好有一门课不及格,输出1;否则输出0。
样例输入
50 80
样例输出
1
以下是使用C语言编写的判断学生是否恰好有一门课不及格的程序:
#include <stdio.h>
int main() {
int chinese, math;
scanf("%d %d", &chinese, &math);
int isOneSubjectFailed = 0;
if (chinese < 60 && math >= 60) {
isOneSubjectFailed = 1;
} else if (chinese >= 60 && math < 60) {
isOneSubjectFailed = 1;
}
printf("%d\n", isOneSubjectFailed);
return 0;
}
程序首先使用scanf
函数从标准输入读取学生的语文和数学成绩。然后,使用一个变量isOneSubjectFailed
来表示学生是否恰好有一门课不及格,初始值为0。
接下来,使用条件语句判断学生的成绩情况。如果语文成绩小于60分而数学成绩大于等于60分,或者语文成绩大于等于60分而数学成绩小于60分,则将isOneSubjectFailed
赋值为1,表示学生恰好有一门课不及格。
最后,使用printf
函数将isOneSubjectFailed
的值输出到标准输出。
例如,如果输入为50 80
,则程序将判断学生的成绩情况,发现语文成绩小于60分而数学成绩大于等于60分,因此将isOneSubjectFailed
赋值为1,并将其输出到标准输出。
第4题:特殊求和
如果一个数能够被7整除或者十进制表示中含有数字7,那么我们称这个数为幻数,比如17,21,73是幻数,而6,59不是。
对于给定的N,求出1~N中所有幻数的和。
时间限制:1000
内存限制:65536
输入
一个整数N(1 < N < 10000)。
输出
一个整数,表示1~N中所有幻数的和。
样例输入
14
样例输出
21
以下是使用C语言编写的求解1~N中所有幻数的和的程序:
#include <stdio.h>
int isMagicNumber(int num) {
if (num % 7 == 0) {
return 1;
}
while (num > 0) {
int digit = num % 10;
if (digit == 7) {
return 1;
}
num /= 10;
}
return 0;
}
int main() {
int N;
scanf("%d", &N);
int sum = 0;
for (int i = 1; i <= N; i++) {
if (isMagicNumber(i)) {
sum += i;
}
}
printf("%d\n", sum);
return 0;
}
程序首先定义一个函数isMagicNumber
,用于判断一个数是否为幻数。函数接受一个整数作为参数,并根据条件判断是否为幻数。如果该数能够被7整除,或者十进制表示中含有数字7,则返回1,表示是幻数;否则返回0,表示不是幻数。
接下来,程序使用scanf
函数从标准输入读取整数N,表示要求解1~N中所有幻数的和。
然后,使用一个循环从1迭代到N,对每个数字进行判断。如果该数字是幻数,则将其加到变量sum
中。
最后,使用printf
函数将变量sum
的值输出到标准输出。
例如,如果输入为14
,则程序将迭代判断1~14中的数字。其中,数字7和14是幻数,因此将它们加到sum
中。最后,将sum
的值输出到标准输出,结果为21。
第5题:比n小的最大质数
对于给定的n,求比n小的质数中最大的一个。
质数是指一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数。
时间限制:1000
内存限制:65536
输入
一个整数n。( 2 < n < 10000)
输出
一个整数,即题目要求的解。
样例输入
100
样例输出
97
以下是使用C语言编写的求解比n小的最大质数的程序:
#include <stdio.h>
int isPrime(int num) {
if (num < 2) {
return 0;
}
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
return 0;
}
}
return 1;
}
int main() {
int n;
scanf("%d", &n);
int maxPrime = 0;
for (int i = n - 1; i >= 2; i--) {
if (isPrime(i)) {
maxPrime = i;
break;
}
}
printf("%d\n", maxPrime);
return 0;
}
程序首先定义一个函数isPrime
,用于判断一个数是否为质数。函数接受一个整数作为参数,并进行质数判断。如果该数小于2,则返回0,表示不是质数。否则,使用一个循环从2迭代到该数的平方根,判断是否能被这些数整除。如果能被整除,则返回0,表示不是质数;否则返回1,表示是质数。
接下来,程序使用scanf
函数从标准输入读取整数n,表示要求解比n小的最大质数。
然后,使用一个循环从n-1开始递减到2,对每个数字进行质数判断。如果该数字是质数,则将其赋值给变量maxPrime
,并跳出循环。
最后,使用printf
函数将变量maxPrime
的值输出到标准输出。
例如,如果输入为100
,则程序将递减判断99、98、97等数字。其中,数字97是质数,因此将其赋值给maxPrime
。最后,将maxPrime
的值输出到标准输出,结果为97。