实验2
实验结论
任务1

#include <stdio.h> #include <stdlib.h> #include <time.h> #define N 100 #define CNT 5 int main() { int number; int i; srand(time(0)); for(i = 0; i < CNT; ++i) { number = rand() % N + 1; printf("20490042%04d\n", number); } return 0; }
问题1:程序的功能是生成5个随机编号
问题2:功能是随机生成一个1到100的整数,并赋值给number
问题3:读取4位,不足则补0,使各数字位数相等
问题4:确保生成的数字是真随机,若删去这一行,每次的结果会相同,不是真正的随机数
任务2

#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:如果去掉初始化,total_price的值一开始会是电脑中不确定的垃圾值,容易出bug
问题2:continue结束本次循环,继续下一次
任务3

#include <stdio.h> int main() { char x; int i; for(i=1;i<=4;){ scanf(" %c",&x); switch(x){ case 'r':printf("stop!");break; case 'g':printf("go go go");break; case 'y':printf("wait a minute") ;break; default:printf("something must be wrong...");break; } ++i; } return 0; }
任务4

#include <stdio.h> int main() { float max=0,min=20000,sum=0,x=0; scanf("%f",&x); while(x!=-1) {sum+=x; if(x>max) max=x; if(x<min) min=x; scanf("%f",&x); } printf("今日累计消费总额:%.1f\n今日最高一笔开销:%.1f\n今日最低一笔开销:%.1f",sum,max,min); return 0; }
任务5

#include <stdio.h> int main() { int a,b,c,i; for(i=1;i<=5;++i) {scanf("%d%d%d",&a,&b,&c); if(a+b>c&&a+c>b&&b+c>a){ if(a==b&&b==c) printf("等边三角形"); else if(a*a+b*b==c*c||c*c+b*b==a*a||a*a+c*c==b*b) printf("直角三角形"); else if(a==b||a==c||b==c) printf("等腰三角形"); else printf("普通三角形"); } else printf("不能构成三角形"); } return 0; }
任务6

#include <stdio.h> #include <stdlib.h> #include <time.h> int main(){ int lucky,cai,i; srand(time(0)); lucky=rand()%30+1; for(i=1;i<=3;++i) {if(i==1) printf("猜猜2026年11月哪一天是你的lucky day\n开始喽,你有3次机会,猜吧(1~30):"); else printf("再猜(1~30):"); scanf("%d",&cai); if(cai==lucky) {printf("哇,猜中了:)");break;} else if(cai<=lucky) printf("你猜的日期早了,你的lucky day还没到呢\n"); else printf("你猜的日期晚了,你的lucky day在前面哦\n"); if(i==3) printf("次数用光啦。11月你的lucky day是%d",lucky); } return 0; }
实验总结
巩固了if,while等函数,对分支选择、循环、跳转的认识又进一步增加了!!!从只会照搬老师的样例到一步步写出自己的代码,觉得特别有成就感,最后遇到随机lucky day卡了一下就去查了资料和老师之前的例题,最后成功解决啦

浙公网安备 33010602011771号