实验3

实验任务1

源代码

 1 #include <stdio.h>
 2 char score_to_grade(int score);
 3 int main(){
 4     int score;
 5     char grade;
 6     while(scanf("%d",&score)!=EOF){
 7         grade=score_to_grade(score);
 8         printf("分数:%d,等级:%c\n\n",score,grade);
 9     }
10 return 0;
11 }
12 char score_to_grade(int score){
13     char ans;
14     switch (score/10){
15         case 10:
16         case 9:ans='A';break;
17         case 8:ans='B';break;
18         case 7:ans='C';break;
19         case 6:ans='D';break;
20         defult:ans='E';
21         
22     }
23     return ans;
24     
25 }
26  

运行结果

批注 2025-10-24 084520

answer1:其是定义了一个函数表明通过分数来转化成等级;形参为int整数型;返回值为char是字符型;

answer2:break用于结束循环并结束switch,如果像这样改变ans会直接等于E,会运行在其后面的case中的内容

实验任务2

源代码

 1 #include <stdio.h>
 2 int sum_digits(int n);
 3 int main(){
 4     int n,ans;
 5     while(printf("Enter n:"),scanf("%d",&n)!=EOF){
 6         ans=sum_digits(n);
 7         printf("n=%d,ans=%d\n\n",n,ans);
 8     }
 9     return 0;
10     
11 }
12 int sum_digits(int n){
13     int ans=0;
14     while(n!=0){
15         ans+=n%10;
16         n/=10;
17         
18     }
19     return ans;
20     
21 }

运行结果

批注 2025-10-24 085824

answer1:函数的作用是将各个位上的数都加起来

answer2:应该可以运行,原代码是用来递归;改后的代码为迭代的方式

实验任务3

源代码

 1 #include<stdio.h>
 2 int power(int x,int n);
 3 int main(){
 4     int x,n;
 5     int ans;
 6     while(printf("Enter x and n:"),scanf("%d%d",&x,&n)!=EOF){
 7         ans=power(x,n);
 8         printf("n=%d,ans=%d\n\n",n,ans);
 9     }
10     return 0;
11 }
12 int power(int x,int n){
13     int t;
14     if(n==0)
15     return 1;
16     else if(n%2)
17     return x*power(x,n-1);
18     else{
19         t=power(x,n/2);
20         return t*t;
21     }
22 }

运行结果

kjhff

 实验任务4

源代码

 1 #include<stdio.h>
 2 #define _CRT_SECURE_NO_WARNINGS
 3 int sushu(int x);//函数申明
 4 int main() {
 5     printf("100以内的孪生素数");
 6     int n,m;
 7 
 8     for (int i = 1; i <= 98; i++) {
 9         m = sushu(i);
10         n = sushu(i + 2);
11         if (m == 1 && n == 1) {
12             printf("%d %d\n", i, (i+2));
13         }
14     }
15     printf("100以内的孪生素数共有8个");
16 }
17 int sushu(int x) {
18     int h = 0;
19     for (int t = 1; t <= x; t++) {
20 
21         if (x % t == 0) {
22             h += 1;
23 
24         }
25     }
26         if (h == 2) {
27             return 1;
28         }
29         else {
30             return 0; 
31         }
32 
33 }

运行结果

屏幕截图 2025-10-25 091145

实验任务5

源代码1递归

 1 #include <stdio.h>
 2 int func(int n, int m);   // 函数声明
 3 int main() {
 4     int n, m;
 5     int ans;
 6     while (scanf_s("%d%d", &n, &m) != EOF) {
 7         ans = func(n, m);   // 函数调用
 8         printf("n = %d, m = %d, ans = %d\n\n", n, m, ans);
 9     }
10     return 0;
11 }
12 int func(int n, int m) {
13     int h;
14     if (m == 0||m==n) {
15         return 1;
16     }
17     else if (n < m) {
18         return 0;
19     }
20     else {
21         h = func(n - 1, m) + func(n - 1, m - 1);
22 
23     }
24     return h;
25 }


运行结果屏幕截图 2025-10-25 093508

源代码2迭代

 1 #include <stdio.h>
 2 int func(int n, int m);
 3 int a(int x);// 函数声明
 4 int main() {
 5     int n, m;
 6     int ans;
 7     while (scanf_s("%d%d", &n, &m) != EOF) {
 8         ans = func(n, m); // 函数调用
 9         printf("n = %d, m = %d, ans = %d\n\n", n, m, ans);
10     }
11         return 0;
12 }
13 int func(int n, int  m) {
14     long long h,w,z,l;
15     w = a(n);
16     z = a(m);
17     l = a(n - m);
18     h = w / (l * z);
19     return h;
20 
21 
22 
23 }
24 int a(int x) {
25     int sum = 1;
26     for (int i = 1; i <= x; i++) {
27         sum *= i;
28 
29     }
30     return  sum;
31 }

运行结果

屏幕截图 2025-10-25 170942

实验任务6

源代码

 1 #include <stdio.h>
 2 int gcd(int, int, int);
 3 int min(int a, int b);
 4 
 5 int main() {
 6     int a, b, c;
 7     int ans;
 8     while (scanf_s("%d%d%d", &a, &b, &c) != EOF) {
 9         ans = gcd(a, b, c); // 函数调用
10         printf("最大公约数: %d\n\n", ans);
11     }
12     return 0;
13 }
14 int min(int a, int b) {
15     int h;
16     if (a <= b) {
17         return a;
18     }
19     else {
20         return b;
21     }
22 }
23 int gcd(int x, int y, int z) {
24     int h;
25     h = min(min(x, y), z);
26     return h;
27  }

运行结果

屏幕截图 2025-10-25 184304

实验任务7

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 void print_charman(int n);
 4 void print_1(int);
 5 void print_2(int);
 6 void print_3(int);
 7 void print_t(int);
 8 
 9 int main() {
10     int n;
11     printf("Enter n: ");
12     scanf_s("%d", &n);
13     print_charman(n); // 函数调用
14     return 0;
15 }
16 void print_charman(int n) {
17     int h = (2 * n - 1);
18     int m = 0;
19     for (int i = 0; i < n; i++) {
20         print_t(m);
21         print_1(h);
22         print_t(m);
23         printf("\n");
24         print_t(m);
25         print_2(h);
26         print_t(m);
27         printf("\n");
28         print_t(m);
29         print_3(h);
30         print_t(m);
31         printf("\n");
32         h = h - 2;
33         m = m + 1;
34     }
35 }
36 void print_t(int x) {
37     for (int i = 0; i < x; i++) {
38         printf("\t");
39     }
40 }
41 void print_1(int x) {
42     for (int i = 0; i < x; i++) {
43         printf(" O\t");
44     }
45 }
46 void print_2(int x) {
47     for (int i = 0; i < x; i++) {
48         printf("<H>\t");
49     }
50 }
51 void print_3(int x) {
52     for (int i = 0; i < x; i++) {
53         printf("I I\t");
54     }
55 }

运行结果屏幕截图 2025-10-26 143943

 

 

运行结果屏幕截图 2025-10-26 144039

 

posted @ 2025-10-26 14:41  徐维彬  阅读(2)  评论(0)    收藏  举报