task1
问题1:功能是输入分数然后对应分数给等级。整型,字符型。
问题2:没有break语句,导致重复执行,例如输入98会输出ABCD。另外ABCDE等字符应用单引号。
task2
问题1:将一个数字的所有位上的数字相加起来
问题2:能,第一种算法就是将一个数除以10取余数,就是最低位上的数,然后用ans累加的方法,计算所有位数上的和。第二种算法就是应用了递归函数,将数的每个位数求出来再相加。
task3
问题1:求x的n次方。
问题2:
task4
1 #include<stdio.h> 2 3 int is_prime(int); 4 int main(){ 5 int n=0; 6 printf("100以内的孪生素数:\n"); 7 for(int j=0;j<100;++j){ 8 if(is_prime(j)==1&&is_prime(j+2)==1){ 9 10 printf("%d %d\n",j,j+2); 11 ++n; 12 } 13 } 14 printf("100以内的孪生素数共有%d个",n); 15 return 0; 16 } 17 int is_prime(int n){ 18 19 if(n<=1) 20 return 0; 21 22 23 for(int i=2;i<n;++i){ 24 if(n%i==0) 25 return 0; 26 } 27 28 29 return 1; 30 }
截图

task5
非递归
1 #include <stdio.h> 2 int func(int n, int m); 3 4 int main() { 5 int n, m; 6 int ans; 7 8 while (scanf("%d%d", &n, &m) != EOF) { 9 ans = func(n, m); 10 printf("n = %d, m = %d, ans = %d\n\n", n, m, ans); 11 } 12 13 return 0; 14 } 15 16 int func(int n, int m) { 17 if (n < m) { 18 return 0; 19 } 20 else { 21 int x = 1, s = 1, r = 1; 22 int t = n,o=m; 23 int u=n-m; 24 for (int i = 0; i < n; ++i) { 25 26 x *= t; 27 --t; 28 } 29 for (int j = 0; j < m; ++j) { 30 31 s *= o; 32 --o; 33 } 34 for (int k = 0; k < (n - m); ++k) { 35 36 r *= u; 37 --u; 38 } 39 40 int ans = x / s / r; 41 return ans; 42 } 43 }
递归
1 #include <stdio.h> 2 int func(int n, int m); 3 4 int main() { 5 int n, m; 6 int ans; 7 8 while (scanf("%d%d", &n, &m) != EOF) { 9 ans = func(n, m); 10 printf("n = %d, m = %d, ans = %d\n\n", n, m, ans); 11 } 12 13 return 0; 14 } 15 16 int func(int n, int m) { 17 if(n<m||m<0) 18 return 0; 19 if(m==0) 20 return 1; 21 return func(n-1,m)+func(n-1,m-1); 22 }
截图

task6
1 #include <stdio.h> 2 int gcd(int a,int b,int c); 3 4 int main() { 5 int a, b, c; 6 int ans; 7 8 while(scanf("%d%d%d", &a, &b, &c) != EOF) { 9 ans = gcd(a, b, c); 10 printf("最大公约数: %d\n\n", ans); 11 } 12 13 return 0; 14 } 15 int gcd(int a,int b,int c){ 16 int min; 17 if(c<a&&c<b) 18 min=c; 19 if(b<c&&b<a) 20 min=b; 21 if(a<c&&a<b) 22 min=a; 23 int t=min; 24 for(int i=0;i<min;++i){ 25 if(a%t==0&&b%t==0&&c%t==0) 26 return t; 27 --t; 28 } 29 }
截图

task7
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 // 函数声明 5 // 待补足 6 // xxx 7 void print_charman(int n); 8 9 int main() { 10 int n; 11 12 printf("Enter n: "); 13 scanf("%d", &n); 14 print_charman(n); // 函数调用 15 16 return 0; 17 } 18 19 // 函数print_charman定义 20 // 待补足 21 // xxx 22 void print_charman(int n) { 23 int k=2*n-1; 24 25 for(int i=0;i<n;++i){ 26 for(int s=0;s<i;++s){ 27 printf(" "); 28 } 29 for(int j=0;j<k;++j){ 30 31 printf(" O "); 32 printf(" "); 33 } 34 printf("\n"); 35 for(int s=0;s<i;++s){ 36 printf(" "); 37 } 38 for(int j=0;j<k;++j){ 39 40 printf("<H>"); 41 printf(" "); 42 } 43 printf("\n"); 44 for(int s=0;s<i;++s){ 45 printf(" "); 46 } 47 for(int j=0;j<k;++j){ 48 printf("I I"); 49 printf(" "); 50 } 51 52 k-=2; 53 printf("\n"); 54 } 55 }
截图

浙公网安备 33010602011771号