实验二
task1
1. 代码:
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <time.h> 4 #define N 5 5 int main() { 6 int number; 7 int i; 8 srand(time(0)); // 以当前系统时间作为随机种子 9 for (i = 0; i < N; ++i) { 10 number = rand() % 100 + 1; 11 printf("20490042%04d\n", number); 12 } 13 return 0; 14 }
2. 运行效果截图:

3. 问题回答:
(1)这个程序的功能是根据系统时间随机选取1到100中的四个随机数,从而生成四个随机的学号
(2)line13代码功能是选取1到100的随机数,rand()%100选取0到99的随机数,+1选取了1到100的随机数
(3)%04d作用是把选取的随机数打印出来,一共占4位,不够4位就在左边补0,从而使学号格式统一
(4)代码srand(time(0))起到根据系统时间不同选取随机数的作用,如果删去这行代码,则不论系统时间多少,多次运行所选取的随机数均相同,即学号相同
task2
1. 代码:
1 #include <stdio.h> 2 int main() { 3 int choice, quantity; 4 float total_price = 0, amount_paid, change; 5 while (1) { 6 printf("\n自动饮料售卖机菜单:\n"); 7 printf("1. 可乐 - 3 元/瓶\n"); 8 printf("2. 雪碧 - 3 元/瓶\n"); 9 printf("3. 橙汁 - 5 元/瓶\n"); 10 printf("4. 矿泉水 - 2 元/瓶\n"); 11 printf("0. 退出购买流程\n"); 12 printf("请输入饮料编号: "); 13 scanf_s("%d", &choice); 14 if (choice == 0) 15 break; 16 if (choice < 1 || choice > 4) { 17 printf("无效的饮料编号,请重新输入。\n"); 18 continue; 19 } 20 printf("请输入购买的数量: "); 21 scanf_s("%d", &quantity); 22 if (quantity < 0) { 23 printf("购买数量不能为负数,请重新输入。\n"); 24 continue; 25 } 26 if (choice == 1 || choice == 2) 27 total_price += 3 * quantity; 28 else if (choice == 3) 29 total_price += 5 * quantity; 30 else 31 total_price += 2 * quantity; 32 printf("请投入金额: "); 33 scanf_s("%f", &amount_paid); 34 change = amount_paid - total_price; 35 printf("本次购买总价: %.2f 元\n", total_price); 36 printf("找零: %.2f 元\n", change); 37 total_price = 0; 38 } 39 printf("感谢您的购买,欢迎下次光临!\n"); 40 return 0; 41 }
2. 运行效果截图:

3. 问题回答:
(1)line47代码total_price=0作用是重置总价,如果删除,程序在买完第一次之后的总价不会清零,第二次会叠加第一次的总价,使找零变成负数,之后总价会一直叠加
(2)在循环中使用continue语句是跳过本次循环之后的所有步骤,重新开始本轮循环
task3
1. 代码:
1 #include <stdio.h> 2 int main() { 3 char color; 4 printf("请输入交通信号灯颜色(输入r表示red,输入g表示green, 输入y表示yellow):"); 5 while (scanf_s("%c", &color) != EOF) { 6 if (color == 'r') { 7 printf("stop!"); 8 } 9 else if (color == 'g') { 10 printf("go go go"); 11 } 12 else if (color == 'y') { 13 printf("wait a minute"); 14 } 15 else { 16 printf("something must be weong..."); 17 } 18 getchar(); 19 printf("\n"); 20 printf("请输入交通信号灯颜色(输入r表示red,输入g表示green, 输入y表示yellow):"); 21 } 22 return 0; 23 }
2. 运行效果截图:

task4
1. 代码:
1 #include<stdio.h> 2 int main() 3 { 4 double max = 0.0, min = 0.0, sum = 0.0, n; 5 printf("输入今日开销,直到输入-1终止:\n"); 6 while (1) 7 { 8 scanf_s("%lf", &n); 9 if (n == -1) { 10 break; 11 } 12 if (n <= 0 || n >= 20000) 13 { 14 printf("每笔消费n必须大于0且小于20000"); 15 continue; 16 } 17 sum += n; 18 if (n > max) 19 { 20 max = n; 21 } 22 if (min < n) 23 { 24 min = n; 25 } 26 27 } 28 printf("今日最高一笔开销:%.1f\n", max); 29 printf("今日最低一笔开销:%.1f\n", min); 30 printf("今天累计消费:%.1f\n", sum); 31 return 0; 32 33 }
2. 运行效果截图:

task 5
1. 代码:
1 #include<stdio.h> 2 int main() 3 { 4 int a, b, c; 5 while (scanf_s("%d%d%d", &a, &b, &c) != EOF) 6 { 7 if (a + b > c && a + c > b && b + c > a) 8 { 9 if (a == b && a == c) 10 { 11 printf("等边三角形\n"); 12 } 13 else if (a == b || b == c || a == c) 14 { 15 printf("等腰三角形\n"); 16 } 17 else if (a * a + b * b == c * c || b * b + c * c == a * a || a * a + c * c == b * b) 18 { 19 printf("直角三角形\n"); 20 } 21 else 22 { 23 printf("普通三角形\n"); 24 } 25 } 26 else 27 { 28 printf("不构成三角形\n"); 29 } 30 } 31 return 0; 32 }
2.运行效果截图:

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


浙公网安备 33010602011771号