实验2
实验结论
实验任务1
源代码
1 int main(){ 2 int cnt; 3 int random_major,random_no; 4 srand(time(NULL)); 5 cnt =0; 6 while(cnt<N){ 7 random_major =rand()%2; 8 if(random_major){ 9 random_no=rand()%N1+1; 10 printf("20256343%04d\n",random_no); 11 }else{ 12 random_no=rand()%N2+1; 13 printf("20256136%04\n",random_no); 14 } 15 cnt++; 16 } 17 system("pause"); 18 return 0; 19 }
运行结果截图
回答问题:
1.实验结果更具有随机性,删去后结果可能多次相同。
2.随机选择学生学号,可用作抽奖或点名···
实验任务2
源代码
1 #include<stdio.h> 2 3 int main(){ 4 int choice,quantity; 5 float total_price=0,amount_paid,change; 6 while(1){ 7 printf("\n自动饮料售卖机菜单:\n"); 8 printf("1.可乐-3元/瓶\n"); 9 printf("2.雪碧-3元/瓶\n"); 10 printf("3.橙汁-5元/瓶\n"); 11 printf("4.矿泉水-2元/瓶\n"); 12 printf("请输入饮料编号:"); 13 scanf("%d",&choice); 14 15 if (choice ==0) 16 break; 17 if (choice<1||choice>4){ 18 printf("无效的饮料编号,请重新输入。\n"); 19 continue; 20 } 21 printf("请输入购买的数量:"); 22 scanf("%d",&quantity); 23 24 if (quantity<0){ 25 printf("购买数量不能为负数,请重新输入。\n"); 26 continue; 27 } 28 if (choice==1||choice==2) 29 total_price+=3*quantity; 30 else if(choice==3) 31 total_price+=5*quantity; 32 else 33 total_price+=2*quantity; 34 35 printf("请投入金额:"); 36 scanf("%f",&amount_paid); 37 38 change=amount_paid - total_price; 39 printf("本次购买总价:%.2f元\n",total_price); 40 printf("找零:%.2f元\n",change); 41 42 total_price =0; 43 } 44 printf("感谢您的购买,欢迎下次光临!\n"); 45 system("pause"); 46 return 0; 47 }
运行结果截图
回答问题:
1.去掉后,使total_price的输入值会影响下一次输入的参与计算的total_price值。
2.结束本次循环,但是不影响下一次运行。
实验任务3
源代码
1 #include<stdio.h> 2 3 int main(){ 4 while(1){ 5 char ans; 6 scanf("%c",&ans); 7 getchar(); 8 if(ans=='r'){ 9 printf("stop!\n"); 10 continue; 11 }else if(ans=='g'){ 12 printf("go go go\n"); 13 continue; 14 } 15 else if(ans=='y'){ 16 printf("wait a minute\n"); 17 continue; 18 } 19 else 20 printf("something must be wrong...\n"); 21 22 23 } 24 system("pause"); 25 return 0; 26 }
运行结果截图
实验任务4
源代码
1 #include<stdio.h> 2 3 int main(){ 4 float i,sum=0,max,min; 5 printf("输入今日开销,直到输入-1终止:\n"); 6 scanf("%f",&i); 7 if(i!=-1){ 8 max=i; 9 min=i; 10 max=i;} 11 while(1){ 12 scanf("%f",&i); 13 14 if(i==-1){ 15 break;} 16 if(i>max){ 17 max=i; 18 } 19 if(i<min){ 20 min=i; 21 } 22 sum=i+sum; 23 24 } 25 printf("今日累计消费总额:%.1f\n",sum); 26 printf("今日最高一笔开销:%.1f\n",max); 27 printf("今日最低一笔开销:%.1f\n",min); 28 29 30 system("pause"); 31 return 0; 32 }
运行结果截图
实验任务5
源代码
1 #include<stdio.h> 2 3 int main(){ 4 int a,b,c; 5 while(1){ 6 scanf("%d%d%d",&a,&b,&c); 7 if(a+b<=c||a+c<=b||b+c<=a){ 8 printf("不能构成三角形"); 9 continue; 10 } 11 if((a*a+b*b)==c*c||(b*b+c*c)==a*a||(c*c+a*a)==b*b){ 12 printf("直角三角形"); 13 }else if(a==b||a==c||b==c){ 14 printf("等腰三角形"); 15 }else if(a==b==c){ 16 printf("等边三角形"); 17 }else 18 printf("普通三角形"); 19 20 } 21 system("pause"); 22 return 0; 23 }
运行结果截图
实验任务6
源代码
1 #include<stdio.h> 2 #include<stdlib.h> 3 int main(){ 4 int sjs,number,a; 5 sjs =rand()%30+1; 6 printf("猜猜2025年11月哪一天是你的luck day\n"); 7 printf("开始喽,你有三次机会,猜吧(1~30):"); 8 number=0; 9 while(number<3){ 10 scanf("%d",&a); 11 if(a>sjs){ 12 printf("你猜的日期晚了,你的lucky day在前面哦\n"); 13 printf("再猜(1~30):"); 14 } 15 if(a<sjs){ 16 printf("你猜的日期早了,你的lucky day还没到呢\n"); 17 printf("再猜(1~30):"); 18 } 19 if(a==sjs){ 20 printf("哇,猜中了\n"); 21 break; 22 } 23 24 number++; 25 } 26 if(number==3){ 27 printf("次数用光啦。偷偷告诉你,11月你的iucky day是%d号\n",sjs);
28 } 29 30 31 system("pause"); 32 return 0; 33 }
运行结果截图
![6.2]()
实验总结
1.scanf("")中不需要加\n,但是多组输出的话printf中必须有\n
2.用rand(),如果不加srand(TIME(NULL),结果虽然没错,但容易有重复。