au0812

导航

 

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 }
View Code

截图

image

 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 }
View Code

递归

 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 }
View Code

截图

image

 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 }
View Code

 

截图

image

 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 }
View Code

截图

image

 

posted on 2025-10-25 21:02  南信大Au  阅读(12)  评论(1)    收藏  举报