实验三
实验一:
- 将百分制分数转换成等级,形参类型是int,返回值类型是char。
- 缺少break语句,导致结果最后都是E;ABCD都用双引号而不是单引号;
实验二:
- 计算数字n的每一位数字的和。
- 可以。一个是循环,从低位到高位,一个是递归,从高位到低位。
实验三:
- 计算x的n次幂。
- 是递归函数。若 n 为奇数:power(x,n)=x×power(x,n−1) 若 n为偶数:power(x,n)=(power(x,n/2))的平方。公式如图
![0df5512c6e6441293f6aafa94a21525e]()
实验四:
1 #include <stdio.h> 2 3 int classify_triangle(int a, int b, int c); 4 5 int main() { 6 int a, b, c; 7 int type; 8 9 while(scanf_s("%d%d%d", &a, &b, &c) != EOF) { 10 type = classify_triangle(a, b, c); 11 12 switch(type) { 13 case 0: printf("不能构成三角形\n"); break; 14 case 1: printf("普通三角形\n"); break; 15 case 2: printf("等边三角形\n"); break; 16 case 3: printf("等腰三角形\n"); break; 17 case 4: printf("直角三角形\n"); break; 18 default: printf("未知类型\n"); 19 } 20 } 21 22 return 0; 23 } 24 25 int classify_triangle(int a, int b, int c) { 26 27 int d; 28 if(a > b) { d = a; a = b; b = d; } 29 if(a > c) { d = a; a = c; c = d; } 30 if(b > c) { d = b; b = c; c = d; } 31 32 if(a + b <= c) { 33 return 0; 34 } 35 36 37 if(a == b && b == c) { 38 return 2; 39 } 40 41 42 if(a == b || b == c || a == c) { 43 if(a*a + b*b == c*c) { 44 return 4; 45 } 46 return 3; 47 } 48 49 if(a*a + b*b == c*c) { 50 return 4; 51 } 52 53 return 1; 54 }
实验五:
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_s("%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 int i; 19 int a = 1, b = 1,c; 20 21 if(m > n) return 0; 22 if(m == 0 || m == n) return 1; 23 24 if(m > n - m) { 25 m = n - m; 26 } 27 28 for(i = 0; i < m; i++) { 29 a *= (n - i); 30 b *= (i + 1); 31 } 32 33 c = a / b; 34 return c; 35 }
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 > n) return 0; 19 if(m == 0 || m == n) return 1; 20 21 return func(n-1, m-1) + func(n-1, m); 22 }
实验六:
1 #include <stdio.h> 2 3 int gcd(int a, int b, int c); 4 5 int main() { 6 int a, b, c; 7 int ans; 8 9 while(scanf_s("%d%d%d", &a, &b, &c) != EOF) { 10 ans = gcd(a, b, c); 11 printf("最大公约数: %d\n\n", ans); 12 } 13 14 return 0; 15 } 16 17 int gcd(int a, int b, int c) { 18 int min; 19 int i; 20 21 min = a; 22 if(b < min) min = b; 23 if(c < min) min = c; 24 25 for(i = min; i >= 1; i--) { 26 if(a % i == 0 && b % i == 0 && c % i == 0) { 27 return i; 28 } 29 } 30 31 }
实验七:
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 void print_charman(int n); 5 6 int main() { 7 int n; 8 9 printf("Enter n: "); 10 scanf_s("%d", &n); 11 print_charman(n); 12 13 return 0; 14 } 15 16 void print_charman(int n) { 17 int i, j; 18 19 for(i = n; i >0; i--) { 20 for(j = 1; j <1+ n-i; j++) { 21 printf("\t"); 22 } 23 24 for(j = 1; j <=2*i-1; j++) { 25 printf(" O "); 26 printf("\t"); 27 } 28 printf("\n"); 29 30 for(j = 1; j < 1 + n - i; j++) { 31 printf("\t"); 32 } 33 for(j = 1; j <= 2 * i - 1; j++) { 34 printf("<H>"); 35 printf("\t"); 36 } 37 printf("\n"); 38 39 for(j = 1; j < 1 + n - i; j++) { 40 printf("\t"); 41 } 42 for(j = 1; j <= 2 * i - 1; j++) { 43 printf("I I"); 44 printf("\t"); 45 } 46 printf("\n"); 47 } 48 }


浙公网安备 33010602011771号