CPP2022-21-期中测试(上)

简介: CPP2022-21-期中测试

6-1 递归求Fabonacci数列

分数 5

全屏浏览题目

切换布局

作者 C课程组

单位 浙江大学

本题要求实现求Fabonacci数列项的函数。Fabonacci数列的定义如下:

f(n)=f(n−2)+f(n−1) (n≥2),其中f(0)=0,f(1)=1。

函数接口定义:

int f( int n );

函数f应返回第n个Fabonacci数。题目保证输入输出在长整型范围内。建议用递归实现。

裁判测试程序样例:

#include <stdio.h> int f( int n ); int main() { int n; scanf("%d", &n); printf("%d\n", f(n)); return 0; } /* 你的代码将被嵌在这里 */

输入样例:

6

输出样例:

8
1. int f( int n )
2. {
3. if(n<=1)
4.     {
5. return n;
6.     }
7. else
8.     {
9. return f(n-2)+f(n-1);
10.     }
11. }

 

6-2 求一组数中的最大值、最小值和平均值

分数 5

全屏浏览题目

切换布局

作者 王跃萍

单位 东北石油大学

编写函数,求一组数中的最大值、最小值和平均值。

函数接口定义:

float fun(int a[],int n,int *max,int *min);

其中 anmaxmin 都是用户传入的参数。函数求a数组中n个元素的最大值、最小值和平均值。最大值和最小值分别通过maxmin带回,函数返回平均值 。

裁判测试程序样例:

#include <stdio.h> float fun(int a[],int n,int *max,int *min); int main() { int x[10],i,m,n; float p; for(i=0;i<10;i++) scanf("%d",&x[i]); p=fun(x,10,&m,&n); printf("max=%d,min=%d,average=%.2f\n",m,n,p); return 0; } /* 请在这里填写答案 */

输入样例:

2 5 4 8 6 9 1 3 7 0

输出样例:

max=9,min=0,average=4.50
1. float fun(int a[],int n,int *max,int *min)
2. {
3. double sum;
4. int j=0;
5. int k=0;
6. for(int i=0;i<n;i++)
7.     {
8.         sum=sum+a[i];
9. if(a[i]>a[j])
10.         {
11.             j=i;
12.         }
13. if(a[i]<a[k])
14.         {
15.             k=i;
16.         }
17.     }
18. double avg=sum/n;
19.     *max=a[j];
20.     *min=a[k];
21. return avg;
22. }

 

6-3 歌唱比赛打分

分数 7

全屏浏览题目

切换布局

作者 周强

单位 青岛大学

某歌唱比赛计分规则是:对于评委给出的分数,去掉一个最高分,去掉一个最低分,剩余分数求算术平均值并保留2位小数,作为选手最终得分。


本题要求实现这样一个计分函数。


评委给出的分数存在数组中,分数均为0~100之间的整数,并且保证评委人数在3~20之间。

函数接口定义:

double getScore(int *score, int total);

其中scoretotal是传入的参数,score是评委打分数组的首地址,total是评委人数;


函数将选手的得分以double类型返回,注意:函数返回的分数只需保证小数点后至少2位精确数字即可,打印2位小数得分的操作由函数调用者进行。

裁判测试程序样例:

/* 此测试程序仅为示例,实际的测试程序可能不同,不要仅针对样例的输入和输出编写函数,而是要根据题意要求编写函数 */ #include <stdio.h> double getScore(int *score, int total); int main(){ int score[5] = {92, 90, 99, 95, 98}; /* 仅为示例,实际的测试程序中,数组大小和元素数值都可能与样例不同 */ printf("%.2f\n", getScore(score, 5) ); /* getScore( )函数只负责返回分值,由main函数中的代码负责按照2位小数打印输出 */ return 0; } /* 你所编写的函数代码将被嵌在这里,注意:不要提交你编写的用于测试的main( )函数,否则无法通过编译 */

输入样例:

对于本题给出的裁判测试程序样例,没有输入。实际的裁判程序可能有输入。

输出样例:

