实验3
实验任务1
源代码
1 #include <stdio.h>
2 char score_to_grade(int score);
3 int main(){
4 int score;
5 char grade;
6 while(scanf("%d",&score)!=EOF){
7 grade=score_to_grade(score);
8 printf("分数:%d,等级:%c\n\n",score,grade);
9 }
10 return 0;
11 }
12 char score_to_grade(int score){
13 char ans;
14 switch (score/10){
15 case 10:
16 case 9:ans='A';break;
17 case 8:ans='B';break;
18 case 7:ans='C';break;
19 case 6:ans='D';break;
20 defult:ans='E';
21
22 }
23 return ans;
24
25 }
26
运行结果

answer1:其化成等级;形参为int整数型;返回值为char是字符型;
answer2:break用于结束循环并结束switch,如果像这样改变ans会直接等于E,会运行在其后面的case中的内容
实验任务2
源代码
1 #include <stdio.h>
2 int sum_digits(int n);
3 int main(){
4 int n,ans;
5 while(printf("Enter n:"),scanf("%d",&n)!=EOF){
6 ans=sum_digits(n);
7 printf("n=%d,ans=%d\n\n",n,ans);
8 }
9 return 0;
10
11 }
12 int sum_digits(int n){
13 int ans=0;
14 while(n!=0){
15 ans+=n%10;
16 n/=10;
17
18 }
19 return ans;
20
21 }
运行结果

answer1:函数加起来
answer2:原代码是用来递归;改后的代码为迭代的方式
实验任务3
源代码
1 #include<stdio.h>
2 int power(int x,int n);
3 int main(){
4 int x,n;
5 int ans;
6 while(printf("Enter x and n:"),scanf("%d%d",&x,&n)!=EOF){
7 ans=power(x,n);
8 printf("n=%d,ans=%d\n\n",n,ans);
9 }
10 return 0;
11 }
12 int power(int x,int n){
13 int t;
14 if(n==0)
15 return 1;
16 else if(n%2)
17 return x*power(x,n-1);
18 else{
19 t=power(x,n/2);
20 return t*t;
21 }
22 }
运行结果

实验任务4
源代码
1 #include<stdio.h>
2 #define _CRT_SECURE_NO_WARNINGS
3 int sushu(int x);//函数申明
4 int main() {
5 printf("100以内的孪生素数");
6 int n,m;
7
8 for (int i = 1; i <= 98; i++) {
9 m = sushu(i);
10 n = sushu(i + 2);
11 if (m == 1 && n == 1) {
12 printf("%d %d\n", i, (i+2));
13 }
14 }
15 printf("100以内的孪生素数共有8个");
16 }
17 int sushu(int x) {
18 int h = 0;
19 for (int t = 1; t <= x; t++) {
20
21 if (x % t == 0) {
22 h += 1;
23
24 }
25 }
26 if (h == 2) {
27 return 1;
28 }
29 else {
30 return 0;
31 }
32
33 }
运行结果

实验任务5
源代码1递归
1 #include <stdio.h>
2 int func(int n, int m); // 函数声明
3 int main() {
4 int n, m;
5 int ans;
6 while (scanf_s("%d%d", &n, &m) != EOF) {
7 ans = func(n, m); // 函数调用
8 printf("n = %d, m = %d, ans = %d\n\n", n, m, ans);
9 }
10 return 0;
11 }
12 int func(int n, int m) {
13 int h;
14 if (m == 0||m==n) {
15 return 1;
16 }
17 else if (n < m) {
18 return 0;
19 }
20 else {
21 h = func(n - 1, m) + func(n - 1, m - 1);
22
23 }
24 return h;
25 }
运行结果
源代码2迭代
1 #include <stdio.h>
2 int func(int n, int m);
3 int a(int x);// 函数声明
4 int main() {
5 int n, m;
6 int ans;
7 while (scanf_s("%d%d", &n, &m) != EOF) {
8 ans = func(n, m); // 函数调用
9 printf("n = %d, m = %d, ans = %d\n\n", n, m, ans);
10 }
11 return 0;
12 }
13 int func(int n, int m) {
14 long long h,w,z,l;
15 w = a(n);
16 z = a(m);
17 l = a(n - m);
18 h = w / (l * z);
19 return h;
20
21
22
23 }
24 int a(int x) {
25 int sum = 1;
26 for (int i = 1; i <= x; i++) {
27 sum *= i;
28
29 }
30 return sum;
31 }
运行结果

实验任务6
源代码
1 #include <stdio.h>
2 int gcd(int, int, int);
3 int min(int a, int b);
4
5 int main() {
6 int a, b, c;
7 int ans;
8 while (scanf_s("%d%d%d", &a, &b, &c) != EOF) {
9 ans = gcd(a, b, c); // 函数调用
10 printf("最大公约数: %d\n\n", ans);
11 }
12 return 0;
13 }
14 int min(int a, int b) {
15 int h;
16 if (a <= b) {
17 return a;
18 }
19 else {
20 return b;
21 }
22 }
23 int gcd(int x, int y, int z) {
24 int h;
25 h = min(min(x, y), z);
26 return h;
27 }
运行结果

实验任务7
1 #include <stdio.h>
2 #include <stdlib.h>
3 void print_charman(int n);
4 void print_1(int);
5 void print_2(int);
6 void print_3(int);
7 void print_t(int);
8
9 int main() {
10 int n;
11 printf("Enter n: ");
12 scanf_s("%d", &n);
13 print_charman(n); // 函数调用
14 return 0;
15 }
16 void print_charman(int n) {
17 int h = (2 * n - 1);
18 int m = 0;
19 for (int i = 0; i < n; i++) {
20 print_t(m);
21 print_1(h);
22 print_t(m);
23 printf("\n");
24 print_t(m);
25 print_2(h);
26 print_t(m);
27 printf("\n");
28 print_t(m);
29 print_3(h);
30 print_t(m);
31 printf("\n");
32 h = h - 2;
33 m = m + 1;
34 }
35 }
36 void print_t(int x) {
37 for (int i = 0; i < x; i++) {
38 printf("\t");
39 }
40 }
41 void print_1(int x) {
42 for (int i = 0; i < x; i++) {
43 printf(" O\t");
44 }
45 }
46 void print_2(int x) {
47 for (int i = 0; i < x; i++) {
48 printf("<H>\t");
49 }
50 }
51 void print_3(int x) {
52 for (int i = 0; i < x; i++) {
53 printf("I I\t");
54 }
55 }
运行结果
运行结果


浙公网安备 33010602011771号