实验3
实验任务1
问题1:判断分数对应的等级
问题2:第22到26行代码失效,无论输入多少分,只输出E
实验任务2
问题1:将输入数字的各位数字相加求和
问题2:可以实现同样的输出。第二种算法使用迭代,将n除以10的余数相加
实验任务3
问题1:计算x的n次方
问题2:是递归函数

实验任务4
源代码
1 #include <math.h> 2 #include<stdio.h> 3 int is_prime(int n){ 4 int i; 5 for(i=2; i<=sqrt(n)+1; i++) { 6 if(n%i==0) {return 0;} 7 } 8 return 1; 9 } 10 int main() { 11 int i=0,n; 12 printf("100以内的孪生素数\n"); 13 for(n=2; n<100; n++) { 14 if(is_prime(n)==1&&is_prime(n+2)==1) { 15 printf("%d %d\n",n,n+2); 16 i++; 17 } 18 } 19 printf("100以内的孪生素数共有%d个",i); 20 }
实验结果

实验任务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("%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 if(n<m||n<0||m<0) {return 0;} 14 switch (m) { 15 case 1:return n; 16 case 0:return 1; 17 } 18 return func(n-1,m)+func(n-1,m-1); 19 }
实验结果

实现方式2:递归方式
源代码
1 #include <stdio.h> 2 int func(int n, int m); // 函数声明 3 4 int main() { 5 int n, m; 6 int ans; 7 while(scanf("%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 int ans; 15 if(n<m||n<0||m<0) {return 0;} 16 switch (m) { 17 case 1:return n; 18 case 0:return 1; 19 } 20 ans=func(n-1, m-1)+func(n-1,m); 21 return ans; 22 }

实验任务6
源代码
1 #include <stdio.h> 2 int gcd(int a, int b,int c); 3 int main() { 4 int a, b, c; 5 int ans; 6 while(scanf("%d%d%d", &a, &b, &c) != EOF) { 7 ans = gcd(a, b, c); // 函数调用 8 printf("最大公约数: %d\n\n", ans); 9 } 10 return 0; 11 } 12 int gcd(int a, int b,int c) { 13 int d[3],min=9999999; 14 d[0]=a,d[1]=b, d[2]=c; 15 for(int i=0;i<3;i++) { 16 if (d[i-1]<min) min=d[i-1]; 17 } 18 for(;min>0;min--) { 19 if (a%min==0&&b%min==0&&c%min==0) {break;} 20 } 21 return min; 22 }

实验任务7
源代码
1 #include <stdio.h> 2 #include <stdlib.h> 3 void print_charman(int n); 4 void syc(int n,int m); 5 int main() { 6 int n; 7 printf("Enter n: "); 8 scanf("%d", &n); 9 print_charman(n); // 函数调用 10 11 return 0; 12 } 13 void syc(int n,int m) { 14 for (int i=0; i<m; i++) { 15 printf(" \t"); 16 } 17 for (int i=0; i<n; i++) { 18 printf(" o \t"); 19 } 20 printf("\n"); 21 for (int i=0; i<m; i++) { 22 printf(" \t"); 23 } 24 for (int i=0; i<n; i++) { 25 printf("<H>\t"); 26 } 27 printf("\n"); 28 for (int i=0; i<m; i++) { 29 printf(" \t"); 30 } 31 for (int i=0; i<n; i++) { 32 printf("I I\t"); 33 } 34 printf("\n"); 35 } 36 void print_charman(int n) { 37 for (int i=0; i<n; i++) { 38 syc(2*n-i*2-1,i); 39 printf("\n"); 40 } 41 }
实验结果



浙公网安备 33010602011771号