实验3

TEST 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);
        }
        return 0;

}
void print_spaces(int n){
    int i;
     for(i=1;i<=n;i++)
         printf(" ");
}

void print_blank_lines(int n){
    int i;

    for (i=1;i<=n;++i)
        printf("\n");
}

void print_text(int line ,int col,char text[]){
    print_blank_lines(line-1);
    print_spaces(col-1);
    printf("%s",text);
}

功能:在第line行第col列随机生成10个hi,april~,其中line是1~24的随机数,col是1~79的随机数

TEST2

源码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;}

#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特性:只读取一次数据,数据在程序运行过程中不断被刷新

 

TEST3

#include <stdio.h>
long long func(int n);
int main() {
    int n;
    long long f;
    while (scanf("%d", &n) != EOF) {
        f = func(n);
        printf("n = %d, f = %lld\n", n, f);
    }
    return 0;
}
long long func (int n){
 int f;
 if(n==1)
 f=1;
 else
 f=(func(n-1)+1)*2-1;
 
 return f;
 
}
(32次太大,显示不出来)
 

 
TEST4

#include <stdio.h>
int func(int n, int m);
int main() {
int n, m;
while(scanf("%d%d", &n, &m) != EOF)
printf("n = %d, m = %d, ans = %d\n", n, m, func(n, m));

return 0;
}
int func(int n,int m){
int c;

if (m>n)
c=0;
else{if(m==0)
c=1;
else{
if(m==1)
c=n;
else
c=func(n-1,m)+func(n-1,m-1);
}}

return c;
}

}

 

TEST5

不递归:

#include<stdio.h>
#include<stdlib.h>
double mypow(int x,int y);

int main(){
int x,y;
double ans;

while(scanf("%d%d",&x,&y)!=EOF){
ans=mypow(x,y);
printf("%d的%d次方:%g\n\n",x,y,ans);
}
return 0;
}

double mypow(int x,int y){
double s=1;
int i;
for(i=1;i<=abs(y);i++)
{s=s*x;}
if(y>=0)
s=s;
else
s=1/s;
return s;
}

 递归:

#include<stdio.h>
#include<stdlib.h>
double mypow(int x,int y);

int main(){
int x,y;
double ans;

while(scanf("%d%d",&x,&y)!=EOF){
ans=mypow(x,y);
printf("%d的%d次方:%g\n\n",x,y,ans);
}
return 0;
}

double mypow(int x,int y)
{double s;
if(y==0)
s=1.0;
else{if(y>0)
s=x*mypow(x,y-1);
else
s=1/mypow(x,abs(y));
}
return s;
}

TEST6

#include<stdio.h>
#include<stdlib.h>
void hanoi(int n,char A,char B,char C);
void move(int n,char A,char B);
static int t=0;

int main(){
char A,B,C;
int n;
while(scanf("%d",&n)!=EOF){
t=0;
hanoi(n,'A','B','C');
printf("一共移动了%d次\n",t);}
return 0;
}

void move(int n,char A,char C){
printf("%d:%c-->%c\n",n,A,C);
t++;
}
void hanoi(int n,char A,char B,char C){
if(n==1)
move (n,A,C);
else{
hanoi(n-1,A,C,B);
move(n,A,C);
hanoi(n-1,B,A,C);
}
}

 

 

 

TEST 7

#include<stdio.h>
#include<stdlib.h>
int is_prime(int n);

int main(){
int i,n=3,m=4,sign;
for(i=1;i<=20;i++)
{sign=1;
if(i%2==1)
continue;
else
{for(n=2;n<=i/2;n++)
{if(sign==0)
break;
else
{
for(m=2;m<=i;m++)
{if(m+n==i&&is_prime(m)+is_prime(n)==2&&m!=n)
{printf("%d=%d+%d",i,n,m);
printf("\n");
sign=0;
break;
}}}}}}

return 0;
}

int is_prime(int n){
int i,sign;
for(i=2;i<n;i++)
{if(n%i==0)
break;}
if(i>=n)
sign=1;
else
sign=0;
return sign;
}

TEST8

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
long func(long s);

int main(){
long s,t;

printf("Enter a number:");
while(scanf("%ld",&s)!=EOF){
t=func(s);
printf("new number is:%ld\n\n",t);
printf("Enter a number:");
}
return 0;
}

long func(long s){
long t=0;
int rem,n=0,m;
for (m=0;s>=1;)
{if(s%10%2==1)
{rem=s%10;
t=t+rem*pow(10,n);
n++;}
s=s/10;
m++;
}
return t;
}

 

posted @ 2023-04-02 15:13  超级peipei  阅读(30)  评论(0编辑  收藏  举报