实验3
实验任务1
//3task1 #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);//暂停1000ms } return 0; } //打印n个空格 void printSpaces(int n){ int i; for(i=1; i<=n; ++i) printf(" "); } // 打印n行空白行 void printBlankLines(int n) { int i; for(i=1; i<=n; ++i) printf("\n"); } //在第line行第col列打印一段文本 void printText(int line, int col, char text[]) { printBlankLines(line-1); // 打印n-1行空行 printSpaces(col-1); printf("%s",text); }
实验任务2
//3task2_1 #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! = %lld\n", i, fac(i)); return 0; } //函数定义 long long fac(int n) { static long long p = 1; p = p * n; return p; }
增加一行代码后截图
//3task2_2 //练习:局部static变量特性 #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; }
实验任务3
//3task3 #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 m) { int i; static long long p; for(i=0,p=0;i<m;i++) { p= 2*p + 1;} return p; }
实验任务4
//3task4 #include <stdio.h> #include <math.h> void hanoi(unsigned int n,char from,char temp,char to); void moveplate(unsigned int n,char from,char to); int main() { unsigned int n; int i; while(scanf("%u",&n)!=EOF) { hanoi(n,'A','B','C'); i=pow(2,n)-1; printf("一共移动了%d次\n\n\n",i); } 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); }
实验任务5
//3task5 #include <stdio.h> #include <math.h> #include <stdlib.h> int is_prime(int n); int main() { int n,p,q,x,y; for(n=4;n<=20;n+=2) { p=1; do { p++; q=n-p; x = is_prime(p); y = is_prime(q); } while(x*y == 0); printf("%d = %d + %d\n",n,p,q); } return 0; } //函数定义 int is_prime(int n) { int i; for(i=2;i<sqrt(n);i++) { int a; if(n%i == 0) return 0; } return 1; }
实验任务6
//3task6 #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; int b=0,c=1; while(s!=0) { a=s%10; if(a%2==0) b=b; else { b=b+a*c; c=c*10; } s=s/10; } return b; }