蔡如风 发表于 2025-6-1 18:33:58

作业3

实验任务1
代码
1 #include <stdio.h>
2
3 char score_to_grade(int score);// 函数声明
4
5 int main() {
6   int score;
7   char grade;
8   
9   while(scanf("%d", &score) != EOF) {
10         grade = score_to_grade(score);// 函数调用
11         printf("分数: %d, 等级: %c\n\n", score, grade);
12   }
13   
14   return 0;
15 }
16
17 // 函数定义
18 char score_to_grade(int score) {
19   char ans;
20   
21   switch(score/10) {
22   case 10:
23         case 9:   ans = 'A'; break;
24         case 8:   ans = 'B'; break;
25         case 7:   ans = 'C'; break;
26         case 6:   ans = 'D'; break;
27         default:ans = 'E';
28   }
29   
30   return ans;
31 } 
运行结果

问题1.函数 score_to_grade 的功能是根据输入的分数转换为对应的等级,形参类型是整型,返回值类型是字符。
问题2. 1.case后面没有了break,会执行后面的所有语句。
    2.单个字符需要用'  '进行引用
 
实验任务2
代码
1 #include <stdio.h>
2
3 int sum_digits(int n);// 函数声明
4
5 int main() {
6   int n;
7   int ans;
8
9   while(printf("Enter n: "), scanf("%d", &n) != EOF) {
10         ans = sum_digits(n);    // 函数调用
11         printf("n = %d, ans = %d\n\n", n, ans);
12   }
13
14   return 0;
15 }
16
17 // 函数定义
18 int sum_digits(int n) {
19   int ans = 0;
20
21   while(n != 0) {
22         ans += n % 10;
23         n /= 10;
24   }
25
26   return ans;
27 }运行结果

问题1;函数sum_digits的功能是将输入数字n各个位数上面的数字进行代数相加
问题2:可以实现同等的效果,前者是使用迭代的方法,后者是使用递归的思想。
 
实验任务3
代码:
1 include <stdio.h>
2
3 int power(int x, int n);    // 函数声明
4
5 int main() {
6   int x, n;
7   int ans;
8   
9   while(printf("Enter x and n: "), scanf("%d%d", &x, &n) != EOF) {
10         ans = power(x, n);// 函数调用
11         printf("n = %d, ans = %d\n\n", n, ans);
12   }
13   
14   return 0;
15 }
16
17 // 函数定义
18 int power(int x, int n) {
19   int t;
20   
21   if(n == 0)
22         return 1;
23   else if(n % 2)
24         return x * power(x, n-1);
25   else {
26         t = power(x, n/2);
27         return t*t;
28   }
29 }运行结果:

 问题1:函数的功能是进行幂指数的运算
问题2:是递归函数
    

实验任务4
代码
1 #include <stdio.h>
2 #include <math.h>
3 int is_prime(int n);
4
5 int main() {
6   printf("100以内的了孪生素数\n");
7   int n = 5;
8   int sum = 0;
9   while (n < 100) {
10         if (is_prime(n) == 1 && is_prime(n - 2) == 1) {
11             sum++;
12             printf("%d %d\n", n - 2, n);
13         }
14         n += 2;
15   }
16   printf("100以内的了孪生素数共有%d个", sum);
17   return 0;
18 }
19
20 int is_prime(int n) {
21   int i = 2;
22   while (i <= n / 2) {
23         if ((n % i) != 0)i++;
24         if ((n % i) == 0)return 0;
25   }
26   return 1;
27 }运行结果

 实验感想:更加体会理解了递归函数的使用和流程,用递归表示会让代码很简单,但比较难以理解。此外,递归中全局变量的使用有时也至关重要。

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

魁睥 发表于 2025-10-18 00:45:09

感谢,下载保存了

珠尿娜 发表于 2025-11-12 10:31:07

感谢,下载保存了

豌笆 发表于 2025-11-23 08:07:55

过来提前占个楼

岑韬哎 发表于 2025-11-24 16:12:20

yyds。多谢分享

告陕无 发表于 2025-12-14 16:54:46

鼓励转贴优秀软件安全工具和文档!

矛赓宁 发表于 2025-12-16 12:17:00

东西不错很实用谢谢分享

吉芷雁 发表于 2025-12-17 01:28:51

感谢分享,学习下。

诉称 发表于 2025-12-29 08:21:37

喜欢鼓捣这些软件,现在用得少,谢谢分享!

万俟谷雪 发表于 2026-1-1 00:18:45

东西不错很实用谢谢分享

撙仿 发表于 2026-1-16 13:23:21

懂技术并乐意极积无私分享的人越来越少。珍惜

嗣伐 发表于 2026-1-18 03:00:26

前排留名,哈哈哈

史华乐 发表于 2026-1-18 15:43:57

感谢发布原创作品,程序园因你更精彩

恙髡 发表于 2026-1-20 17:22:57

这个好,看起来很实用

坐褐 发表于 2026-1-21 11:56:40

感谢发布原创作品,程序园因你更精彩

歇凛尾 发表于 2026-1-25 09:15:42

感谢,下载保存了

掳诚 发表于 2026-1-25 10:03:02

过来提前占个楼

归悦可 发表于 2026-1-31 11:40:43

感谢分享,下载保存了,貌似很强大

客臂渐 发表于 2026-2-8 08:54:17

鼓励转贴优秀软件安全工具和文档!

姬宜欣 发表于 2026-2-9 04:17:32

鼓励转贴优秀软件安全工具和文档!
页: [1] 2
查看完整版本: 作业3