image

编辑人: 青衫烟雨

calendar2025-12-11

message2

visits1044

2023年09月C语言一级答案及解析

一、编程题

1、日期输出
给定两个整数,表示一个日期的月和日。请按照"MM-DD"的格式输出日期,即如果月和日不到2位时,填补0使得满足2位。
时间限制:10000
内存限制:65536
输入
2个整数m,d(0 < m <= 12, 0 < d <= 31)。数据保证日期合法。
输出
按照题目要求输出日期
样例输入

7 18

样例输出

07-18

参考答案:

include<bits/stdc++.h>

using namespace std;

int main()

{

int m,d;

cin>>m>>d;

if(m>=0 && m<=9)

cout<<“0”<<m<<“-”;

else

cout<<m<<“-”;

if(d>=0 && d<=9)

cout<<“0”<<d;

else

cout<<d;

}

解析:【喵呜刷题小喵解析】:首先,这个程序的目标是根据输入的月份和日期,按照“MM-DD”的格式输出日期。如果月份或日期小于10,需要在前面补0。程序首先包含了iostream头文件,这是C++标准库中的一个头文件,用于输入输出操作。然后,程序定义了main函数,这是C++程序的入口点。在main函数中,定义了两个整数变量m和d,用于存储输入的月份和日期。接着,使用cin从标准输入读取m和d的值。然后,程序使用if语句检查m和d的值。如果m或d小于10,就在前面输出一个0。否则,直接输出m或d。最后,输出一个短横线“-”,然后再输出d。这样,就得到了按照“MM-DD”格式输出的日期。这个程序没有使用这个头文件,因为它包含了C++标准库的所有头文件,而且可能会使得程序编译速度变慢。在这里,只需要包含iostream头文件就足够了。

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

参考答案:

include<bits/stdc++.h>

using namespace std;

int main()

{

int a,b,c;

cin>>a>>b>>c;

cout<<(a+b)*(c-b);

}

解析:【喵呜刷题小喵解析】这是一个简单的编程题,要求计算表达式(a+b)*(c-b)的值。首先,我们包含了头文件`bits/stdc++.h`,这是C++标准库的一个扩展,包含了大部分常用的头文件。然后,我们声明了主函数`main()`,并定义了三个整数变量a、b、c。接着,我们使用`cin`从标准输入读取a、b、c的值。最后,我们计算表达式(a+b)*(c-b)的值,并使用`cout`将结果输出到标准输出。注意,我们在主函数的最后添加了`return 0;`,表示程序正常结束。虽然在这个简单的程序中,这一行不是必须的,但在更复杂的程序中,它是用来告诉操作系统程序已经成功执行完毕的。

3、有一门课不及格的学生
给出一名学生的语文和数学成绩,判断他是否恰好有一门课不及格(成绩小于60分)。
时间限制:10000
内存限制:65536
输入
一行,包含两个在0到100之间的整数,分别是该生的语文成绩和数学成绩。
输出
若该生恰好有一门课不及格,输出1;否则输出0。
样例输入

50 80

样例输出

1

参考答案:

include<bits/stdc++.h>

using namespace std;

int main()

{

int a,b;

cin>>a>>b;

if((a>=0 && a<60)||(b>=0 && b<60))

cout<<“1”;

else

cout<<“0”;

}

解析:【喵呜刷题小喵解析】:这个题目要求我们判断一个学生是否有一门课不及格(成绩小于60分)。根据题目描述,我们只需要检查学生的语文和数学成绩是否有一个小于60分即可。首先,我们定义两个整数变量a和b,分别表示学生的语文和数学成绩。然后,我们从标准输入读取这两个成绩。接下来,我们使用if语句检查a和b是否有一个小于60分。这里需要注意,题目要求成绩小于60分即为不及格,所以我们需要检查a和b是否满足这个条件。如果a或b中有一个小于60分,那么输出1,表示该生恰好有一门课不及格。否则,输出0,表示该生两门课都及格。在if语句中,我们使用逻辑运算符"&&"表示"并且","||"表示"或者",因此(a >= 0 && a < 60)表示a小于60并且a大于等于0,(b >= 0 && b < 60)表示b小于60并且b大于等于0。由于题目中成绩范围在0到100之间,所以不需要检查成绩是否小于0。最后,我们使用cout语句输出结果。如果if语句的条件为真,输出1;否则,输出0。注意,题目中要求时间限制为10000,内存限制为65536,这些限制在实际编程中通常不会影响代码的正确性,因为这些限制主要是用来限制程序的运行时间和内存使用,以确保程序的效率。在这个问题中,我们的代码并不会超出这些限制。

4、特殊求和
如果一个数能够被7整除或者十进制表示中含有数字7,那么我们称这个数为幻数,比如17,21,73是幻数,而6,59不是。

对于给定的N,求出1~N中所有幻数的和。
时间限制:1000
内存限制:65536
输入
一个整数N(1 < N < 10000)。
输出
一个整数,表示1~N中所有幻数的和。
样例输入

14

样例输出

21

参考答案:

include<bits/stdc++.h>

using namespace std;

int main(){

int N,i,sum=0;

cin>>N;

for(i=1;i<=N;i++)

{

if(i%7==0 || i%10==7 || i/10==7)

sum+=i;

}

cout<<sum;

}

解析:【喵呜刷题小喵解析】:该题目要求计算1到N之间所有幻数的和。幻数定义为:一个数能够被7整除,或者在十进制表示中含有数字7。首先,我们定义了一个变量`sum`来保存幻数的和,初始值为0。然后,我们读取输入的N值。接下来,我们使用一个for循环从1遍历到N。对于每个数i,我们检查它是否满足幻数的定义。如果i能够被7整除,或者i的个位数是7,或者i的十位数是7,那么我们就将i加到`sum`上。最后,我们输出`sum`的值,即1到N之间所有幻数的和。注意,题目中给出的样例输入和输出可能有误。按照题目描述,幻数的定义应该是能够被7整除或者十进制表示中含有数字7,但样例输出中的21似乎与这个定义不符。样例输入14,其中只有14满足条件,因此输出应该为14,而不是21。因此,样例可能是错误的,或者题目描述可能有误。

5、比n小的最大质数
对于给定的n,求比n小的质数中最大的一个。

质数是指一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数。
时间限制:1000
内存限制:65536
输入
一个整数n。( 2 < n < 10000)
输出
一个整数,即题目要求的解。
样例输入

100

样例输出

97

参考答案:

include<bits/stdc++.h>

using namespace std;

int main(){

int N,i,sum=0;

cin>>N;

for(i=1;i<=N;i++)

{

if(i%7==0 || i%10==7 || i/10==7)

sum+=i;

}

cout<<sum;

}

解析:【喵呜刷题小喵解析】:首先,我们需要一个函数来判断一个数是否为质数。这个函数叫做`isPrime`,它接受一个整数`n`作为输入,并返回一个布尔值表示`n`是否为质数。在`main`函数中,我们首先读取一个整数`n`。然后,我们初始化一个变量`maxPrime`为0,它用来存储比`n`小的最大质数。接着,我们从`n-1`开始向下遍历,对于每个数`i`,我们调用`isPrime`函数来判断它是否为质数。如果是,我们就更新`maxPrime`的值为`i`,并立即跳出循环。最后,我们输出`maxPrime`的值,即比`n`小的最大质数。

喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!

创作类型:
原创

本文链接:2023年09月C语言一级答案及解析

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。
分享文章
share