实验作业3
三、实验内容
task1.c
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, November~"; 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); // 暂停1000ms 22 } 23 return 0; 24 25 } // 打印n个空格 26 27 void print_spaces(int n) { 28 int i; 29 30 for(i = 1; i <= n; ++i) 31 printf(" "); 32 } 33 34 // 打印n行空白行 35 void print_blank_lines(int n) { 36 int i; 37 for(i = 1; i <= n; ++i) 38 printf("\n"); 39 } 40 41 // 在第line行第col列打印一段文本 42 void print_text(int line, int col, char text[]) { 43 print_blank_lines(line-1); // 打印(line-1)行空行 44 print_spaces(col-1); // 打印(col-1)列空格 45 printf("%s", text); // 在第line行、col列输出text中字符串 46 }

每隔一秒下面15x80随机输入一次字符串。
:秒少少少会不会像动画嘞(。ì _ í。)
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! = %lld\n", i, fac(i)); return 0; } // 函数定义 long long fac(int n) { static long long p = 1; p = p * n; printf("p = %lld\n", p); return p; }

task2_2.c
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 // 函数定义 15 int func(int a, int b) { 16 static int m = 0, i = 2; 17 18 i += m + 1; 19 m = i + a + b; 20 21 return m; 22 }

过保质期了吧hhh
task3.c
1 #include <stdio.h>
2 long long func(int n); // 函数声明 3 int main() 4 { 5 6 int n; 7 long long f; 8 while (scanf("%d", &n) != EOF) 9 { 10 f = func(n); // 函数调用 11 printf("n = %d, f = %lld\n", n, f);//英文字母ll 12 } 13 14 return 0; 15 } 16 17 long long func(int n) 18 { 19 if(n == 1) 20 return 1; 21 else 22 return (func(n-1)+1)*2-1; 23 }

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

task5,c
#include<stdio.h> #include<stdlib.h> #include<math.h> void hanoi_ta(unsigned int n,char from,char temp,char to); void moveplate(unsigned int n,char from,char to); int i; int main() { unsigned int n; while(scanf("%d",&n) != EOF) { hanoi_ta(n,'A','B','C'); printf("一共移动了%d次\n",i); i = 0; } return 0; } void hanoi_ta(unsigned int n,char from,char temp,char to) { if(n == 1) moveplate(n,from,to); else { hanoi_ta(n-1,from,to,temp); moveplate(n,from,to); hanoi_ta(n-1,temp,from,to); } } void moveplate(unsigned int n,char from,char to) { printf("%u:%c-->%c\n",n,from,to); i++; }

task6.c
1 #include <stdio.h> 2 #include <math.h> 3 long func(long s); // 函数声明 4 5 int main() 6 { 7 long s, t; 8 printf("Enter a number: "); 9 while (scanf("%ld", &s) != EOF) 10 { 11 t = func(s); // 函数调用 12 printf("new number is: %ld\n\n", t); 13 printf("Enter a number: "); 14 } 15 return 0; 16 } 17 18 long func(long s) 19 { 20 int i,k,d=1,sum=0; 21 int a[10]; 22 int b[10]; 23 for(i = 0,k = 0;i<10;i++) 24 { 25 a[i] = s%10; 26 if(a[i]%2 != 0) 27 { 28 b[k]=a[i]; 29 k++; 30 } 31 s /= 10; 32 } 33 for(i=0;i<k;i++) 34 { 35 sum+=b[i]*d; 36 d *= 10; 37 } 38 return sum; 39 }


浙公网安备 33010602011771号