实验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.学会了函数的递归调用的方法。