实验三

任务一

源代码:

 

# include<stdio.h>
char score_to_grade(int score);
int main()
{
  int score;
  char grade;
  while(scanf("%d",&score)!=EOF)
  {
   grade=score_to_grade(score);
   printf("分数:%d,等级:%c\n",score,grade) ;    
  }

return 0;
}
char score_to_grade(int score)
{
    char ans;
    switch(score/10){
    case 10:
    case 9: ans='A'; break;
    case 8: ans='B'; break;
    case 7: ans='C'; break;    
    case 6: ans='D'; break;    
    default: ans='E';
}
    return ans;
}

 

 

 

 

问题一:

功能:将分数转化为相应的等级 形参:整型 返回值:字符型

 

 

问题二:

 有问题,会无论输入什么数都会输出ABCDE,缺少了break的停止

 

任务二

源代码:

 

# include<stdio.h>
int sum_dights(int n);
int main()
{
    int n;
    int ans;
    while(printf("Enter n:"),scanf("%d",&n)!=EOF)
    {
        ans=sum_dights(n);
        printf("n=%d,ans=%d\n\n",n,ans);        
    }
    return 0;
}
int sum_dights(int n)
{
    int ans=0;
    while(n!=0)
    {
        ans+=n%10;
        n=n/10;
    }
    return ans;
}
    

 

 

 

 

问题一:

求每个数位上的数和

 

问题二:

能实现同等效果,一个为迭代一个为递归

 

 

任务三

源代码:

 

#include<stdio.h>
int power(int x,int n);//函数声明
int main(){
int x,n;
int ans;
while(printf("Enterxandn:"),scanf("%d%d",&x,&n)!=EOF){
ans=power(x,n);//函数调用
printf ("n=%d,ans=%d\n\n",n,ans);
}
return 0;
}
//函数定义
int power(int x,int n){
int t;
if(n==0)
return 1;
else if(n%2)
return x*power(x,n-1);
else{
t=power(x,n/2);
return t*t;
}
}

 

问题一:

 求x的n次方

 

问题二:

 为递归函数

 

任务四

源代码:

 

# include<stdio.h>
int is_prime(int);
int main()
{
    int i,cnt=0;
    for(i=1;i<=98;i++)
    {
     if(is_prime(i)&&is_prime(i+2))
    {  printf("%d %d\n",i,i+2);
       cnt++;  }
}
printf("100以内的孪生素数共有:%d",cnt);
return 0;    
}
int is_prime(int n)
{
    int m,ans;
    for(m=2;m<=n/2;m++)
    {
        if(n%m==0)
        {
        ans=0;
        break;
}
        else
        ans=1;
    }
    return ans;
}

 

 

 

运行结果:

 

 

任务五

源代码:

 

# include<stdio.h>
# include<stdlib.h>
int cnt=0;
void hanoi(unsigned int n,char from,char temp,char to);
void move_plate(unsigned int n,char from,char to);
int main()
{
    unsigned int n;
    while(scanf("%u",&n)!=EOF)
    {
    cnt=0;
    hanoi(n,'A','B','C');    
    printf("\n一共移动了%d次\n",cnt);
    }
    system ("pause");
    return 0;
}
void  hanoi(unsigned int n,char from,char temp,char to)
 {
   if(n==1)
  {
   move_plate(n,from,to);
}
   else
   {
       hanoi(n-1,from,to,temp);
       move_plate(n,from,to);
       hanoi(n-1,temp,from,to);
   }    
 }
void move_plate(unsigned int n,char from,char to)
 {
     printf("%u:%c-->%c\n",n,from,to); 
     cnt++;
 }

 

 

运行结果:

 

 

 

任务六

源代码1:

 

# include<stdio.h>
int func(int n,int m);//函数声明
int main(){
int n,m;
int ans;
while(scanf("%d%d",&n,&m)!=EOF){
ans=func(n,m);//函数调用
printf("n=%d,m=%d,ans=%d\n\n",n,m,ans);
}
return 0;
}

int jc(int x)
{
    int i,p=1;
    for(i=1;i<=x;i++)
    p*=i;
    return p;
    
}
int func(int n,int m)
{
    int ans;
    ans=jc(n)/jc(m)/jc(n-m);
    return ans;

}

 

 

运行结果:

 

 

 

源代码2:

 

# include<stdio.h>
int func(int n,int m);//函数声明
int main(){
int n,m;
int ans;
while(scanf("%d%d",&n,&m)!=EOF){
ans=func(n,m);//函数调用
printf("n=%d,m=%d,ans=%d\n\n",n,m,ans);
}
return 0;
}
int func(int n,int m)
{
    if(m==0||m==n)
    return 1;
    else 
    return func(n-1,m)+func(n-1,m-1); 
}

 

 

 

运行结果:

 

 

 

任务七

源代码:

#include <stdio.h>
#include <stdlib.h>

char print_charman(int n);

int main() {
    int n;

    printf("Enter n: ");
    scanf("%d", &n);
    print_charman(n);

    return 0;
}
char print_charman(int n)
{
    int i,j1,j2,j3,j4,m,p;
    p=n;
    for(i=1;i<=p;i++)
    {
         for(j4=1;j4<=p-n;j4++)
       printf("    ");
       for(j1=1;j1<=(2*n-1);j1++)
       printf(" O  ");
       printf("\n");
        for(j4=1;j4<=p-n;j4++)
       printf("    ");
       for(j2=1;j2<=(2*n-1);j2++)
       printf("<H> ");
       printf("\n");
        for(j4=1;j4<=p-n;j4++)
       printf("    ");
       for(j3=1;j3<=(2*n-1);j3++)
       printf("I I ");
       printf("\n");
       n--;
}
    
}

 

 

 

输出结果:

 

posted @ 2024-10-26 16:05  布莱恩韩  阅读(12)  评论(0)    收藏  举报