实验三
任务1
Q1将百分制的成绩转化为字母等级。
Q2形参类型int整形;返回值类型char字符型。没有break,不会跳出循环;输出的为单个字符,应该用单引号。
任务2
Q1将各数位上的数相加求和,赋值给ans。
Q2可以。该段代码利用了递归,n<10各数位上的数之和即为n,n>=10反复用sum digits函数,从个位开始依次取出各数位上的数相加。
任务3
Q1计算n的x次幂
Q2是。

任务4
1 #include<stdio.h> 2 int is_prime(int n); 3 4 int main(){ 5 int count = 0; 6 printf("100以内的孪生素数:"); 7 for(int n = 2; n <= 98; n++){ 8 if(is_prime(n) && is_prime(n + 2)){ 9 printf("\n(%d, %d)\n ", n, n + 2); 10 count++; 11 } 12 } 13 printf("\n100以内的孪生素数有%d个\n", count); 14 return 0; 15 } 16 17 int is_prime(int n){ 18 if(n < 2){ 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 4 int main() { 5 int n, m; 6 int ans; 7 8 while(scanf("%d%d", &n, &m) != EOF) { 9 ans = func(n, m); // 函数调用 10 printf("n = %d, m = %d, ans = %d\n\n", n, m, ans); 11 } 12 13 return 0; 14 } 15 16 // 函数定义 17 // 待补足。。。(分别用迭代和递归实现) 18 int func(int n, int m) { 19 if (m == 0 || m == n) { 20 return 1; 21 } 22 if (n < m) { 23 return 0; 24 } 25 if (m > n - m) { 26 m = n - m; 27 } 28 long long up = 1; 29 long long down = 1; 30 int i; 31 for (i = 0; i < m; i++) { 32 up *= (n - i); 33 } 34 for (i= 1; i <= m; i++) { 35 down *= i; 36 } 37 return up / down; 38 }

1 #include <stdio.h> 2 int func(int n, int m); // 函数声明 3 4 int main() { 5 int n, m; 6 int ans; 7 8 while(scanf("%d%d", &n, &m) != EOF) { 9 ans = func(n, m); // 函数调用 10 printf("n = %d, m = %d, ans = %d\n\n", n, m, ans); 11 } 12 13 return 0; 14 } 15 16 // 函数定义 17 // 待补足。。。(分别用迭代和递归实现) 18 int func(int n, int m) { 19 if (m == 0 || m == n) { 20 return 1; 21 } 22 if (n < m) { 23 return 0; 24 } 25 return func(n-1,m)+func(n-1,m-1); 26 }

任务6
1 #include <stdio.h> 2 3 // 函数声明 4 // 待补足.... 5 int gcd(int a,int b,int c); 6 7 int main() { 8 int a, b, c; 9 int ans; 10 11 while(scanf("%d%d%d", &a, &b, &c) != EOF) { 12 ans = gcd(a, b, c); // 函数调用 13 printf("最大公约数: %d\n\n", ans); 14 } 15 16 return 0; 17 } 18 19 20 // 函数定义 21 // 待补足... 22 int gcd(int a,int b,int c){ 23 int i=a; 24 if(b<i){ 25 i=b; 26 } 27 if(c<i){ 28 i=c; 29 } 30 for(i;i>0;i--){ 31 if(a%i==0&&b%i==0&&c%i==0){ 32 return i; 33 } 34 } 35 }

任务7
1 #include <stdio.h> 2 3 // 函数声明 4 // 待补足 5 // xxx 6 void print_charman(int n); 7 8 int main() { 9 int n; 10 11 printf("Enter n: "); 12 scanf("%d", &n); 13 print_charman(n); // 函数调用 14 15 return 0; 16 } 17 18 // 函数print_charman定义 19 // 待补足 20 // xxx 21 22 void print_charman(int n) { 23 24 int max = 2 * n - 1; 25 int k, i, j; 26 const int per = 5; 27 28 for (k = n; k >= 1; k--) { 29 int ren = 2 * k - 1; 30 int total = max * per; 31 int current = ren * per; 32 int kong = (total - current) / 2; 33 34 for (i = 0; i < kong; i++) printf(" "); 35 for (j = 0; j < ren; j++) printf(" 0 "); 36 printf("\n"); 37 38 for (i = 0; i < kong; i++) printf(" "); 39 for (j = 0; j < ren; j++) printf(" <H> "); 40 printf("\n"); 41 42 for (i = 0; i <kong; i++) printf(" "); 43 for (j = 0; j < ren; j++) printf(" I I "); 44 printf("\n"); 45 } 46 }

字符小人好难搞:(

浙公网安备 33010602011771号