实验任务3
实验任务1
问题1:函数 score_to_grade 的功能是:把分数转化为相应的等级。形参类型是int 返回值类型是char
问题2:更改后的代码把字符串赋值给了字符型变量ans,导致程序报错无法运行,应该用单引号。
每个case后缺少break,运行完当前case后会继续运行下一条case。
实验任务2
问题1:函数 sum_digits 的功能是:把输入的数字中每一位数字相加求和
问题2:能实现同样输出,原程序是用循环的算法,更改后的程序是用递归的方法
实验任务3
问题1: 函数 power 的功能是计算输入的X的n次幂
问题2:函数 power 是递归函数
实验任务4
1 #include <stdio.h> 2 int is_prime(int n) ; 3 int main() { 4 int count = 0; 5 printf("100以内的孪生素数:\n"); 6 for (int n = 2; n + 2 <= 100; n++) 7 { 8 if (is_prime(n) && is_prime(n + 2)) 9 { 10 printf("%d %d\n", n, n + 2); 11 count++; 12 } 13 } 14 printf("100以内的孪生素数共有%d个.\n", count); 15 return 0; 16 } 17 int is_prime(int n) { 18 if (n <= 1) { 19 return 0; 20 } 21 for (int i = 2; i * i <= n; i++) { 22 if (n % i == 0) { 23 return 0; 24 } 25 } 26 return 1; 27 }

实验任务5
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){ 14 return 1; 15 } 16 if(m>n){ 17 return 0; 18 } 19 return func(n-1,m)+func(n-1,m-1); 20 }

实验任务6
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 }

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


                    
                
                
            
        
浙公网安备 33010602011771号