实验2
任务一:
#include<stdio.h> #include <stdlib.h> #include <time.h> #define N 5 int main() { int number; int i; srand(time(0));
}

问题1:功能是生成并输出5个1到100之间的随机整数
问题2:生成1~100之间的随机整数,并赋值给变量number
问题3:%d是以十进制整数形式输出数字:4是指定输出的最小宽度为4个字符:0是指当数字位数不足4位时在数字左侧补0
问题4:为Rand()函数设置随机种子,让每次运行程序生成的随机数序列不同
任务二
#include <stdio.h> int main() { int choice, quantity; float total_price = 0, amount_paid, change; while (1) { printf("\n自动饮料售卖机菜单:\n"); printf("1. 可乐 - 3 元/瓶\n"); printf("2. 雪碧 - 3 元/瓶\n"); printf("3. 橙汁 - 5 元/瓶\n"); printf("4. 矿泉水 - 2 元/瓶\n"); printf("0. 退出购买流程\n"); printf("请输入饮料编号: "); scanf("%d", &choice); if (choice == 0) break; if (choice < 1 || choice > 4) { printf("无效的饮料编号,请重新输入。\n"); continue; } printf("请输入购买的数量: "); scanf("%d", &quantity); if (quantity < 0) { printf("购买数量不能为负数,请重新输入。\n"); continue; } if (choice == 1 || choice == 2) total_price += 3 * quantity; else if (choice == 3) total_price += 5 * quantity; else total_price += 2 * quantity; printf("请投入金额: "); scanf("%f", &amount_paid); change = amount_paid - total_price; printf("本次购买总价: %.2f 元\n", total_price); printf("找零: %.2f 元\n", change); total_price = 0; } printf("感谢您的购买,欢迎下次光临!\n"); return 0; }

问题1:会累加所有购买的金额,导致总价会异常偏大
问题2:立即终止本次循环的剩余代码执行,直接跳转到循环的条件判断处,开始下一次的循环
任务三
#include <stdio.h> int main() { char color; while (scanf("%c", &color) != EOF) { if (color == '\n') continue; if (color == 'r') { printf("stop!\n"); } else if (color == 'g') { printf("go go go\n"); } else if (color == 'y') { printf("wait a minute\n"); } else { printf("something must be wrong...\n"); } while (getchar() != '\n'); } return 0; }

任务四
#include <stdio.h> int main() { double expense; double total = 0.0; double max_expense = 0.0; double min_expense = 20000.1; printf("请开始输入每笔开销(输入-1结束程序):\n"); while (1) { scanf("%lf", &expense); if (expense == -1) { break; } if (expense > 0 && expense <= 20000) { total += expense; if (expense > max_expense) { max_expense = expense; } if (expense < min_expense) { min_expense = expense; } } else { printf("输入金额超出范围(0 < 开销 ≤ 20000),请重新输入\n"); } } printf("\n今日开销统计结果:\n"); printf("总开销:%.1f 元\n", total); printf("最高一笔开销:%.1f 元\n", max_expense); printf("最低一笔开销:%.1f 元\n", min_expense); return 0; }

任务五
#include <stdio.h> int main() { int a, b, c; while (scanf("%d %d %d", &a, &b, &c) != EOF) { if (a + b <= c || a + c <= b || b + c <= a) { printf("不能构成三角形\n"); continue; } if (a == b && b == c) { printf("等边三角形\n"); } else if (a == b || a == c || b == c) { if (a*a + b*b == c*c || a*a + c*c == b*b || b*b + c*c == a*a) { printf("等腰直角三角形\n"); } else { printf("等腰三角形\n"); } } else if (a*a + b*b == c*c || a*a + c*c == b*b || b*b + c*c == a*a) { printf("直角三角形\n"); } else { printf("普通三角形\n"); } } return 0; }

任务六
#include <stdio.h> #include <stdlib.h> #include <time.h> int main() { srand((unsigned int)time(0)); int lucky_day = rand() % 30 + 1; int guess; int chances = 3; printf("猜一猜4月的lucky day是几号(1-30),你有3次机会:\n"); for (int i = 0; i < 3; i++) { printf("请输入你猜的日期:"); scanf("%d", &guess); chances--; if (guess == lucky_day) { printf("恭喜你猜中了!4月的lucky day就是%d号🎉\n", lucky_day); return 0; } else if (guess < lucky_day) { printf("猜早了,你还有%d次机会\n", chances); } else { printf("猜晚了,你还有%d次机会\n", chances); } } printf("\n3次机会已经用完啦,你没有猜中。\n你的4月lucky day是%d号\n", lucky_day); return 0; }

浙公网安备 33010602011771号