实验三

 1.任务1
#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, April~";
    
    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中字符串
}

这个程序实现的功能是在25行,80列的屏幕上随机生成10个不同位置的hi,April~文本,每一次输出时间间隔为1秒,实现动态输出

2.任务2 

2.1

 1 #include <stdio.h>
 2 #include<stdlib.h>
 3 long long fac(int n); 
 4 
 5 int main() {
 6     int i, n;
 7 
 8     printf("Enter n: ");
 9     scanf("%d", &n);
10 
11     for (i = 1; i <= n; ++i)
12         printf("%d! = %lld\n", i, fac(i));
13     system("pause");
14 
15 
16     return 0;
17 }
18 
19 long long fac(int n) {
20     static long long p = 1;
21    
22     p = p * n;
23 
24 
25     return p;
26 }

2.2 
1
#include <stdio.h> 2 #include<stdlib.h> 3 int func(int,int); 4 5 int main() { 6 int k=4,m=1,p1,p2; 7 p1=func(k,m); 8 p2=func(k,m); 9 printf("%d,%d\n",p1,p2); 10 system("pause"); 11 return 0; 12 } 13 14 15 int func(int a,int b){ 16 static int m=0,i=2; 17 i+=m+1; 18 m=i+a+b; 19 20 21 return m; 22 }

 

 

 

 

 3.任务3

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 long long func(int n);
 4 int main(){
 5     int n;
 6     long long f;
 7     while(scanf("%d",&n)!=EOF){
 8         f=func(n);
 9         printf("n=%d,f=%lld\n",n,f);
10     }
11     system("pause");
12     return 0;
13 }
14 long long func(int n){
15     static long long p;
16     if(n==0)
17         p=0;
18     else
19         p=2*func(n-1)+1;
20     return p;
21 }

4.任务4

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 int func(int n,int m);
 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 system("pause");
10 return 0;
11 }
12 int func(int n,int m){
13     int i,j,k,p=1,q=1,g=1;
14     if(n<m)
15     return 0;
16     else if(n==m||m==0)
17         return 1;
18     else
19     for(i=1;i<=n;i++)
20         p=p*i;
21     for(j=1;j<=m;j++)
22         q=q*j;
23     for(k=1;k<=(n-m);k++)
24         g=g*k;
25     return p/(g*q);
26 }

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 int func(int n,int m);
 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 system("pause");
10 return 0;
11 }
12 int func(int n,int m){
13     if(n<m)
14     return 0;
15     else if(n==m||m==0)
16         return 1;
17     else
18     return func((n-1),m)+func((n-1),(m-1));
19 }

5.任务5

 

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<math.h>
 4 void hanoi(unsigned int n,char from,char temp,char to);
 5 void moveplate(unsigned int n,char from,char to);
 6 int main(){
 7     unsigned int n;
 8     int i;
 9     while(scanf("%u",&n)!=EOF){
10         hanoi(n,'A','B','C');
11         i=pow(2.0,n*1.0)-1;
12     printf("\n一共移动了%d次.\n",i);
13     }
14     system("pause");
15     return 0;
16 }
17 void hanoi(unsigned int n,char from,char temp,char to){
18     if(n==1)
19         moveplate(n,from,to);
20     else
21     {
22         hanoi(n-1,from,to,temp);
23         moveplate(n,from,to);
24         hanoi(n-1,temp,from,to);
25     }
26 }
27 void moveplate(unsigned int n,char from, char to){
28     printf("%u:%c-->%c\n",n,from, to);
29 }

6.任务6

 

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<math.h>
 4 long func(long s);
 5 int main(){
 6     long s,t;
 7     printf("Enter a number:");
 8     while(scanf("%ld",&s)!=EOF){
 9         t=func(s);
10         printf("new number is:%ld\n\n",t);
11         printf("Enter a number:");
12     }
13     system("pause");
14     return 0;
15 }
16 long func(long s){
17     int p,t=1,ans=0;
18     while(s!=0){
19         p=s%10;
20         if(p%2==1){
21             ans=ans+p*t;
22             t=t*10;
23         }
24         s=s/10;
25     }
26     return ans;
27 }

 

posted @ 2024-04-28 23:15  中年男士  阅读(5)  评论(0编辑  收藏  举报