实验三
/*实验1*/
1 #include<stdio.h> 2 char score_to_grade(int score); 3 int main(){ 4 int score; 5 char grade; 6 while(scanf("%d",&score)!=EOF){ 7 grade=score_to_grade(score); 8 printf("分数:%d,等级:%c\n\n",score,grade);}return 0;} 9 char score_to_grade(int score){ 10 char ans; 11 switch(score/10){ 12 case 10: 13 case 9:ans='A';break; 14 case 8:ans='B';break; 15 case 7:ans='C';break; 16 case 6:ans='D';break; 17 default:ans='E';break;}return ans;}

问题1:函数的功能是将分数转化成对应等级。形参类型是字符型,返回值也是字符型
问题2:返回值ans的数据类型与定义函数的数据类型不统一,“ ”是字符串型常量,没办法赋值给ans。
实验2:
1 #include<stdio.h> 2 int sum_digitals(int n); 3 int main(){ 4 int n; 5 int ans; 6 while(printf("Enter n:"),scanf("%d",&n)!=EOF){ 7 ans=sum_digitals(n); 8 printf("n=%d,ans=%d\n\n",n,ans);}return 0;} 9 int sum_digitals(int n){ 10 int ans=0; 11 while(n!=0){ 12 ans+=n%10; 13 n/=10;}return ans;}

问题1:函数的功能是将一个数的各个位的数字相加求和。
问题2:能实现,两种思维的不同在于一个使用了循环,一个使用了递归。
实验3:
1 #include<stdio.h> 2 int power(int x,int y); 3 int main(){ 4 int x,n; 5 int ans; 6 while(printf("Enter x and n:"),scanf("%d%d",&x,&n)!=EOF){ 7 ans=power(x,n); 8 printf("n=%d,ans=%d\n\n",n,ans);}return 0;} 9 int power(int x,int n){ 10 int t; 11 if(n==0){ 12 return 1;} 13 else if(n%2){ 14 return x*power(x,n-1); 15 } 16 else{ 17 t=power(x,n/2); 18 return t*t;}}

问题1:power的功能是计算x 的n次方。
问题2:power是递归函数
实验4:
1 #define _CRT_SCURE_NO_WARNINGS 2 #include<stdio.h> 3 #include<math.h> 4 #include<stdlib.h> 5 int is_prime(int n); 6 int main(){ 7 int i, j = 0; 8 printf("100以内的孪生素数:\n"); 9 for (i = 1; i <= 98; i++) { 10 if (is_prime(i) && is_prime(i + 2)) { printf("%d %d\n", i, i + 2); j++; } 11 } 12 printf("100以内的孪生素数共有%d\n个", j); system("pause"); return 0; 13 } 14 int is_prime(int n) { 15 int k = 2; 16 if (n == 1) 17 return 0; 18 if (n == 2) 19 return 1; 20 for (k = 2; k <=n/2; k++) { 21 if (n % k == 0) 22 { return 0; } 23 24 } 25 return 1; 26 }

实验5:
循环:
1 #define _CRT_SCURE_NO_WARNINGS 2 #include<stdio.h> 3 int func(int n, int m); 4 int main() { 5 int n, m; 6 int ans; 7 while (scanf("%d%d", &n, &m) != EOF) { 8 ans = func(n, m); 9 printf("n=%d,m=%d,ans=%d\n\n", n, m, ans); 10 } 11 return 0; 12 } 13 int func(int n, int m) { 14 int i, j, k, o=1, p=1, q=1,ans; 15 if (n < m) { 16 return 0; 17 } 18 if (m == n) { 19 return 1; 20 } 21 if (m < n) { 22 for (i = 1; i <= n; i++) { 23 o = o * i; 24 } 25 for (j = 1; j <= m; j++) { 26 p = p * j; 27 } 28 for (k = 1; k <= n - m; k++) { 29 q = q * k; 30 }ans = o / p / q; 31 return ans; 32 } 33 }

递归:
1 #define _CRT_SCURE_NO_WARNINGS 2 #include<stdio.h> 3 int func(int n, int m); 4 int main() { 5 int n, m; 6 int ans; 7 while (scanf_s("%d%d", &n, &m) != EOF) { 8 ans = func(n, m); 9 printf("n=%d,m=%d,ans=%d\n\n", n, m, ans); 10 } 11 return 0; 12 } 13 int func(int n, int m) { 14 int i, j, k, o=1, p=1, q=1,ans; 15 if (n < m) { 16 return 0; 17 } 18 if (m == n) { 19 return 1; 20 } 21 if (m == 1) { 22 return n; 23 } 24 if (n > m) { 25 ans = func(n-1, m ) + func(n - 1, m - 1); 26 return ans; 27 } 28 }

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

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


浙公网安备 33010602011771号