CPP2022-21-期中测试(下)

简介: CPP2022-21-期中测试(下)

7-1 分段函数求值

分数 10

全屏浏览题目

切换布局

作者 王和兴

单位 东北大学秦皇岛分校

计算下列分段函数f(x)的值。

f(x)={x+3x−2x≥0x<0

输入

在一行中给出实数x。

输出

在一行中按“f = result”的格式输出计算结果,要求保留两位小数位数。结尾有换行。

输入样例

10

输出样例

f = 13
1. #include<bits/stdc++.h>
2. using namespace std;
3. int main()
4. {
5. double x;
6.     cin>>x;
7. if(x>=0)
8.     {
9.         cout<<"f = "<<x+3<<endl;
10.     }
11. if(x<0)
12.     {
13.         cout<<"f = "<<x-2<<endl;
14.     }
15. return 0;
16. }

 

7-1 统计各类字符数量并输出字母

分数 10

全屏浏览题目

切换布局

作者 周强

单位 青岛大学

对于输入的一行字符,统计其中各类字符的数量,并将其中的字母大小写互换后输出。

输入格式:

在一行内输入各类字符(行末以换行符结束),字符总数不少于1个、不超过2000个。

输出格式:

输出为两行:


先按照输入的顺序,将其中的字母大小写互换后,在第一行输出,


再统计输入的各类字符数量,按照 letters:<l>, digits:<d>, spaces:<s>, others:<o>. 的格式在第二行输出。


注意

  1. 统计字符数量,不包含行末输入的换行符;
  2. 上述格式中<l> <d> <s> <o>分别表示字母、数字、空格、其它字符的数量,输出时以实际数量代替;
  3. 在第一行只输出大小写互换后的字母,不输出其它字符;
  4. 要严格按照规定格式输出,不能随意增减空格、换行等字符。

输入样例:

ABC xyz 123 ?!

输出样例:

1. abcXYZ
2. letters:6, digits:3, spaces:3, others:2.
1. #include<bits/stdc++.h>
2. using namespace std;
3. int main()
4. {
5. int l=0,d=0,s=0,o=0;
6.     string n;
7. getline(cin,n);
8. int len=n.length();
9. for(int i=0;i<len;i++)
10.     {
11. if((n[i]>='A'&&n[i]<='Z')||(n[i]>='a'&&n[i]<='z'))
12.         {
13.             l++;
14.         }
15. else if(n[i]>='0'&&n[i]<='9')
16.         {
17.             d++;
18.         }
19. else if(n[i]==' ')
20.         {
21.             s++;
22.         }
23. else
24.         {
25.             o++;
26.         }
27. if(n[i]>='A'&&n[i]<='Z')
28.         {
29.             cout<<(char)(n[i]-'A'+'a');
30.         }
31. if(n[i]>='a'&&n[i]<='z')
32.         {
33.             cout<<(char)(n[i]-'a'+'A');
34.         }
35.     }
36.     cout<<endl;
37.     cout<<"letters:"<<l<<", digits:"<<d<<", spaces:"<<s<<", others:"<<o<<"."<<endl;
38. return 0;
39. }

 

7-2 方阵对角线元素求和及计数

分数 10

全屏浏览题目

切换布局

作者 周强

单位 青岛大学

对输入的一个N*N的方阵,求其两条对角线上的元素之和及非零元素的数量。

输入格式:

第一行输入一个不超过20的正整数N


在接下来的N行中,依次输入方阵的每一行的N个元素,方阵元素为绝对值不超过1000的整数,中间以空格间隔。

输出格式:

在一行中以sum = <s>, count = <c>.的格式输出方阵两对角线上的元素之和以及非零元素的数量,其中<s><c>分别表示元素之和非零元素数量,输出时以实际数量替换。


提示:(1)两条对角线的交叉元素不重复计算;(2)严格按规定格式输出,不得随意增删空格、换行等字符。

输入样例1:

1. 4
2. 1 2 3 4
3. 1 2 3 4
4. 0 1 2 3
5. 0 1 2 3

输出样例1:

sum = 16, count = 7.

输入样例2:

1. 5
2. 1 2 3 2 1
3. 1 2 3 2 1
4. 1 2 3 2 1
5. 1 2 3 2 1
6. 1 2 3 2 1

输出样例:

sum = 15, count = 9.
1. #include<bits/stdc++.h>
2. using namespace std;
3. int main()
4. {
5. int n,count=0,sum=0;
6.     cin>>n;
7. int a[n][n];
8. for(int i=0;i<n;i++)
9.     {
10. for(int j=0;j<n;j++)
11.         {
12.             cin>>a[i][j];
13.         }
14.     }
15. for(int k=0;k<n;k++)
16.     {
17. if(a[k][k]!=0)
18.         {
19.             count++;
20.         }
21.         sum=sum+a[k][k];
22.     }
23. for(int k=0;k<n;k++)
24.     {
25. if(a[k][n-1-k]!=0)
26.         {
27.             count++;
28.         }
29.         sum=sum+a[k][n-1-k];
30.     }
31. if(n%2!=0)
32.     {
33.         sum=sum-a[n-1-n/2][n-1-n/2];
34. if(a[n-1-n/2][n-1-n/2]!=0)
35.         {
36.             count=count-1;
37.         }
38.     }
39.     cout<<"sum = "<<sum<<", count = "<<count<<"."<<endl;
40. return 0;
41. }

 

7-3 求幂之和

分数 10

全屏浏览题目

切换布局

作者 颜晖

单位 浙大城市学院

本题要求编写程序,计算sum=21+22+23+⋯+2n。可以调用pow函数求幂。

输入格式:

输入在一行中给出正整数n(≤10)。

输出格式:

按照格式“result = 计算结果”输出。

输入样例:

5

输出样例:

result = 62
1. #include<bits/stdc++.h>
2. using namespace std;
3. int f(int n)
4. {
5. if(n==1)
6.     {
7. return 2;
8.     }
9. else
10.     {
11. return pow(2,n)+f(n-1);
12.     }
13. }
14. int main()
15. {
16. int n;
17.     cin>>n;
18.     cout<<"result = "<<f(n)<<endl;
19. return 0;
20. }

 

7-5 学生成绩排序

分数 10

全屏浏览题目

切换布局

作者 张泳

单位 浙大城市学院

假设学生的基本信息包括学号、姓名、三门课程成绩以及个人平均成绩,定义一个能够表示学生信息的结构类型。输入n(n<50)个学生的成绩信息,按照学生的个人平均分从高到低输出他们的信息。如果平均分相同,按输入的先后顺序排列。

输入格式:

输入一个正整数n(n<50),下面n行输入n个学生的信息,包括:学号、姓名、三门课程成绩(整数)。

输出格式:

输出从高到低排序后的学生信息,包括:学号、姓名、平均分(保留两位小数)。

输入样例:

1. 3
2. 101 Zhang 78 87 85
3. 102 Wang 91 88 90
4. 103 Li 75 90 84

输出样例:

1. 102,Wang,89.67
2. 101,Zhang,83.33
3. 103,Li,83.00
1. #include<bits/stdc++.h>
2. using namespace std;
3. struct student
4. {
5. int num;
6.     string name;
7. double score[3];
8. double avg;
9. }s[50];
10. int main()
11. {
12. int n;
13.     cin>>n;
14. for(int i=0;i<n;i++)
15.     {
16.         cin>>s[i].num>>s[i].name>>s[i].score[0]>>s[i].score[1]>>s[i].score[2];
17.     }
18. for(int i=0;i<n;i++)
19.     {
20.         s[i].avg=(s[i].score[0]+s[i].score[1]+s[i].score[2])/3;
21.     }
22. for(int i=1;i<n;i++)
23.     {
24. if(s[i].avg<s[i-1].avg)
25.         {
26. swap(s[i],s[i-1]);
27.         }
28.     }
29. for(int i=1;i<n;i++)
30.     {
31. if(s[i].avg==s[i-1].avg&&s[i].num>s[i-1].num)
32.         {
33. swap(s[i],s[i-1]);
34.         }
35.     }
36. for(int i=1;i<n;i++)
37.     {
38. if(s[i].avg<s[i-1].avg)
39.         {
40. swap(s[i],s[i-1]);
41.         }
42.     }
43. for(int i=1;i<n;i++)
44.     {
45. if(s[i].avg==s[i-1].avg&&s[i].num>s[i-1].num)
46.         {
47. swap(s[i],s[i-1]);
48.         }
49.     }
50. for(int i=1;i<n;i++)
51.     {
52. if(s[i].avg<s[i-1].avg)
53.         {
54. swap(s[i],s[i-1]);
55.         }
56.     }
57. for(int i=1;i<n;i++)
58.     {
59. if(s[i].avg==s[i-1].avg&&s[i].num>s[i-1].num)
60.         {
61. swap(s[i],s[i-1]);
62.         }
63.     }
64. for(int i=n-1;i>=0;i--)
65.     {
66.         cout<<s[i].num<<","<<s[i].name<<","<<fixed<<setprecision(2)<<s[i].avg<<endl;;
67.     }
68. return 0;
69. }
相关文章
【单片机期中测试】9.定时器实现简单的秒表程序
【单片机期中测试】9.定时器实现简单的秒表程序
150 0
【单片机期中测试】13.串口通信的应用(2)—— 超声波通过串口返回数据
【单片机期中测试】13.串口通信的应用(2)—— 超声波通过串口返回数据
105 0
【单片机期中测试】12.串口通信的应用(1)——两台单片机之间的通信
【单片机期中测试】12.串口通信的应用(1)——两台单片机之间的通信
121 0
【单片机期中测试】11.交通灯
【单片机期中测试】11.交通灯
60 0
【单片机期中测试】10.利用定时器实现pwm呼吸灯
【单片机期中测试】10.利用定时器实现pwm呼吸灯
144 0
【单片机期中测试】8.中断基础
【单片机期中测试】8.中断基础
60 0
【单片机期中测试】7.按键调光
【单片机期中测试】7.按键调光
59 0
【单片机期中测试】6.简单PWM呼吸灯
【单片机期中测试】6.简单PWM呼吸灯
80 0
【单片机期中测试】5.LCD1602实现简单计算器
【单片机期中测试】5.LCD1602实现简单计算器
100 0
【单片机期中测试】4.按键不同时长控制流水灯
【单片机期中测试】4.按键不同时长控制流水灯
62 0