实验3
#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:实现分数对应等级,形参是整形,返回字符型
问题2:没有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; }

问题1:求n各位数字的总和
问题2:能,一种用循环解决,另一种用递归解决,依次识别最后一位
#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:是递归模型f(n-1)=f(n)x,n是单数, f(n/2)=f(n)*f(n),n是双数
#include<stdio.h> int is_prime(int x); int main() { int s=0,a=0,b,n=0; for (int i = 3; i < 100; i = i + 2) { b = a; if (is_prime(i) == 1) { a = i; s++; } else { s = 0; } if (s >= 2) { printf("%d %d\n", b, a); n++; } } printf("共%d对素数",n); return 0; } int is_prime(int x) { for (int i = 2; i < x; i++) { if (x % i == 0) return 0; } return 1; }

#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 a=1, b=1, c=1; for (int i = n; i > 0; i--) { a *= i; } for (int i = m; i > 0; i--) { b *= i; } for (int i =n-m; i > 0; i--) { c *= i; } return a / (b * c); }

#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) { if (m > n) return 0; else if (n == m||n==0||m==0) return 1; else return func(n - 1, m) + func(n - 1, m - 1); }

#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; for (i = a; i > b && i > c; i--); for (i; i > 0; i--) { if (a % i == 0 && b % i == 0 && c % i == 0) return i; } }

#include <stdio.h> #include <stdlib.h> int print_charman(int n); int main() { int n; printf("Enter n: "); scanf_s("%d", &n); print_charman(n); // 函数调用 return 0; } int print_charman(int n){ int t = 2*n-1; for (t; t > 0;t-=2) { for (int i=(2*n-1-t)/2;i>0;i--) { printf("\t"); } for (int i=t; i > 0;i--) { printf(" O \t"); } printf("\n"); for (int i = (2 * n - 1 - t) / 2; i > 0; i--) { printf("\t"); } for (int i = t; i > 0; i--) { printf("<H>\t"); } printf("\n"); for (int i = (2 * n - 1 - t) / 2; i > 0; i--) { printf("\t"); } for (int i = t; i > 0; i--) { printf("I I\t"); } printf("\n"); } }


浙公网安备 33010602011771号