实验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:初始化grade,整型,字符型
问题2:未结束,直接都是E
作业2
#include <stdio.h> 
int sum_digits(int n);
int main()
{
int n;
int ans;
while(printf("Enter n: "), scanf_s("%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_s("%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:计算次方
问题2:是
作业4
#include <stdio.h>
#include<math.h>
int main() {
int a, count = 0;
printf("100以内的孪生素数:\a");
for (a = 2; a < 99; a++) {
	if (is_prime(a) && is_prime(a + 2)) {
		printf("%d %d\a", a, a + 2);
		count++;
	}
}
printf("\a100以内的孪生素数共有%d个。\a", count);
return 0;
}
int is_prime(int a) {
int i;
if (a < 2)
return 0;
if (a == 2)
	return 1;
if (a % 2 == 0)
	return 0;
for (i = 3; i <= sqrt(a); i++) {
	if (a % i == 0)
		return 0;
}
return 1;
}

作业5
迭代型
#include <stdio.h>
int func(int n, int m);
int main()
{
int n, m;
int ans;
while(scanf_s("%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, ans = 1;
for (i = 1; i < m; i++)
ans = ans * (n - i) / (m - i);
return ans;
}
递归型
#include <stdio.h>
int func(int n, int m);
int main()
{
int n, m;
int ans;
while(scanf_s("%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, result = 1;
if (n < m)
return 0;
else if (n == m || m == 0)
return 1;
else {
for (i = 1; i <= m; i++) {
result = result * (n - m + i) / i;
}
}
return result;
}

作业6
#include <stdio.h> 
int gcd(int a, int b, int c);
int main()
{
int a, b, c;
int ans;
while (scanf_s("%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 = a;
if (b < i) {
i = b;
}
if (c < i) {
i = c;
}
for (i; i > 0; i--) {
if (a % i == 0 && b % i == 0 && c % i == 0) {
return i;
}
}
}

作业7
#include <stdio.h>
#include <stdlib.h>
void print_charman(int n);
int main()
{
int n;
printf("Enter n: ");
scanf_s("%d", &n);
print_charman(n);
return 0;
}
void print_charman(int n) {
for (int i = 0; i < n; i++) {
int c = 2 * (n - i) - 1;
int s = i * 3;
for (int line = 0; line < 3; line++) {
for (int k = 0; k < s; k++) {
printf("  ");
}
for (int j = 0; j < c; j++)
{
switch (line) {
case 0:printf(" O    "); break;
case 1:printf("
case 2:printf("I I   "); break;
            }
        }
        printf("\n");
    }
    printf("\n");
}
}


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