实验报告3

task1

代码:

#include <stdio.h>
char score_to_grade(int score);  // 函数声明
int main() {
  int score;
  char grade;
  while(scanf("%d", &score) != EOF) {
    grade = score_to_grade(score);  // 函数调用
    printf("分数: %d, 等级: %c\n\n", score, grade);
 }
  return 0;
}
// 函数定义
char score_to_grade(int score) {
  char ans;
  switch(score/10) {
  case 10:
  case 9:  ans = 'A'; break;
  case 8:  ans = 'B'; break;
  case 7:  ans = 'C'; break;
  case 6:  ans = 'D'; break;
  default:  ans = 'E';
 }
  return ans;
}

 

回答1:对成绩进行判级 整形 字符

回答2:1.字符用“”

             2.case10后没加break

 

task2

代码:

 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     return 0;
14 }
15 
16 // 函数定义
17 int sum_digits(int n) {
18     int ans = 0;
19 
20     while(n != 0) {
21         ans += n % 10;
22         n /= 10;
23     }
24     
25     return ans;
26 }

 

回答1:将所有位数加在一起

回答2:一个是循环一个是递归

task3

代码:

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

回答1:计算x的n次方

回答2:88c4c858e6e48ff22af02d80c9996bb0

 

task4

代码:

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

截图:

image

 task5

 迭代代码:

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

递归代码:

 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<0||m>n)    return 0;
14     if(m==0||m==n)    return 1;
15     return func(n-1,m)+func(n-1,m-1);
16 }

截图:

QQ_1776611483310

task6

代码:

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

 

截图:

image

 

task7

代码:

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

 

截图:

image

 

image

 

posted @ 2026-04-19 23:18  franxx2022  阅读(12)  评论(0)    收藏  举报