实验2

实验2

任务1

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<time.h>
 4 
 5 #define N 5
 6 
 7 int main() {
 8     int number;
 9     int i;
10 
11     srand(time(0));
12     for (i = 0; i < N; ++i) {
13         number = rand() % 100 + 1;
14         printf("20490042%04d\n", number);
15     }
16 
17     return 0;
18 }

屏幕截图 2026-04-01 103729

问题一:这个程序的功能是随机生成五个在202400420001~202400420100间的随机数

问题二:line13的功能是生成一个1~100的随机数

问题三:%04d的功能是输出四位整数,若不足四位左侧用0补充

问题四:每次运行生成不同随机序列。去掉后种子固定,多次运行结果完全相同

任务2

 1 #include<stdio.h>
 2 
 3 int main() {
 4     int choice, quantity;
 5     float total_price = 0, amount_paid, change;
 6 
 7     while (1) {
 8         printf("\n自动饮料售卖机菜单:\n");
 9         printf("1. 可乐 - 3元/瓶\n");
10         printf("2. 雪碧 - 3元/瓶\n");
11         printf("3. 橙汁 - 5元/瓶\n");
12         printf("4. 矿泉水 - 2元/瓶\n");
13         printf("0. 退出购买流程\n");
14         printf("请输入饮料编号:");
15         scanf_s("%d", &choice);
16 
17         if (choice == 0)
18             break;
19 
20         if (choice < 1 || choice>4) {
21             printf("无效的饮料编号,请重新输入。\n");
22             continue;
23         }
24 
25         printf("请输入购买的数量:");
26         scanf_s("%d", &quantity);
27 
28         if (quantity < 0) {
29             printf("购买数量不能为负数,请重新输入。\n");
30             continue;
31         }
32 
33         if (choice == 1 || choice == 2)
34             total_price += 3 * quantity;
35         else if (choice == 3)
36             total_price += 5 * quantity;
37         else
38             total_price += 2 * quantity;
39 
40         printf("请投入金额:");
41         scanf_s("%f", &amount_paid);
42 
43         change = amount_paid - total_price;
44         printf("本次购买总价:%.2f 元\n", total_price);
45         printf("找零:%.2f 元\n", change);
46 
47         total_price = 0;
48     }
49     printf("感谢您的购买,欢迎下次光临!\n");
50     return 0;
51 }

屏幕截图 2026-04-01 110820

问题1:去掉的话算出的总价不正确

问题2:让循环继续

任务3

 

 1 //模拟红绿灯信息的程序
 2 #include<stdio.h>
 3 #include<stdlib.h>
 4 int main() {
 5     char c;
 6     while (scanf_s("%c", &c,1) != EOF) {
 7         if (c == '\n')continue;
 8 
 9         switch (c) {
10         case 'r':
11             printf("stop!");
12             break;
13         case 'g':
14             printf("go go go");
15             break;
16         case 'y':
17             printf("wait a minute");
18             break;
19         default:
20             printf("someting must be wrong...");
21         }
22     }
23     return 0;
24 
25 }

 

屏幕截图 2026-04-01 114220

任务4

 

 1 //模拟记账程序
 2 #include<stdio.h>
 3 int main() {
 4     double money, sum=0.0;
 5     double max = 0.0, min =20000.0;
 6     printf("输入今日开销,直到输入-1终止\n");
 7     while (1) {
 8         scanf_s("%lf", &money);
 9         if (money == -1) {
10             break;
11         }
12         if (money < 0.0 || money>20000.0) {
13             printf("输入无效,请重新输入\n");
14             continue;
15         }
16         sum += money;
17         if (money > max) {
18             max = money;
19         }
20         if (money < min) {
21             min=money;
22         }
23     }
24     printf("今日累计消费总额:%.1f\n", sum);
25     printf("今日最高一笔开销:%.1f\n", max);
26     printf("今日最低一笔开销:%.1f\f", min);
27     return 0;
28 }

 

屏幕截图 2026-04-02 212414

任务5

 1 //判断三角形类型
 2 #include<stdio.h>
 3 int main() {
 4     int a;
 5     int b;
 6     int c;
 7     printf("请输入三角形三边a,b,c\n");
 8     while (scanf_s("%d%d%d", &a, &b, &c)!=EOF) {
 9         if (a<=0||b<=0||c<=0||a+b<=c||a+c<=b||b+c<=a) {
10             printf("不能构成三角形\n");
11             continue;
12         }
13         if (a == b && b == c) {
14             printf("该三角形为等边三角形\n");
15         }
16         else if (a == b || b == c || a == c) {
17             if (a * a + b * b == c * c || a * a + c * c == b * b || b * b + c * c == a * a) {
18                 printf("该三角形为直角三角形\n");
19             }
20             else {
21                 printf("该三角形为等腰三角形\n");
22             }
23         }
24         else if (a * a + b * b == c * c || a * a + c * c == b * b || b * b + c * c == a * a) {
25             printf("该三角形为直角三角形");
26         }
27         else {
28             printf("该三角形为普通三角形");
29         }
30     }
31     return 0;
32 }

屏幕截图 2026-04-02 230649

任务6

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

屏幕截图 2026-04-06 232932

 

 

 

实验结论:通过本次实验我初步掌握了嵌套循环的使用,还需练习,还有初次了解了生成随机数的代码。

posted @ 2026-04-07 10:46  luvfz  阅读(8)  评论(0)    收藏  举报