实验2
实验结论
任务1
(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 system ("pause"); 14 return 0; 15 }

(2)问题一:生成五个随机学号,且前九位数均为204900420,后三位数在0到100之间。
问题二:生成一个1到100的随机数。
问题三:规范学号最后四位的整数,若为1,则其形式为0001。
问题四:读取当前时间,依据读取的数据生成随机数,若删去,则无法达成预计随机效果。
任务2
(1)源代码
1 while (1) { 2 printf("\n自动饮料售卖机菜单:\n"); 3 printf("1. 可乐 - 3 元/瓶\n"); 4 printf("2. 雪碧 - 3 元/瓶\n"); 5 printf("3. 橙汁 - 5 元/瓶\n"); 6 printf("4. 矿泉水 - 2 元/瓶\n"); 7 printf("0. 退出购买流程\n"); 8 printf("请输入饮料编号: "); 9 scanf("%d", &choice); 10 if (choice == 0) 11 break; 12 if (choice < 1 || choice > 4) { 13 printf("无效的饮料编号,请重新输入。\n"); 14 continue; 15 } 16 printf("请输入购买的数量: "); 17 scanf("%d", &quantity); 18 if (quantity < 0) { 19 printf("购买数量不能为负数,请重新输入。\n"); 20 continue; 21 } 22 if(choice == 1 || choice == 2) 23 total_price += 3 * quantity; 24 else if(choice == 3) 25 total_price += 5 * quantity; 26 else 27 total_price += 2 * quantity; 28 printf("请投入金额: "); 29 scanf("%f", &amount_paid); 30 change = amount_paid - total_price; 31 printf("本次购买总价: %.2f 元\n", total_price); 32 printf("找零: %.2f 元\n", change); 33 total_price = 0; 34 } 35 printf("感谢您的购买,欢迎下次光临!\n"); 36 return 0; 37 }

(2)回答问题
问题1:去掉之后会积累先前所有购买饮料的价格而非每一次买的价格
问题2:第一个continue是让用户输入一个正确的饮料编号,第二个是让用户输入正确的购买数目。
任务3
(1)源代码
1 #include<stdio.h> 2 #include<stdlib.h> 3 int main() 4 { 5 char c; 6 while((c=getchar())!=EOF) 7 { 8 if(c=='\n') continue; 9 switch(c) 10 { 11 case 'r': 12 printf("stop!\n"); 13 break; 14 case 'g': 15 printf("go go go\n"); 16 break; 17 case 'y': 18 printf("wait a minute\n"); 19 break; 20 default: 21 printf("something must be wrong\n");} 22 } 23 system("pause"); 24 return(0); 25 }

任务4
(1)源代码
1 #include<stdio.h> 2 #include<stdlib.h> 3 4 int main() 5 { 6 double cost; 7 double sum=0.0; 8 double max=0.0; 9 double min=20000.0; 10 printf("输入今日开销,直到输入-1终止:\n"); 11 12 while(1) 13 { 14 if(scanf("%lf", &cost) != 1) 15 { 16 while(getchar() != '\n'); 17 continue; 18 } 19 20 if(cost == -1) 21 { 22 break; 23 } 24 25 if(0 < cost && cost <= 20000) 26 { 27 sum += cost; 28 if(max < cost) 29 { 30 max = cost; 31 } 32 if(min > cost) 33 { 34 min = cost; 35 } 36 } 37 } 38 printf("今日累计消费总额:%.1f\n", sum); 39 printf("今日最高的一笔开销:%.1f\n", max); 40 printf("今日最低的一笔开销:%.1f\n", min); 41 system("pause"); 42 return 0; 43 }

任务5
(1)源代码:
1 #include<stdio.h> 2 #include<stdlib.h> 3 4 int main() 5 { 6 int a,b,c; 7 while(scanf("%d %d %d", &a ,&b ,&c)!=EOF) 8 { 9 if(a+b<=c||a-b>=c) 10 printf("不能构成三角形"); 11 else 12 { 13 if(a==b||a==c||b==c) 14 { 15 if(a==b&&b==c) 16 { 17 printf("等边三角形"); 18 } 19 else 20 { 21 printf("等腰三角形"); 22 } 23 } 24 else if(a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a) 25 { 26 printf("直角三角形"); 27 } 28 else 29 { 30 printf("一般三角形"); 31 32 } 33 } 34 } 35 36 system("pause"); 37 return 0; 38 }

任务6
(1)源代码
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<time.h> 4 int main() 5 { 6 int num,i; 7 int ans; 8 srand((unsigned int)time(NULL)); 9 num=rand()%30+1; 10 printf("猜猜2026年四月那一天是你的lucky day\n"); 11 printf("开始喽,你有三次机会,猜吧(1~30):"); 12 for(i=1;i<=3;) 13 { 14 scanf("%d",&ans); 15 if(ans==num) 16 { 17 printf("哇,猜中啦:)"); 18 break; 19 } 20 else 21 { 22 if(ans<num) 23 { 24 printf("你猜的日期早了,你的lucky day在后面哦\n"); 25 printf("再猜(1~30):"); 26 i=i+1; 27 } 28 if(ans>num) 29 { 30 printf("你猜的日期晚了,你的lucky day在前面呢\n"); 31 printf("再猜(1~30):"); 32 i=i+1; 33 } 34 if(i>=4) 35 { 36 printf("次数用光啦,你的lucky day是%d号",num); 37 } 38 } 39 } 40 system("pause"); 41 return(0); 42 }
(2)运行截图

实验总结
在做第五个任务的时候看了大半天,看不出来为啥输入三个数后按回车不输出结果,后面好久才发现原来是while后面没有打大括号,我已极苦

浙公网安备 33010602011771号