实验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号