实验三
1 #define N 80 2 3 void printText(int Line, int col, char text[]); 4 void printSpaces(int n); 5 void printBlankLines(int n); 6 7 int main() 8 { 9 int line, col, i; 10 char text[N]="hi, May~"; 11 12 srand(time(0)); 13 14 for(i=0;i<=10;i++) 15 { 16 line = rand()%25; 17 col = rand()%80; 18 printText(line, col, text); 19 Sleep(1000); 20 } 21 22 return 0; 23 } 24 25 void printSpaces(int n) 26 { 27 int i; 28 29 for(i=1; i<=n; i++) 30 { 31 printf(" "); 32 } 33 } 34 35 void printBlankLines(int n) 36 { 37 int i; 38 39 for(i=1; i<=n; i++) 40 { 41 printf("\n"); 42 } 43 } 44 45 void printText(int line, int col, char text[]) 46 { 47 printBlankLines(line-1); 48 printSpaces(col-1); 49 printf("%s",text); 50 }
在屏幕十个随机位置每隔1秒打印hi,May#include <stdio.h>
实验任务2:
long long fac(int n); int main() { int i, n; printf("Enter n: "); scanf("%d", &n); for (i = 1; i <= n; ++i) printf("%d! = %lld\n", i, fac(i)); return 0; } long long fac(int n) { static long long p = 1; p = p * n; return p; }
#include<stdio.h> int func(int,int); 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变量特性:该变量只可在其被声明的函数中被调用,且再次进入该函数时保存值不变。
实验任务3:
1 #include<stdio.h> 2 long long fun(int n); 3 4 int main() 5 { 6 int n; 7 long long f; 8 9 while(scanf("%d",&n)!=EOF) 10 { 11 f=fun(n); 12 printf("n=%d, f=%lld\n",n,f); 13 } 14 15 return 0; 16 } 17 18 long long fun(int n) 19 { 20 long long f; 21 int i; 22 23 if(n==1) 24 f=1; 25 else 26 f=2*fun(n-1)+1; 27 28 return f; 29 }
实验任务4:
1 #include<stdio.h> 2 void hanoi(unsigned int n, char from, char temp, char to); 3 void moveplate(unsigned int n, char from, char to); 4 int count(int n); 5 int main() 6 { 7 unsigned int n; 8 while (scanf("%u", &n) != 0) 9 { 10 hanoi(n, 'A', 'B', 'C'); 11 printf("一共移动了%d次\n\n", count(n)); 12 } 13 return 0; 14 } 15 void hanoi(unsigned int n, char from, char temp, char to) 16 { 17 if (n == 1) 18 { 19 moveplate(n, from, to); 20 } 21 else 22 { 23 hanoi(n - 1, from, to, temp); 24 moveplate(n, from, to); 25 hanoi(n - 1, temp, from, to); 26 } 27 } 28 void moveplate(unsigned int n, char from, char to) 29 { 30 printf("第%u个盘子:%c-->%c\n", n, from ,to); 31 } 32 int count(int n) 33 { 34 int i = 1,s; 35 if (n == 1) 36 s = 1; 37 else 38 s = 2 * count(n - 1) + 1; 39 return s; 40 }
实验任务5:
1 #include <stdio.h> 2 int Isprime(int n){ 3 int i; 4 for(i=2;i<=n-1;i++) 5 { 6 if(n%i==0) 7 return 0; 8 } 9 return 1; 10 } 11 int main(){ 12 int i,n; 13 for(n=4;n<=20;n+=2) 14 { 15 for(i=2;i<=n/2;i++) 16 { 17 if(Isprime(i)*Isprime(n-i)){ 18 printf("%d=%d+%d\n",n,i,n-i); 19 break; 20 } 21 } 22 } 23 return 0; 24 }
1 #include <stdio.h> 2 #include<math.h> 3 long fun(long s); 4 int main() 5 { 6 long s, t; 7 printf("Enter a number: "); 8 while (scanf("%ld", &s) != 0) 9 { 10 t = fun(s); 11 printf("new number is: %ld\n\n", t); 12 printf("Enter a number: "); 13 } 14 return 0; 15 } 16 long fun(long s) 17 { 18 long i, j=0,k=0; 19 while (s / 10 != 0||s==1) 20 { 21 i = s % 10; 22 if (i % 2 != 0) 23 { 24 j = i * pow(10,k) + j; 25 k++; 26 } 27 s /= 10; 28 } 29 return j; 30 }