实验3
task1
代码
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<time.h> 4 #include<windows.h> 5 #define N 80 6 7 void print_text(int line,int col,char text[]); 8 void print_spaces(int n); 9 void print_blank_lines(int n); 10 11 int main(){ 12 int line,col,i; 13 char text[N]="hi,Noverber~"; 14 15 srand(time(0)); 16 17 for(i=1;i<=10;++i){ 18 line = rand() % 25; 19 col = rand() %80; 20 print_text(line,col,text); 21 Sleep(1000); 22 } 23 24 return 0; 25 } 26 27 void print_spaces(int n){ 28 int i; 29 30 for(i = 1;i <= n;++i){ 31 printf(" "); 32 } 33 } 34 35 void print_blank_lines(int n){ 36 int i; 37 38 for(i = 1;i <= n;++i){ 39 printf("\n"); 40 } 41 } 42 43 void print_text(int line,int col,char text[]){ 44 print_blank_lines(line-1); 45 print_spaces(col-1); 46 printf("%s",text); 47 }
结果

功能
随机生成10个位置的“hi,Noverber~”
task2_1
代码
1 #include<stdio.h> 2 long long fac(int n); 3 4 int main(){ 5 int i,n; 6 printf("Enter n:"); 7 scanf("%d",&n); 8 9 for(i=1;i<=n;i++){ 10 printf("%d!= %lld\n",i,fac(i)); 11 } 12 return 0; 13 } 14 15 long long fac(int n){ 16 static long long p = 1; 17 18 p = p*n; 19 20 return p; 21 }
1 #include<stdio.h> 2 long long fac(int n); 3 4 int main(){ 5 int i,n; 6 printf("Enter n:"); 7 scanf("%d",&n); 8 9 for(i=1;i<=n;i++){ 10 printf("%d!= %lld\n",i,fac(i)); 11 } 12 return 0; 13 } 14 15 long long fac(int n){ 16 static long long p = 1; 17 printf("p = %lld\n",p); 18 p = p*n; 19 20 return p; 21 }
结果


task2_2
代码
1 #include<stdio.h> 2 int func(int,int); 3 4 int main(){ 5 int k = 4,m = 1,p1,p2; 6 7 p1=func(k,m); 8 p2=func(k,m); 9 printf("%d,%d\n",p1,p2); 10 11 return 0; 12 } 13 14 int func(int a,int b){ 15 static int m = 0,i = 2; 16 17 i += m + 1; 18 m=i+a+b; 19 20 return m; 21 }
结果

特性:static变量只能初始化一次,生命周期为整个程序的运行期间。
task3
代码
1 #include<stdio.h> 2 long long func(int n); 3 4 int main(){ 5 int n; 6 long long f; 7 while (scanf("%d",&n)!=EOF){ 8 f = func(n); 9 printf("n = %d,f = %lld\n",n,f); 10 } 11 12 return 0; 13 } 14 15 long long func(int n){ 16 if(n==1){ 17 return 1; 18 }else{ 19 return 2*func(n-1)+1; 20 } 21 }
结果

task4_1
代码
1 #include<stdio.h> 2 int func(int n,int m); 3 4 int main(){ 5 int n,m; 6 7 while(scanf("%d%d",&n,&m)!=EOF){ 8 printf("n = %d,m = %d,ans = %d\n",n,m,func(n,m)); 9 } 10 11 return 0; 12 } 13 14 int func(int n,int m){ 15 int i,ans; 16 int up=1,down=1,a=1; 17 for(i=1;i<=m;i++){ 18 down*=i; 19 } 20 for(i=1;i<=n;i++){ 21 up*=i; 22 } 23 for(i=1;i<=n-m;i++){ 24 a*=i; 25 } 26 ans = up/(a*down); 27 return ans; 28 }
结果

task4_2
代码
1 #include<stdio.h> 2 int func(int n,int m); 3 4 int main(){ 5 int n,m; 6 7 while(scanf("%d%d",&n,&m)!=EOF){ 8 printf("n = %d,m = %d,ans = %d\n",n,m,func(n,m)); 9 } 10 11 return 0; 12 } 13 14 int func(int n,int m){ 15 if(m==0||n==m){ 16 return 1; 17 }else if(n<m){ 18 return 0; 19 }else{ 20 return func(n-1,m)+func(n-1,m-1); 21 } 22 }
结果

task5
代码
1 #include<stdio.h> 2 void han(unsigned int n,char from,char temp,char to); 3 void move(unsigned int n,char from,char to); 4 5 int main(){ 6 unsigned int n; 7 while(scanf("%u",&n)!=EOF){ 8 han(n,'A','B','C'); 9 } 10 return 0; 11 } 12 13 void han(unsigned int n,char from,char temp,char to){ 14 if(n==1){ 15 move(n,from,to); 16 }else{ 17 han(n-1,from,to,temp); 18 move(n,from,to); 19 han(n-1,temp,from,to); 20 } 21 } 22 23 void move(unsigned int n,char from,char to){ 24 printf("%u:%c-->%c\n",n,from,to); 25 }
结果

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

task7
代码
1 #include<stdio.h> 2 int check(int n); 3 4 int main(){ 5 int n; 6 for(n=1;n>0;n++){ 7 if(check(n)){ 8 printf("%d",n); 9 break; 10 } 11 } 12 return 0; 13 } 14 15 int check(int n){ 16 int a=n*n; 17 int b=n*n*n; 18 int d[10]={0}; 19 int i; 20 21 while(a!=0){ 22 d[a%10]++; 23 a/=10; 24 } 25 while(b!=0){ 26 d[b%10]++; 27 b/=10; 28 } 29 for(i=0;i<10;i++){ 30 if(d[i]!=1){ 31 return 0; 32 } 33 } 34 35 return 1; 36 }
结果

浙公网安备 33010602011771号