1. 对于本题给出的裁判测试程序样例,只有一行输出如下。实际的裁判程序可能有其他输出情况。
2. 95.00
1. double getScore(int *score, int total)
2. {
3. long int max=-1,min=101;
4. long double sum=0;
5. for(int i=0;i<total;i++)
6.     {
7. if(max<score[i])
8.         {
9.             max=score[i];
10.         }
11. if(min>score[i])
12.         {
13.             min=score[i];
14.         }
15.     }
16. for(int i=0;i<total;i++)
17.     {
18.         sum=sum+score[i];
19.     }
20. return (sum-max-min)/(total-2);
21. }

 

6-4 学生成绩比高低

分数 8

全屏浏览题目

切换布局

作者 周强

单位 青岛大学

学生结构体定义如下:

1. struct Student{
2. int sid;
3. int C;
4. int English;
5. };

其中sid是学号,C是C语言课程成绩,English是英语课程成绩。学生的成绩按照这样的规则比较:

  • 先比较两门课的总成绩,总成绩高的为优;
  • 若总成绩相同,再比较C语言成绩,C语言成绩高的为优;
  • 若C语言成绩也相同,则说明两名学生成绩相等。

编写函数实现成绩的比较。

函数接口定义:

int compareScore(const struct Student *s1, const struct Student *s2);

其中s1s2是传入的参数,分别指向两名学生的结构体变量。函数返回值为int型,

  • s1所指学生成绩优于s2所指学生,返回1
  • s2所指学生成绩优于s1所指学生,返回-1
  • 若两学生成绩相等,返回0

裁判测试程序样例:

/* 此测试程序仅为示例,实际的测试程序可能不同。 注意:实际的测试程序可能有多组输入、进行多次比较,输入格式也有可能不同, 因此不要针对测试程序样例编写代码,而应当编写符合题目要求的函数 */ #include <stdio.h> struct Student{ int sid; int C; int English; }; int compareScore(const struct Student *s1, const struct Student *s2); int main(){ struct Student zs, ls; scanf("%d%d%d", &zs.sid, &zs.C, &zs.English); scanf("%d%d%d", &ls.sid, &ls.C, &ls.English); int r; r = compareScore(&zs, &ls); if(r < 0) printf("Less\n"); else if(r > 0) printf("Greater\n"); else printf("Equal\n"); return 0; } /* 你所编写的函数代码将被嵌在这里 */

输入样例1:

对于样例测试程序的输入格式:

1. 1 95 90
2. 2 90 91

输出样例1:

对于样例测试程序的输出格式:

Greater

输入样例2:

对于样例测试程序的输入格式:

1. 1 90 95
2. 2 95 90

输出样例2:

对于样例测试程序的输出格式:

Less
1. int compareScore(const struct Student *s1, const struct Student *s2)
2. {
3. if(s1->C+s1->English>s2->C+s2->English)
4.     {
5. return 1;
6.     }
7. else if(s1->C+s1->English<s2->C+s2->English)
8.     {
9. return -1;
10.     }
11. else
12.     {
13. if(s1->C>s2->C)
14.         {
15. return 1;
16.         }
17. else if(s1->C<s2->C)
18.         {
19. return -1;
20.         }
21. else
22.         {
23. return 0;
24.         }
25.     }
26. }
相关文章
【单片机期中测试】9.定时器实现简单的秒表程序
【单片机期中测试】9.定时器实现简单的秒表程序
157 0
【单片机期中测试】13.串口通信的应用(2)—— 超声波通过串口返回数据
【单片机期中测试】13.串口通信的应用(2)—— 超声波通过串口返回数据
107 0
【单片机期中测试】12.串口通信的应用(1)——两台单片机之间的通信
【单片机期中测试】12.串口通信的应用(1)——两台单片机之间的通信
124 0
【单片机期中测试】11.交通灯
【单片机期中测试】11.交通灯
62 0
【单片机期中测试】10.利用定时器实现pwm呼吸灯
【单片机期中测试】10.利用定时器实现pwm呼吸灯
147 0
【单片机期中测试】8.中断基础
【单片机期中测试】8.中断基础
65 0
【单片机期中测试】7.按键调光
【单片机期中测试】7.按键调光
62 0
【单片机期中测试】6.简单PWM呼吸灯
【单片机期中测试】6.简单PWM呼吸灯
81 0
【单片机期中测试】5.LCD1602实现简单计算器
【单片机期中测试】5.LCD1602实现简单计算器
124 0
【单片机期中测试】4.按键不同时长控制流水灯
【单片机期中测试】4.按键不同时长控制流水灯
65 0