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

浙公网安备 33010602011771号