实验三


 

 

/*实验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

问题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;}

2

问题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;}}

3

问题1:power的功能是计算x 的n次方。

问题2:power是递归函数p

实验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 }

1

实验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 }
View Code

2

递归:

 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 }
View Code

3

实验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 }
View Code

4

实验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 }

5

 

posted @ 2025-10-24 15:06  deepsigh  阅读(5)  评论(0)    收藏  举报