实验3
一、实验任务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; }

二、实验任务2
#include<stdio.h> #include<stdlib.h> #include<time.h> int main() { int x,y,i; srand(time(0)); x=1+rand()%31;//取1~31内的随机数 printf("猜猜2021年5月哪一天会是你的luck day\n"); printf("开始喽,你有三次机会,猜吧(1~31): "); scanf("%d",&y); printf("%d\n",y); for(i=1;i<=2;i++) { if(y==x) { printf("你猜对啦!\n"); i=3; } else if(y>x) { printf("你猜的日期晚了,luck day悄悄溜到前面啦\n"); printf("再猜(1~31):"); } else if(y<x) { printf("你猜的日期早了,luck day还没到呢\n"); printf("再猜(1~31):"); } scanf("%d",&y); printf("%d\n",y); } printf("次数用完啦。偷偷告诉你:你的5月luck day是%d",x); return 0; }

三、实验任务3
#include<stdio.h> #include<stdlib.h> int main(){ long int Sam,yu=0; int m,i=1; printf("Enter a number:\n"); scanf("%ld",&Sam); do{ m=Sam%10; Sam=Sam/10; if(m%2!=0){ yu=yu+m*i; i=i*10; } }while(Sam!=0); printf("new number is:%ld\n",yu); system("pause"); return 0; }



四、实验任务4
1、代码及截图
#include<stdio.h> #include<math.h> void solve(double a,double b,double c); int main(){ double a,b,c;//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\n",real,imag,real,imag); } } }

2、思考说明:否,return无法同时返回x1,x2的值。
五、实验任务5
#include <stdio.h> #include<math.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) { int i; double s=0,k=1; for(i=1;i<=n;i++){ s=s+pow(-1,i-1)/k; k=k*(i+1);//求阶乘 } return s; }

六、实验任务6
#include<stdio.h> #include<math.h> int isprime(int n); int main() { int i,point=0,sum=0; for(i=100;i<=200;i++) { if(isprime(i)) { printf("%4d",i); point++; sum++; //计素数的个数 if(point%5==0) printf("\n");//控制每行5个数据 } } printf("100~200的素数个数为:%d",sum); return 0; } int isprime(int n) { int k; for(k=2;k<=sqrt(n);k++) if(n%k==0) return 0; return 1; }

实验总结:1、实验6中返回值判断的问题,return1的位置,不同产生的效果也不同。有错的时候最好自己走一遍程序运行过程。
2、return只能返回一个值。

浙公网安备 33010602011771号