实验3

1.实验任务1

#include<stdio.h> 
#include<stdlib.h>
#include<time.h>
#define N 5

int main(){
    int x,n;
    
    srand(time(0));
    
    for(n=1;n<=N;n++){
        x=rand()%100;
        printf("%3d",x);
    }
    printf("\n");
    
    return 0;
    
}

 

思考:若想生成1~31间的随机数,则应把100改为32

 2.实验任务2

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int main(){
    int x,n,a;
    
    srand(time(0));
    x=rand()%32;

    printf("猜猜2021年5月哪一天会是你的luck day\n");

    a=1;
    printf("开始喽,你有三次机会,猜吧(1~31):",n);
    while(a<=3)
    {
        if(a!=1){
        printf("再猜:");
        } 
        a++;
        scanf("%d",&n);
        if(n!=x){
        if(n<x)
            printf("你猜的日期猜早了,luck day悄悄溜到后面啦\n");
        if(n>x)
            printf("你猜的日期猜晚了,luck day悄悄溜到前面啦\n"); 
        }
        else{
            printf("猜对喽\n");
            return 0;
            }    
    }
    printf("次数用完啦,偷偷告诉你:5月,你的luck day是%d号\n",x);
    
   return 0;    
}

 

 3.实验任务3

#include<stdio.h>
int impow(int p,int q);
int main(){
long x,n,a,p,q;
printf("Enter a number");
while(scanf("%ld",&x)!=EOF){
p=10;
q=0;
a=0;

while(x>0){
n=x%10;
if(n%2!=0){
a=a+n*impow(p,q);
x=x/10;
q++;
}

else
x=x/10;

}
printf("The new number is:%ld\n",a);
printf("Enter a number");
}

return 0;

}
int impow(int p,int q){
int m,n;
n=1;
m=1;
while(n<=q){
m=m*p;
n++;
}
return m;
}

 

 

 

 4.实验任务4

#include<stdio.h>
#include<math.h>
void solve(double a,double b,double c);

int main(){
    double a,b,c;
    
    printf("Enter a, b,c:");
    while(scanf("%lf%lf%lf",&a,&b,&c)!=EOF){
        solve(a,b,c);
        printf("Enter a,b,c:");
    }
    return 0;    
}


void solve(double a,double b,double c){
    double x1,x2;
    double delta,real,imag;
    
    if(a==0){
        printf("not quadratic equation.\n");
    }
        
    else{
        delta=b*b-4*a*c;
        
        if(delta>=0){ 
            x1=(-b+sqrt(delta))/(2*a);
            x2=(-b-sqrt(delta))/(2*a);
            printf("x1=%.2f,x2=%.2f\n",x1,x2);    
        }
        else{
            real=-b/(2*a);
            imag=sqrt(-delta)/(2*a);
            printf("x1=%.2f+%.2fi,x2=%.2f-%.2fi",real,imag,real,imag);
            
            }     
        } 
            
}

 

 

 回答:能。使用数组,将数组作为返回值,在数组里包含两个解。

5.实验任务5

#include<stdio.h>
double fun(int n);

int main(){
    int n;
    double s;
    
    printf("Enter n(1~10):");
    while(scanf("%d",&n)!=EOF){
        s=fun(n);
        printf("n=%d,  s=%f\n\n",n,s);
        printf("Enter n(1~10):");
    }    
    return 0;
}
double fun(int n){
    double m,s;
    if(n==1)
        return 1;
    if(n==2)
        return 0.5;
    else
        return fun(n-1)+(fun(n-1)-fun(n-2))/(-n);
    
}

 

 

 6.实验任务6

#include<stdio.h>
#include<math.h>
 int isPrime(int x); 
int main(){
    int m,n;
    n=0;
    for(m=101;m<=200;m++)
        if(isPrime(m)){
               printf("%d ",m);
            n++;
        if(n%5==0)
            printf("\n");
       }
        
    return 0;
}
 int isPrime(int x){
    int i;
    for(i=2;i<=sqrt(x);i++)
        if(x%i==0)
            return 0;
        return 1;    
    
}

 

 

 

 7.实验任务7

#include<stdio.h>
#include<stdlib.h>
#include<windows.h>

void printCharMan(int line,int col);
void printSpaces(int n);

int main(){
    int line,col;
    
    for(line=5,col=5;col<=60;col++){
        printCharMan(line ,col);
        Sleep(50);
        system("cls");
        
    }
}



void printCharMan(int line,int col){
    int i,j;
    for(i=1;i<=line-1;i++)
        printf("\n");
        printSpaces(col-1);
        printf(" o\n");
        printSpaces(col-1);
        printf("<H>\n");
        printSpaces(col-1);
        printf("I I\n");
        
        
}
void printSpaces(int n){
    int i;
    
    for(i=1;i<=n;i++)
    printf(" ");
}

实验总结:

1.理解了!=EOF的使用方法和结束循环函数的方式。

2.学会了if else函数和if函数的区别联系。

3.熟悉了函数的调用声明的方法。

4.学会了函数的递归调用的方法。

 

posted @ 2021-04-14 23:34  LihahaLi  阅读(53)  评论(1编辑  收藏  举报