实验3

task1

源代码:

#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;
}

截图:

问题1:score_to_grade的作用是将分数转化为相应的等级。形参类型为整型,返回值类型为字符型。

问题2:不能及时终止,输入任何值返回值都为E

task2

源代码:

#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;
}

截图:

 

问题1:sum_digits的作用是将一个数每一位的值进行求和

问题2:能

task3

源代码:

#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;
    }
}

截图:

问题1:power的功能是求一个数的几次方

问题2:不是

task4

源代码:

#include <stdio.h>
#include <math.h>
int is_prime (int n);

int main (){
    int sum=0,n;
    
    for(n=2;n<=100;n++){
    
    
    if(is_prime(n)&&is_prime(n+2))
    {
    sum++;
    printf("%d %d\n",n,n+2);} 
   }
   printf("一共%d个",sum);
   return 0;
} 


int is_prime (int n){
    int k;
    for(k=2;k<=sqrt(1.0*n);k++)
       if(n%k==0)
         return 0;
    return 1;
}

截图:

task5

源代码:

#include <stdio.h>
#include <stdlib.h>
void hanoi(unsigned int n,char from,char temp,char to);
void moveplate (unsigned int n,char from,char to);
int sum=0;
int main(){
   unsigned int n;
   scanf ("%u",&n);
   hanoi(n,'A','B','C');
   printf("一共移动了%d次",sum);
   system("pause");
   return 0;
} 

void hanoi(unsigned int n,char from,char temp,char to){
    
    
    if(n==1)
      {
        moveplate(n,from,to);
       sum++;
}
    else
    {
        hanoi(n-1,from,to,temp);
        moveplate(n,from,to);
        sum++;
        hanoi(n-1,temp,from,to);
    }

    
}
void moveplate(unsigned int n,char from,char to){
    printf("%u:%c-->%c\n",n,from,to);
}

截图:

task6

源代码:

#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 i,p;
    int up=1;
    int down=1;
    if(m>n){
        return 0;
    }
    if(m==n||m==0){
        return 1;
    }
    for(i=n;i>n-m;i--)
      {
        up*=i;
    }
    for(p=m;p>0;p--)
       {
       down*=p;
    }
    return up/down;
}
#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==n||m==0)
{
    return 1;
}
    else if (m>n)
    {
    return 0;
}
    else
   {
    return func(n-1,m)+func(n-1,m-1);
}
}

截图:

task7

源代码:

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

// 函数声明
int print_charman (int n);
int head(int i);
int body(int i);
int leg(int i);
int cnt=0;
int main() {
    int n;

    printf("Enter n: ");
    scanf("%d", &n);
    print_charman(n); // 函数调用
       
    return 0;
}

// 函数print_charman定义
int print_charman (int n){
int i,t;
for(i=n*2-1;i>0;i-=2){
  int j,p;
    head(i);
    body(i);
    leg(i);
}
}
int head(int i){
    int j;
    int a;
    for(a=0;a<cnt;a++){
        printf("\t");
    }
    for(j=0;j<i;j++)
  {printf(" o\t");}
  printf("\n");
}
int body(int i)
{
    int j;
    int a;
    for(a=0;a<cnt;a++){
        printf("\t");
    }
    for(j=0;j<i;j++){
   printf("<H>\t");}
   printf("\n");
}
int leg(int i){
    int j;
    int a;
    for(a=0;a<cnt;a++){
        printf("\t");
    }
    for(j=0;j<i;j++){
   printf("I I\t");}
  
   printf("\n");
   cnt++;
}

截图:

 

posted @ 2024-10-28 22:55  danny555  阅读(3)  评论(0编辑  收藏  举报