实验2

任务1

源代码

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <time.h>
 4 
 5 #define N 5
 6 #define N1 397
 7 #define N2 476
 8 #define N3 21
 9 
10 int main() {
11     int cnt;
12     int random_major, random_no;
13 
14     srand(time(NULL));      // 以当前系统时间作为随机种子
15 
16     cnt = 0;
17     while(cnt < N) {
18         random_major = rand() % 2;
19 
20         if(random_major) {
21             random_no = rand() % (N2 - N1 + 1) + N1;
22             printf("20248329%04d\n", random_no);
23         }
24         else {
25             random_no = rand() % N3 + 1;
26             printf("20248395%04d\n", random_no);
27         }
28 
29         cnt++;
30     }
31 
32     return 0;
33 }

 

 

回答问题:

问题1. line 21使抽取到的以20248329开头的学号的后面4位数字在0397-0476的范围内随机。

问题2. line 24使抽取到的以20248395开头的学号的后面4位数字在0001-0021的范围内随机。

问题3. 该程序可以在202483290397-202483290476和202483950001-202483950021的范围内随机抽取5个学号。

 

任务2

源代码

 1 #include <stdio.h>
 2 #include <math.h>
 3 
 4 int main() {
 5     double a, b, c;
 6     double delta, p1, p2; // 用于保存中间计算结果
 7 
 8     while(scanf("%lf%lf%lf", &a, &b, &c) != EOF) {
 9         if(a == 0) {
10             printf("a = 0, invalid input\n");
11             continue;
12         }
13 
14         delta = b*b - 4*a*c;
15         p1 = -b/2/a;
16         p2 = sqrt(fabs(delta))/2/a;
17 
18         if(delta == 0)
19             printf("x1 = x2 = %.2g\n", p1);
20         else if(delta > 0)
21             printf("x1 = %.2g, x2 = %.2g\n", p1+p2, p1-p2);
22         else {
23             printf("x1 = %.2g + %.2gi, ", p1, p2);
24             printf("x2 = %.2g - %.2gi\n", p1, p2);
25         }
26     }
27 
28     return 0;
29 }

 

任务3

源代码

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 
 4 int main(){
 5     char color;
 6     while(scanf("%c", &color) != EOF){
 7     if(color > 'x' && color < 'z'){
 8         printf("wait a minute\n");
 9         getchar();
10     }
11     else if(color > 'f' && color < 'h'){
12         printf("go go go\n");
13         getchar();
14     }
15     else if(color > 'q' && color < 's'){
16         printf("stop!\n");
17         getchar();
18     }
19     else{
20         printf("something must be wrong\n");
21         getchar();
22     }
23 }
24     return 0;
25 }

 

任务4

源代码

 

 1 #include <stdio.h>
 2 
 3 int main() {
 4     double C, sum = 0.0;
 5     double max = 0.0, min = 20000.0; 
 6 
 7     printf("输入今日开销,输入 -1 终止:\n");
 8 
 9     while (1) {
10         scanf("%lf", &C);
11 
12         if (C == -1) {
13             break;
14         }
15 
16         if (C > max) {
17             max = C;
18         }
19         if (C < min) {
20             min = C;
21         }
22 
23         sum += C;
24     }
25 
26     // 输出结果,保留到小数点后 1 位
27     printf("今日累计消费总额:%.1lf \n", sum);
28     printf("今日最高一笔开销:%.1lf \n", max);
29     printf("今日最低一笔开销:%.1lf \n", min);
30     
31     return 0;
32 }

 

任务5

源代码

 1 #include<stdio.h>
 2 int main(){
 3     int a, b, c;
 4     while(scanf("%d%d%d", &a, &b, &c) != EOF){
 5         if(a == b && a == c && b == c){
 6             printf("等边三角形\n");
 7         }
 8         if((a == b && a != c || a == c && a != b || b == c && b != a) && a + b > c && a + c > b && b + c > a){
 9             printf("等腰三角形\n");
10         }
11         if(!(a + b > c && a + c > b && b + c > a)){
12             printf("不能构成三角形\n"); 
13         }
14         if(a + b > c && a + c > b && b + c > a && a != b && a != c && b != c && a*a + b*b != c*c && a*a + c*c != b*b && b*b + c*c != a*a){
15             printf("普通三角形\n");
16         }
17         if((a*a + b*b == c*c || a*a + c*c == b*b || b*b + c*c == a*a) && a + b > c && a + c > b && b + c > a){
18             printf("直角三角形\n");
19         }
20 }
21     return 0;
22 }

 

任务6

源代码

 

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <time.h>
 4 
 5 int main() {
 6     srand(time(NULL));
 7     int lucky_day = rand() % 30 + 1;
 8     int guess, i = 3;
 9     printf("猜猜2024年11月那一天回事你的lucky day\n开始喽,你有三次机会,猜吧(1~30):");
10     
11         while(scanf("%d", &guess) != EOF){
12             if (guess == lucky_day) 
13             {
14                 printf("哇,猜中了:)\n");
15                 return 0;
16             } 
17             else if (guess < lucky_day) 
18             {
19                 printf("你猜的日期早了,你的lucky day还没到呢\n");
20                 printf("再猜(1~30):");
21             } 
22             else 
23             {
24                 printf("你猜的日期晚了,你的lucky day在前面哦\n");
25                 printf("再猜(1~30):");
26             }
27             i--;
28             if(i <= 0)
29                 break;
30     }
31     printf("次数用光啦。偷偷告诉你,11月你的1ucky day是 %d号\n", lucky_day);
32     return 0;
33 }

(老师,我尽力了,实在弄不出来)

 

 

 

实验总结

任务6好难

posted @ 2024-10-12 15:14  苏刘梁  阅读(31)  评论(0)    收藏  举报