实验任务三
实验一
#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; // 生成一个0~99之间的随机整数 printf("%3d", x); } printf("\n"); return 0; }

实验二
// 生成N个0~99之间的随机整数,并打印输出 #include <stdio.h> #include <stdlib.h> #include <time.h> #define N 5 int main() { int x, n, i; printf("猜猜2021年5月哪一天会是你的 Lucky Day\n开始喽,你有三次机会,猜吧(1~31):"); srand(time(0)); // 以当前系统时间作为随机种子 x =1+ rand() % 31; // 生成一个1~31之间的随机整数 for (i=1;i<=3;){ scanf("%d",&n); if (n==x){ printf("猜对啦!\n"); break; } else if (n<x){ printf("你猜的日期早了,Luck Day还没到呢。\n"); } else { printf("你猜的日期晚了,Luck Day悄悄溜到前面啦。\n"); } i++; printf("再猜(1~31):"); if (i>3) printf("次数用完啦,偷偷告诉你:5月,你的Luck Day是%d号。\n",x); } return 0; }

实验三
#include<stdio.h> int main(){ long s,t,n; while(printf("Enter a number: "),scanf("%ld",&s)!=EOF) { int m; t=0; n=1; while(s!=0) { m=s%10; if(m%2) { t=t+m*n; n=n*10; } s=s/10; } printf("New number is: %ld\n",t); } return 0; }

实验四
// 一元二次方程求解(函数实现方式) // 重复执行, 直到按下Ctrl+Z结束 #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; } // 函数定义 // 功能:求解一元二次方程,打印输出结果 // 形式参数:a,b,c为一元二次方程系数 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); } } }

否,当delta>0时,方程有两个根,但函数的返回值只能有一个。
实验五
#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 s; int i,f=1,z=1; for(i=1,s=0;i<=n;) { f=f*i; s=s+z*1.0/f; z=-z; i++; } return s; }

实验六
#include<stdio.h> #include<math.h> int isprime(int n); int main (){ int n,col=1,m=0; for(n=101;n<=200;n++) { if(isprime(n)) { printf("%d ",n); col++; m++; if(col%6==0) { printf("\n"); col=1; } } } printf("\n101~200之间素数个数为:%d\n",m); return 0; } int isprime(int n){ int k; for(k=2;k<=sqrt(n);k++) { if(n%k==0) return 0; } return 1; }


浙公网安备 33010602011771号