实验2 C语言分支与循环基础应用编程
实验任务1
源代码
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <time.h> 4 #define N 5 5 int main() 6 { 7 int number; 8 int i; 9 10 srand(time(0)); // 以当前系统时间作为随机种子 11 for(i = 0; i < N; ++i) 12 { 13 number = rand() % 100 + 1; 14 printf("20490042%04d\n", number); 15 } 16 17 return 0; 18 }
运行结果截图

问题1:这个程序的功能是什么?
答:输出以20490042为开头,末四位为1~100的随机数,不足位数用0填充
问题2:解释lin13代码的功能
答:使number为1~100的随机整数
问题3:解释line14使用格式符%04d起到什么作用
答:%d表示整形,4表示限制宽度为4,0表示不足位用0填充
问题4:代码 srand(time(0)); 起到什么作用?(提示:去掉这行代码,多次运行程序,观察结果有什么特点)
答:作用:以系统时间作为随机数种子,若去掉,则每次生成的随机数序列一样
实验任务2
源代码
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("%d", &choice); 14 if (choice == 0) 15 break; 16 if (choice < 1 || choice > 4) { 17 printf("无效的饮料编号,请重新输入。\n"); 18 continue; 19 } 20 printf("请输入购买的数量: "); 21 scanf("%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("%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 }
运行结果截图

问题1:line47代码 total_price = 0; 如果去掉,对程序有什么影响?
答:上次的购买总价未清零,导致购买总价累加
问题2:while循环中,有两处使用 continue 语句。解释在循环中使用 continue 语句,语义是什么?
答:continue能跳出当前循环,第一处continue防止用户输入错误的饮料编号,第二处continue防止输入错误的购买数量
实验任务3
源代码
1 #include<stdio.h> 2 #include<stdlib.h> 3 int main(){ 4 char x; 5 while(scanf("%c",&x)!=EOF) 6 { 7 switch(x) 8 { 9 case 'r':printf("stop!\n");break; 10 case 'g':printf("go go go\n");break; 11 case 'y':printf("wait a minute\n");break; 12 } 13 } 14 system("pause"); 15 return 0; 16 }
运行结果截图

实验任务4
源代码
1 #include<stdio.h> 2 #include<stdlib.h> 3 int main(){ 4 printf("输入今日开销,直到输入-1终止:\n"); 5 float x,sum,max,min; 6 sum=0; 7 scanf("%f",&x); 8 if (x!=-1) 9 { 10 sum=x; 11 max=x; 12 min=x; 13 while(1) 14 { 15 scanf("%f",&x); 16 if (x==-1) 17 break; 18 if (x>=max) 19 max=x; 20 if (x<=min) 21 min=x; 22 sum+=x; 23 } 24 printf("今日累计消费总额:%.1f\n", sum); 25 printf("今日最高一笔开销:%.1f\n",max); 26 printf("今日最低一笔开销:%.1f\n",min); 27 } 28 system("pause"); 29 return 0; 30 }
运行结果截图

实验任务5
源代码
1 #include<stdio.h> 2 #include<stdlib.h> 3 int main(){ 4 int a,b,c; 5 while(scanf("%d%d%d",&a,&b,&c)!=EOF) 6 { 7 if((a+b<=c)||(a+c<=b)||(c+b<=a)) 8 printf("不能构成三角形\n"); 9 else 10 { 11 if((a==b)&&(b==c)) 12 printf("等边三角形\n"); 13 else if((a==b)||(b==c)||(a==c)) 14 printf("等腰三角形\n"); 15 else if((a*a+b*b==c*c)||(b*b+c*c==a*a)||(a*a+c*c==b*b)) 16 printf("直角三角形\n"); 17 else 18 printf("普通三角形\n"); 19 } 20 } 21 system("pause"); 22 return 0; 23 }
运行截图

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



浙公网安备 33010602011771号