实验三

task1.c

#include<stdio.h> #include<stdlib.h> #include<time.h> #include<windows.h> #define N 80  void printText(int line,int col, char text[]); void printSpaces(int n); void printBlanklines(int n);  int main() {     int line, col, i;     char text[N]= hi,May~;          srand(time(0));          for(i=1;i<=10;++i)     {         line = rand()%25;         col = rand()%80;         printText(line,col,text);         Sleep(1000);      }          return 0; }  void printSpaces(int n) {     int i;     for(i=1;i<=n;i++)         printf( ); } void printBlanklines(int n) {     int i;     for(i=1;i<=n;i++)         printf(\n); } void printText(int line,int col,char text[]) {     printBlanklines(line-1);     printSpaces(col-1);     printf(%s,text);  } 

间隔1秒钟将文本内容“hi,May”打印出来

 

task2_1.c

#include<stdio.h> long long fac(int n); int main() {     int i,n;          printf(Enter n:);     scanf(%d,&n);          for(i=1;i<=n;++i)     printf(%d != %11d\n,i,fac(i));          return 0; } long long fac(int n) {     static long long p=1;     p= p * n;     printf(p=%11d\n,p);     return p; }

 

task2_2.c

#include<stdio.h> int func(int a,int b);  int main() {     int k=4,m=1,p1,p2;          p1=func(k,m);     p2=func(k,m);     printf(%d,%d\n,p1,p2);          return 0; } int func(int a,int b) {     static int m= 0,i =2;          i+=m+1;     m=i+a+b;          return m; }

局部static变量在声明处初始化,之后将变量运算的所得值,代替原来变量所被赋予的值进行下次的运算。

 

task.3.c

#include<stdio.h> long long fun(int n);  int main() {     int n;     long long f;          while(scanf(%d,&n) != EOF)     {         f=fun(n);         printf(n =%d, f=%lld\n,n,f);              }     return 0; } long long fun(int n) {     long long k;     if(n==0)     return 0;     else     k=2*fun(n-1)+1;     return k;      }

 

task4.c

#include<stdio.h> void hanoi(unsigned int n,char from,char temp,char to); void moveplate(unsigned int n,char from,char to); long long fun(int n); int main() {     unsigned int n;     while(scanf(%u,&n) != EOF)     {         hanoi(n,'A','B','C');                  printf(一共移动了%d次\n,fun(n));     }     return 0; } void hanoi(unsigned int n,char from,char temp,char to) {     if(n==1)         moveplate(n,from,to);     else     {         hanoi(n-1,from,to,temp);         moveplate(n,from,to);         hanoi(n-1,temp,from,to);     } } void moveplate(unsigned int n,char from,char to) {     printf(第%u个盘子:%c-->%c\n,n,from,to); } long long fun(int n) {     long long k;     if(n==0)     return 0;     else     k=2*fun(n-1)+1;     return k;      }

 

task5.c

#include<stdio.h> #include<math.h> #include<stdlib.h> int is_prime(int n); int main() {     int i,p;     for(i=4;i<=20;i+=2)     {         for(p=2;p<=i/2;p++)         if(is_prime(p)==1&&is_prime(i-p)==1)            printf(%d=%d+%d\n,i,p,(i-p));     }          return 0; } int is_prime(int n) {     int i;     for(i=2;i<=sqrt(n);i++)      if(n%i==0)      break;      if(i>sqrt(n)&&n>1)      return 1;      else      return 0;       }

 

task6.c

#include<stdio.h> long fun(long s);  int main() {          long s, t;     printf(Enter a number:);     while(scanf(%ld,&s) != EOF)     {         t = fun(s);         printf(new number is: %ld\n\n,t);         printf(Enter a number:);     }     return 0; } long fun(long s) {     int a[100],i=0,j,k;     while(s!=0)     {         a[i]=s%10;         s/=10;         i++;      }       for(j=0;j<=i;j++)       {           if(a[i-j-1]%2==1)         k=k*10+a[i-j-1];         }         return k; }