第三次作业
一、实验结论
1、实验任务1:生成N个0~99之间的随机整数并打印输出
#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、实验任务2:编写一个简单的猜日期程序
#include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int x, y,n=1; printf("猜猜2021年5月哪一天会是你的luck day\n\n") ; srand(time(0)); x = rand() % 31+1; printf("\n开始喽,你有三次机会,猜吧:"); scanf("%d",&y); for(n=3;n>0;n--) { if(y==x) { printf("\n猜对啦!5月,你的luck day是%d号!",x); n=0; } else if(y>x) printf("\n你猜的日子晚了,luck day悄悄溜到前面啦\n"); else printf("\n你猜的日子早了,luck day还没到呢\n"); if(n!=1&&n!=0) { printf("\n再猜:"); scanf("%d",&y); } else if(n==1) printf("\n\n次数用完啦。偷偷告诉你:5月,你的luck day是%d号",x); } return 0; }
结果如图:
3、实验任务3:长整型数依次取奇数
#include<stdio.h> #include<stdlib.h> int main() { long int x,y; int m,i; printf("Enter a number: "); while(scanf("%d", &x) != EOF) { x,y=0; m,i=1; do { m=x%10; x=x/10; if(m%2!=0) { y=y+m*i; i=i*10; } } while(x!=0); printf("new number is: %ld\n",y); printf("\nEnter a number: "); } return 0; }
结果如图:
4、实验任务4:求解一元二次方程
#include <math.h> #include <stdio.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\n", real, imag, real, imag); } } }
结果如图:
回答问题如下:
否。return无法同时返回两个值。
5、实验任务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 x=0,y=1; for(i=1;i<=n;i++) { x=x+pow(-1,i-1)/y; y=y*(i+1); } return x; }
结果如图:
6、实验任务6:输出101~200之间的所有素数
#include <stdio.h> #include <math.h> int isPrime(int n); int main() { int n,m=0; for(n=101;n<=200;n++) { if(isPrime(n)) { printf("%4d",n); m++; if(m%5==0) printf("\n"); } } printf("\n\n 100~200之间的素数个数为:%d",m); return 0; } int isPrime(int n) { int i; for(i=2;i<=sqrt(n);i++) if(n%i==0) return 0; return 1; }
结果如下:
二、实验总结
1、掌握了生成任意随机整数的方法;
2、明确了return的返回问题。