实验3

Task2_2

 1 // 练习:局部static变量特性
 2 #include <stdio.h>
 3 int func(int, int); // 函数声明
 4 int main() {
 5 int k = 4, m = 1, p1, p2;
 6 p1 = func(k, m); // 函数调用
 7 p2 = func(k, m); // 函数调用
 8 printf("%d, %d\n", p1, p2);
 9 return 0;
10 }
11 // 函数定义
12 int func(int a, int b) {
13 static int m = 0, i = 2;
14 i += m + 1;
15 m = i + a + b;
16 return m;
17 }

 

RS2_2

static变量在主函数结束后才释放内存

 

Task3

 1 #include <stdio.h>
 2 long long func(int n);
 3 int main() {
 4     int n;
 5     long long f;
 6     while (scanf("%d", &n) != EOF) {
 7         f = func(n)-1;
 8         printf("n = %d, f = %lld\n", n,f);
 9     }
10     return 0;
11 }
12 long long func(int n){
13     if(n==0) return 1;
14     if(n>=1) return 2*func(n-1);
15 }

 

 

RS3

 

Task4_1迭代

 1 #include <stdio.h>
 2 int func(int n, int m);
 3 int main() {
 4 int n, m;
 5 while(scanf("%d%d", &n, &m) != EOF)
 6 printf("n = %d, m = %d, ans = %d\n", n, m, func(n, m));
 7 return 0;
 8 }
 9 int func(int n, int m) {  
10     int i;
11     int Rs=1;
12     for(i=n-m+1;i<=n;i++){
13         Rs=Rs*i;
14     }
15     for(i=1;i<=m;i++){
16         Rs=Rs/i;
17     }
18     return Rs;
19 }  

 

RS4_1迭代

 

Task4_2递归

 

 1 #include <stdio.h>
 2 int func(int n, int m);
 3 int main() {
 4 int n, m;
 5 while(scanf("%d%d", &n, &m) != EOF)
 6 printf("n = %d, m = %d, ans = %d\n", n, m, func(n, m));
 7 return 0;
 8 }
 9 int func(int n, int m) {  
10     if(m==0||m==n) return 1;
11     else return func(n-1,m)+func(n-1,m-1);
12     
13 }

 

RS4_2递归

 

Task5

 1 #include <stdio.h> 
 2 int hano(int ,char from ,char still, char to) ;
 3 int main(){
 4     int n;
 5     while(scanf("%d",&n)!=EOF){
 6         printf("******Total:%d******",hano(n,'A','B','C'));
 7     }
 8     return 0;
 9 }
10 int hano(int n, char from, char to, char still) {  
11     static int cnt=0;
12     if (n == 1) {  
13         printf(" 1  %c --> %c\n", from, to);
14         cnt++;
15         return cnt;  
16     }  
17     hano(n - 1, from, still, to);  
18     printf(" %d  %c --> %c\n", n, from, to);
19     cnt++;  
20     hano(n - 1, still, to, from);  
21         
22 }  

 

RS5

 

Task6

 1 #include <stdio.h>
 2 #include <math.h>
 3 long func(long s);
 4 int main() {
 5     long s, t;
 6     printf("Enter a number: ");
 7     while (scanf("%ld", &s) != EOF) {
 8         t = func(s);
 9         printf("new number is: %ld\n\n", t);
10         printf("Enter a number: ");
11     }
12     return 0;
13 }
14 long func(long s){
15     long UlRs,Rs=0,stl,r; 
16     stl=s;
17     int i=0;
18     while(stl>0){
19         r=stl%10;
20         if(r%2==1){
21             Rs=10*Rs+r;
22             i++;
23         }
24         stl/=10;
25     }
26     for(;i>0;i--){
27         r=Rs%10;
28         Rs/=10;
29         UlRs=UlRs*10+r;    
30     }
31     return UlRs;
32 }

 

RS6

 

Task7

 1 #include <stdio.h>  
 2 #include <stdbool.h>  
 3   
 4 bool has(int num) {  
 5     bool digits[10] = { false };  
 6     while (num > 0) {  
 7         int digit = num % 10;  
 8         if (digits[digit]) {  
 9             return true;  
10         }  
11         digits[digit] = true;  
12         num /= 10;  
13     }  
14     return false;  
15 }  
16   
17 bool hasa(int num1, int num2) {  
18     bool digits[10] = { false };  
19     while (num1 > 0 || num2 > 0) {  
20         if (num1 > 0) {  
21             int digit = num1 % 10;  
22             digits[digit] = true;  
23             num1 /= 10;  
24         }  
25         if (num2 > 0) {  
26             int digit = num2 % 10;  
27             digits[digit] = true;  
28             num2 /= 10;  
29         }  
30     }  
31     for (int i = 0; i < 10; i++) {  
32         if (!digits[i]) {  
33             return false;  
34         }  
35     }  
36     return true;  
37 }  
38   
39 int main() {  
40     for (int i = 0; i < 10000; i++) {  
41         long square = i * i;  
42         long cube = i * i * i;  
43         if (!has(square) && !has(cube) && hasa(square, cube)) {  
44             printf("找到符合条件的数字:%d\n", i);  
45             return 0;  
46         }  
47     }  
48     printf("没有找到符合条件的数字\n");  
49     return 0;  
50 }

 

RS7

 

posted @ 2023-11-06 12:57  KXJSLL  阅读(12)  评论(0)    收藏  举报