实验三

任务一:

#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\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;
}
//score_to_grade  的功能是将分数分到对应的等第然后输出
//形参类型是 整型                                                                                                                                                                                                                                                      
//返回值类型是 字符型
// 有问题,缺少break来结束,用了双引号,语法错误。

任务二:

#include <stdio.h>
int sum_digits(int n);  // 函数声明
int main() {
  int n;
  int ans;
  while(printf("Enter n: "), scanf("%d", &n) != EOF) {
  ans = sum_digits(n);  // 函数调用
  printf("n = %d, ans = %d\n\n", n, ans);
}
  return 0;
}
// 函数定义
int sum_digits(int n) {
int ans = 0;
while(n != 0) {
    ans += n % 10;
    n /= 10;
 }
  return ans;
}
//功能是 使得输入的数据各个位数的数字相加
 //能。 原逻辑是将各位数字相加后返回;改后,用if分支,只有个位的直接输出,大于等于10的返回 sum_digits(n/10) + n%10
 //int sum_digits(int n) {
 //if(n < 10)
 // return n;
 //return sum_digits(n/10) + n%10;
//}

任务三:

#include <stdio.h>

int power(int x, int n); // 函数声明
int main() {
  int x, n;
  int ans;
  while(printf("Enter x and n: "), 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;
 }
}
//power功能是求 x值的n次方 
//power是递归函数 ,分装成两个数的乘数,再依次相乘 

任务四:

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

}
   
   int is_prime(int n){
           int j;
       if(n==1)
        return 0;
        for(j=2;j<n;j++)
        {
            if(n%j==0)
            return 0;
                }        
        return 1;
   }

 

任务五:

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

 

 

 

任务六:

#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)
 {
     int s,k,t;
     int i,j;
     for(i=n;i>=n-m+1;i--)
         k*=i;
     for(j=1;j<=m;j++)
         t*=j;
     s=k/t;
     return s;
 }

 任务七:

#include <stdio.h>
#include <stdlib.h>
void print_charman(int n);
int main()
{
    int n;
    printf("Enter n: ");
    scanf("%d", &n);
    print_charman(n);
    return 0;
}
void print_charman(int n)
{
    int m = 0;
    for (int i = n; i >= 1; i--)
    {
        for (int j = 0; j < m; j++)
        {
            printf("\t");
        }
        for (int j = 0; j < 2 * i - 1; j++)
        {
            printf(" o\t");
        }
        printf("\n");
        for (int j = 0; j < m; j++)
        {
            printf("\t");
        }
        for (int j = 0; j < 2 * i - 1; j++)
        {
            printf("<H>\t");
        }
        printf("\n");
        for (int j = 0; j < m; j++)
        {
            printf("\t");
        }
        for (int j = 0; j < 2 * i - 1; j++)
        {
            printf("I I\t");
        }
        printf("\n");
        m++;
    }
}

 

posted @ 2024-10-30 01:51  鬼上身  阅读(5)  评论(0编辑  收藏  举报