yu-hong-yan

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

实验任务1:

 1 int main(){
 2     int score;
 3     char grade;
 4     
 5     while(scanf("%d",&score)!=EOF){
 6         grade=score_to_grade(score);
 7         printf("分数:%d,等级:%c\n\n",score,grade);
 8         
 9 }
10       return 0;
11 }
12 
13 char score_to_grade(int score){
14     char ans;
15 
16     switch(score/10){
17         case 10:
18         case 9: ans='A';break;
19         case 8: ans='B';break;
20         case 7: ans='C';break;
21         case 6: ans='D';break;
22         default: ans='E';
23         
24     }
25     return ans;
26 }

 问题1:功能是作为被调用的函数判断等级,形参类型是int,返回值类型是char。

问题2:有,字母A,B,C,D应该用单引号来表示字符类型。

实验任务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 int sum_digits(int n){
18 
19     int ans=0;
20     while(n!=0){
21         ans+=n%10;
22         n/=10;
23     }
24         
25     
26     return ans;
27 }

问题1:功能是作为被定义的函数,用于执行主函数。

问题2:能实现,第二种先判断n是否小于10,将运算简单化。

实验任务3:

 1 #include <stdio.h>
 2 
 3 int power(int x,int n);
 4 
 5 int main(){
 6     int x,n;
 7     int ans;
 8     
 9     while(printf("Enter x and n:"),scanf("%d%d",&x,&n)!=EOF){
10         ans=power(x,n);
11         printf("n=%d,ans=%d\n\n",n,ans);
12         
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     
30     }
31         
32     

 问题1:功能是用作递归函数。

问题2:f(x)等于x乘x的n-1次方,x的0次方等于1为出口。

实验任务4:

 1 #include <stdio.h>
 2 int is_prime(int n);
 3 int main()
 4 {
 5     printf("100以内的孪生素数:\n");
 6     int n,count=0;
 7     for(n=1;n<=100;n++)
 8     {
 9         if(is_prime(n)&&is_prime(n+2)){
10         
11         printf("%d %d\n",n,n+2);
12         count+=1;
13     }
14     }
15     printf("100以内的孪生素数有%d个\n",count);
16     return 0;
17 }
18 
19 int is_prime(int n)
20 {
21     if(n==1)
22     return 0;
23     int i;
24     for(i=2;i<=n/2;i++)
25     {
26         if(n%i==0)
27     
28     return 0;
29     
30         
31     }
32     if(i>n/2)
33     return 1;
34     
35 }

实验任务5:

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 int count=0;
 4 void hanoi(unsigned int n,char from,char temp,char to);
 5 void moveplate(unsigned int n,char from,char to);
 6 int main()
 7 {
 8     
 9     unsigned int n;
10      
11     while(scanf("%d",&n)!=EOF)
12     { 
13         count=0;
14         hanoi(n,'A','B','C');
15         
16         printf("一共移动了%d次\n",count);
17     }
18     return 0;
19 }
20 
21 void hanoi(unsigned int n,char from,char temp,char to)
22 {
23 
24     
25     if(n==1)
26     moveplate(n,from,to);
27     
28     else{
29     hanoi(n-1,from,to,temp);
30     moveplate(n,from,to);
31     hanoi(n-1,temp,from,to);
32 }
33 }
34 void moveplate(unsigned int n,char from,char to)
35 {
36      
37     
38     count++;
39     printf("%u:%c-->%c\n",n,from,to);
40 }

实验任务6:

 1 #include<stdio.h>
 2 int func(int n,int m);
 3 
 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     }
12     return 0;
13 }
14 //迭代方式 
15 int func(int n,int m){
16 
17     int i,j,x=1,y=1,ans;
18     for(i=n;i>=n-m+1;i--){
19         x*=i;
20     }
21     for(j=m;j>=1;j--){
22     
23         y*=j;
24         
25     }
26      ans=x/y;
27      return ans;
28 }

 

 1 int func2(int n,int m);
 2 
 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     }
11     return 0;
12 }
13 //递归方式 
14 
15  int func(int n,int m){
16  
17     if(n<m)
18     {
19     return 0;
20 }
21     else if(m==0||m==n)
22     {
23         return 1;
24     }
25     else{
26     
27     return func(n-1,m)+func(n-1,m-1);
28 }
29 }

实验任务7:

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

 

posted on 2024-10-25 18:31  於鸿艳  阅读(6)  评论(0编辑  收藏  举报