实验三
任务1:
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 return 0; 14 } 15 16 // 函数定义 17 char score_to_grade(int score) { 18 char ans; 19 switch(score/10) { 20 case 10: 21 case 9: ans = 'A'; break; 22 case 8: ans = 'B'; break; 23 case 7: ans = 'C'; break; 24 case 6: ans = 'D'; break; 25 default: ans = 'E'; 26 } 27 28 return ans; 29 }

问题1:接收得分,返还等第
问题2:无break将继续,结果唯一为E;双引号导致数据类型错误
任务2:
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 { 23 ans += n % 10; 24 n /= 10; 25 } 26 27 return ans; 28 }

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

任务4:
1 #include <stdio.h> 2 #include <math.h> 3 4 int is_Prime(int n) 5 { 6 for(int i=2;i<=sqrt(n);i++) 7 { 8 if(n%i==0) return 0; 9 } 10 return 1; 11 } 12 13 int main() 14 { 15 int total=0; 16 for(int n=2;n<=100;n++) 17 if(is_Prime(n) + is_Prime(n+2) == 2) 18 { 19 printf("%d %d\n", n, n+2); 20 total += 1; 21 } 22 printf("100以内的孪生素数共有%d个.", total); 23 }

任务5:
1 #include <stdio.h> 2 3 //迭代 4 5 int func(int n, int m); 6 7 int main() 8 { 9 int n, m; 10 int ans; 11 12 while(scanf("%d%d", &n, &m) != EOF) 13 { 14 ans = func(n, m); 15 printf("n = %d, m = %d, ans = %d\n\n", n, m, ans); 16 } 17 18 return 0; 19 } 20 21 int func(int n,int m) 22 { 23 int numerator=1,denominator_1=1,denominator_2=1; 24 int x,y,z; 25 int ans=1; 26 27 for(x=1;x<=n;++x) 28 { 29 numerator*=x; 30 } 31 for(y=1;y<=m;++y) 32 { 33 denominator_1*=y; 34 } 35 for(z=1;z<=(n-m);++z) 36 { 37 denominator_2*=z; 38 } 39 ans=numerator/(denominator_1*denominator_2); 40 41 return ans; 42 }
1 #include <stdio.h> 2 3 //递归 4 5 int func(int n, int m); 6 7 int main() 8 { 9 int n, m; 10 int ans; 11 12 while(scanf("%d%d", &n, &m) != EOF) 13 { 14 ans = func(n, m); 15 printf("n = %d, m = %d, ans = %d\n\n", n, m, ans); 16 } 17 18 return 0; 19 } 20 21 int func(int n,int m) 22 { 23 if(n<m) 24 { 25 return 0; 26 } 27 else if(m==0||m==n) 28 { 29 return 1; 30 } 31 else 32 return func(n-1,m)+func(n-1,m-1); 33 }

任务6:
#include <stdio.h> int gcd(int a,int b,int c); int main() { int a, b, c; int ans; while(scanf("%d%d%d", &a, &b, &c) != EOF) { ans = gcd(a, b, c); printf("最大公约数: %d\n\n", ans); } return 0; } int gcd(int a,int b,int c) { int n; n=a; if(n>b) { n=b; } if(n>c) { n=c; } int i; for(i=n;i>=1;--i) { if(a%i==0&&b%i==0&&c%i==0) { return i; } } }

任务7:
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 void print_charman(int n); 5 int main() 6 { 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 { 16 int i,j; 17 18 for(i=1;i<=n;++i) 19 { 20 int x=2*(n-i+1)-1; 21 for(j=0;j<i;++j) 22 { 23 printf("\t"); 24 } 25 for(j=0;j<x;++j) 26 { 27 printf(" O\t"); 28 } 29 printf("\n"); 30 for(j=0;j<i;++j) 31 { 32 printf("\t"); 33 } 34 for(j=0;j<x;++j) 35 { 36 printf("<H>\t"); 37 } 38 printf("\n"); 39 for(j=0;j<i;++j) 40 { 41 printf("\t"); 42 } 43 for(j=0;j<x;++j) 44 { 45 printf("I I\t"); 46 } 47 printf("\n"); 48 } 49 }


浙公网安备 33010602011771号