实验3
实验任务1
代码
#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
判断分数对应的等级;int;char
问题2
当输入大于60的一个数时,由于ans='';后面没有break,将继续往下执行,直至switch结束,最后ans='E',所以无论输入什么数输出的结果都是E
实验任务2
代码
#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
计算一个整数各个位数上的数之合
问题2
能;第一种是嵌套调用,第二种是递归调用
实验任务3
代码
#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
计算x的n次方
问题2
是;

实验任务4
代码
#include<stdio.h>
int is_prime(int n);
int main()
{
	int n,j;
	printf("100以内的孪生素数:\n");
	for (n = 2,j=0; n <= 98; n++)
	{
		if (is_prime(n) && is_prime(n + 2))
		{
			printf("%d %d\n", n, n + 2);
			j += 1;
		}
	}
	printf("100以内的孪生素数共有%d个.\n", j);
	return 0;
}
int is_prime(int n)
{
	int i;
	for (i = 2; i <= n / 2; i++)
	{
		if (n % i == 0)
		{
			return 0;
		}
	}
	return 1;
}
运行截图

实验任务5
5_1.c代码
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;
	double ans = 1;
	for (i = 0; i <= m - 1; i++)
		ans = ans * (n - i) / (m - i);
	
	return ans;
}
5_1.c运行截图

5_2.c代码
#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)
		return 0;
	if (m == 0)
		return 1;
	return func(n - 1, m) + func(n - 1, m - 1);
}
5_2.c运行截图

实验任务6
代码
#include<stdio.h>
int gcd(int a, int b, int c);
int main() 
{
	int a, b, c;
	int ans;
	while (scanf("%d%d%d", &a, &b, &c) != EOF) 
	{
		ans = gcd(a, b, c);
		printf("最大公约数: %d\n\n", ans);
	}
	return 0;
}
int gcd(int a, int b, int c)
{
	int i;
	i = a;
	if (i > b)
		i = b;
	if (i > c)
		i = c;
	for (; i >= 1; i--)
	{
		if (a % i == 0 && b % i == 0 && c % i == 0)
			return i;
	}
}
运行截图

实验任务7
代码
#include<stdio.h>
#include <stdlib.h>
int print_charman(int n);
int main() 
{
	int n;
	printf("Enter n: ");
	scanf("%d", &n);
	print_charman(n); 
	return 0;
}
int print_charman(int n)
{
	int i,j,k,l,p=0;
	j = 2 * n - 1;
	for (i = 1; i <= n; i++)
	{
		for (l = 0; l < p; l++)
			printf("   \t");
		for (k = 0; k < j; k++)
			printf(" O \t");
		printf("\n");
		for (l = 0; l < p; l++)
			printf("   \t");
		for (k = 0; k < j; k++)
			printf("<H>\t");
		printf("\n");
		for (l = 0; l < p; l++)
			printf("   \t");
		for (k = 0; k < j; k++)
			printf("I I\t");
		printf("\n");
		
		j -= 2;
		p += 1;
	}
	return 0;
}
运行截图


 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号