实验三 C语言函数应用编程

实验三 C语言函数应用编程

任务一

 

 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 }

 

屏幕截图 2026-04-21 215046

问题一:将成绩转化为对应的等级字母,char,int

问题二:无break无法终止,使用双引号逻辑错误

任务二

 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 }

屏幕截图 2026-04-21 215806

问题一:定义一个函数,计算数字和

问题二:能实现相同输出,一种是迭代累加,一种是递归方法

任务三

 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 }

屏幕截图 2026-04-21 220702

问题一:以递归方式计算x的n次幂

问题二:是

A0DB3E3130ACC3AB086343707AA86461

 

 

 

 

任务四

 

 1 #include<stdio.h>
 2 int classify_triangle(int a,int b,int c){
 3     if(a<=0||b<=0||c<=0||a+b<=c||a+c<=b||b+c<=a){
 4         return 0;
 5     }
 6     if(a==b&&b==c){
 7         return 2;
 8     }
 9     if(a==b||a==c||b==c){
10         return 3;
11     }
12     if(a*a+b*b==c*c||b*b+c*c==a*a||a*a+c*c==b*b){
13         return 4;
14     }
15     return 1;
16 }
17 int main(){
18     int a,b,c;
19     printf("输入三角形三边a,b,c\n");
20     while(scanf("%d %d %d",&a,&b,&c)!=EOF){
21     int res=classify_triangle(a,b,c);
22     switch(res){
23         case 0:printf("不能构成三角形\n");break;
24         case 1:printf("普通三角形\n");break;
25         case 2:printf("等边三角形\n");break;
26         case 3:printf("等腰三角形\n");break;
27         case 4:printf("直角三角形\n");break;
28         }
29     }
30     return 0;
31 }

屏幕截图 2026-04-15 113156

 任务五

 1 #include <stdio.h>
 2 int func(int n, int m);
 3 int main() {
 4 int n, m;
 5 int ans;
 6 while(scanf("%d%d", &n, &m) != EOF) {
 7     
 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     if(m>n || m<0)
15     return 0;
16     if(n-m>0)
17     m=n-m;
18     int res=1;
19     for(int i=1;i<=m;i++){
20         res=res*(n-m+i)/i;
21     }
22 return res;
23 }
 1 #include <stdio.h>
 2 int func(int n, int m);
 3 int main() {
 4     int n, m;
 5     int ans;
 6 while(scanf("%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     if(m>n || m<0)
14     return 0;
15     if(m==0||m==n)
16     return 1;
17     return func(n-1,m)+func(n-1,m-1);
18 }

屏幕截图 2026-04-21 222248

任务六

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

屏幕截图 2026-04-21 222637

任务七

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3  
 4 void print_charman(int n);
 5  
 6 int main() {
 7     int n;
 8     printf("input n: ");
 9     scanf("%d", &n);
10     print_charman(n);
11     return 0;
12 }
13  
14 void print_charman(int n){
15 int total_group = n;
16 for (int k = 0; k < total_group; k++){
17 int space = k;
18 int man_cnt = 2 * n - 1 - 2 * k;
19 for (int s = 0; s < space; s++) {
20 printf("\t");
21 }
22 for (int m = 0; m < man_cnt; m++) {
23 printf("O\t");
24 }
25 printf("\n");
26 for (int s = 0; s < space; s++) {
27 printf("\t");
28 }
29 for (int m = 0; m < man_cnt; m++) {
30 printf("<H>\t");
31 }
32 printf("\n");
33 for (int s = 0; s < space; s++) {
34 printf("\t");
35 }
36 for (int m = 0; m < man_cnt; m++) {
37 printf("I I\t");
38 }
39 printf("\n");
40 }
41 }

屏幕截图 2026-04-21 222911

屏幕截图 2026-04-21 222924

 

posted @ 2026-04-21 22:30  Aaa钞票批发商  阅读(7)  评论(0)    收藏  举报