实验3
#include <stdio.h> #include <stdlib.h> #include <time.h> #include <windows.h> #define N 80 void print_text(int line, int col, char text[]); // 函数声明 void print_spaces(int n); // 函数声明 void print_blank_lines(int n); // 函数声明 int main() { int line, col, i; char text[N] = "hi, November~"; srand(time(0)); // 以当前系统时间作为随机种子 for(i = 1; i <= 10; ++i) { line = rand() % 25; col = rand() % 80; print_text(line, col, text); Sleep(1000); // 暂停1000ms } return 0; } // 打印n个空格 void print_spaces(int n) { int i; for(i = 1; i <= n; ++i) printf(" "); } // 打印n行空白行 void print_blank_lines(int n) { int i; for(i = 1; i <= n; ++i) printf("\n"); } // 在第line行第col列打印一段文本 void print_text(int line, int col, char text[]) { print_blank_lines(line-1); // 打印(line-1)行空行 print_spaces(col-1); // 打印(col-1)列空格 printf("%s", text); // 在第line行、col列输出text中字符串 }

在屏幕上打出一串字符串“hi,November”并在随机行,随机列生成,每次生成的时间相隔一秒。执行n次后自动弹出。
任务2
#include <stdio.h> #include<stdlib.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; system("pause"); return p; }

实验2_2
理论: 8,17.
#include<stdio.h> #include<stdlib.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); system("pause"); return 0; } int func(int a, int b) { static int m = 0, i = 2; i += m + 1;/*p1ʱ3 p2ʱ12*/ m = i + a + b;/*p1ʱ8 p2ʱ17*/ return m; }

任务3
源代码
1 #include <stdio.h>
2 long long func(int n);
3
4 int main() {
5 int n;
6 long long f;
7
8 while (scanf("%d", &n) != EOF) {
9 f = func(n);
10 printf("n = %d, f = %lld\n", n, f);
11 }
12
13 return 0;
14 }
15 long long func(int n){
16 if(n==0)
17 return 0;
18 else
19 return func(n-1)*2+1;
20 }
运行结果
任务4
源代码
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 return 0;
11 }
12 /*int func(int n,int m){ //递归法
13 if(n<m)
14 return 0;
15 if(m==0||n==0)
16 return 1;
17 else
18 return func(n-1,m)+func(n-1,m-1);
19
20 }*/
21 int func(int n,int m){ //迭代法
22 int i,a=1,b=1,c=1,s=0;
23 if(n<m)
24 return 0;
25 else if(m==0||n==0)
26 return 1;
27 else{
28 for(i=1;i<=n;i++)
29 a*=i;
30 for(i=1;i<=m;i++)
31 b*=i;
32 for(i=1;i<=n-m;i++)
33 c*=i;
34 s=a/b/c;
35 return s;}
36
37 }
运行结果
任务5
源代码
1 #include<stdio.h>
2 void nannoi(unsigned int n,char from,char temp,char to);
3 void print(unsigned int n,char from,char to);
4 int count(int n);
5 int main(){
6 unsigned int n,t=0;
7 while(scanf("%d",&n)!=EOF){
8 nannoi(n,'A','B','C');
9 t=count(n);
10 printf("一共移动了%u次\n",t);}
11 return 0;
12 }
13 void nannoi(unsigned int n,char from,char temp,char to){
14 if(n==1)
15 print(n,from,to);
16 else{
17 nannoi(n-1,from,temp,to);
18 print(n,from,to);
19 nannoi(n-1,temp,to,from);
20 }
21 }
22 void print(unsigned int n,char from,char to){
23 printf("%u:%c-->%c\n",n,from,to);
24 }
25 int count(int n){
26 if(n==1)
27 return 1;
28 else
29 return 2*count(n-1)+1;
30 }
运行结果

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


浙公网安备 33010602011771号