实验2
task1
#include <stdio.h> #include <stdlib.h> #include <time.h> #define N 5 #define N1 80 #define N2 35 int main() { int cnt; int random_major,random_no; srand(time(NULL)); cnt=0; while(cnt<N) { random_major=rand()%2; if (random_major) { random_no=rand()%N1+1; printf("20256343%04d\n",random_no); } else { random_no=rand()%N2+1; printf("20256136%04d\n",random_no); } cnt++; } return 0; }
result:


去掉srand(time(NULL))后运行结果保持p3不变
q1:srand(time(NULL))是用来产生随机数的
q2:可以用来抽取五个学号并对应学生
task2
#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.矿泉水-4元/瓶\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; }
result:

q1:去掉则会一直保留上一次的total price在变量total_price中,影响下一次运行时计算新的total price值
q2:终止下面的对商品品类和付款相关的操作(因为不符合规范),重新开始一轮询问
task3
#include <stdio.h> int main() { char input; while (1) { scanf("%c",&input); if (input=='r'){ printf("stop!\n"); continue; } else if (input=='g'){ printf("go go go\n"); continue; } else if (input=='y'){ printf("wait a minute\n"); continue; } else if (input==EOF) break; else if (input=='\n') continue; else{ printf("something must be wrong\n"); continue; } while (input!='\n'); } return 0; }
result:

task4
#include <stdio.h> int main() { double expense,max=0,min=20000,sum=0; printf("输入今日开销,直到输入-1终止:"); while (1) { scanf("%lf", &expense); if (expense == -1) { break; } if (expense > max) { max = expense; } if (expense < min) { min = expense; } sum += expense; } printf("今日累计消费总额: %.1f\n", sum); printf("今日最高一笔开销: %.1f\n", max); printf("今日最低一笔开销: %.1f\n", min); return 0; }
result:

task5
#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||a<=0||b<=0||c<=0) { 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; }
result:

task6
#include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int lucky_day, guess, chances = 3; int i; srand(time(NULL)); lucky_day = rand() % 30 + 1; printf("猜11月的幸运日,你有3次机会:\n"); for (i=0;i<3;i++) { printf("第%d次猜:", i+1); scanf("%d",&guess); if (guess == lucky_day) { printf("恭喜你猜中了!\n"); return 0; } else if (guess < lucky_day) { printf("早了\n"); } else { printf("晚了\n"); } } printf("11月的幸运日期是:%d\n", lucky_day); return 0; }
result:

experiment conclusion:
1.可以使用srand(time(NULL))生成随机数,如果对生成随机数的范围有要求还可以取余,但要记得取余以后还要加一
2.使用循环实现多次输入或满足同一功能多次实现,但要记得如果有变量需要在下一次循环再次使用的话可能需要清空,可以使用while语句实现清空
3.有多个分支的情况需要实现时,可以在写代码之前先列好分支草稿,如果有触发条件需要回到起点重新执行循环的也需要标明,可以提高写代码的效率
4.排版方面尽量要工整,方便阅读和理解,也方便纠错
that's all,thx for reading ;)
浙公网安备 33010602011771号