实验2
//task1
#include <stdio.h> #include <stdlib.h> #include <time.h> #define N 100 #define CNT 5 int main() { int number; int i; // 以当前系统时间作为随机种子 for(i = 0; i < CNT; ++i) { number = rand() % N + 1; printf("20490042%04d\n", number); } return 0; }
1.1:生成5个1-100的随机整数,和20490042后拼接四位,生成学号
1.2:rand()%100生成0-99的随机整数,+1生成1-100的随机整数
1.3:%d 是十进制整数输出;4代表至少占 4 个字符宽度; 0 代表宽度不足 4 位时,左边补0。
1.4:srand() 是设置随机数种子;time(0) 获取当前系统时间
未删srand():

删除srand():


删除srand后,种子固定为默认值,每次运行程序,产生的随机数字序列完全相同
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. 矿泉水 - 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; }
2.1:是把本次的总价清零,准备下一轮新的购买,删掉后会叠加上一次的金额
2.2:第一个是输入choice不在范围内,不合法跳出
第二个是购买数量不合法,也跳出
task3:
//task3 #include <stdio.h> int main(){ char ch; for(int i=0;i<4;i++){ scanf("%c",&ch); getchar(); switch(ch){ case 'r': printf("stop!\n"); break; case 'g': printf("go go go\n"); break; case 'y': printf("wait a minute\n"); break; default: printf("something must be wrong...\n"); break; } } return 0; }

task4:
//task4 #include <stdio.h> #define MAX 100000; int main(){ double money; double sum=0; double min_money=MAX; double max_money; printf("输入一天内的若干笔开销,输入-1时终止程序。"); while(scanf("%lf",&money)==1){ if(money==-1)break; if(money>max_money)max_money=money; if(money<min_money)min_money=money; sum=sum+money; } printf("今日累计消费总额:%.1lf\n",sum); printf("今日最高一笔开销:%.1f\n", max_money); printf("今日最低一笔开销:%.1f\n", min_money); return 0; }

task5:
//task5 #include <stdio.h> int main(){ int a,b,c; for(int i=0;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("等边三角形\n"); } else if(a==b || a==c || b==c){ printf("等腰三角形\n"); } else if((a*a+b*b==c*c)||(b*b+c*c==a*a)||(a*a+c*c==b*b)){ printf("直角三角形\n"); } else{ printf("普通三角形\n"); } } else{ printf("不能构成三角形\n"); } } return 0; }

task6:
// task6.c #include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { int lucky_day, n; // 设置随机种子 srand((unsigned)time(NULL)); // 生成 [1,30] 的随机数 lucky_day = rand() % 30 + 1; printf("猜猜2026年11月哪一天是你的lucky day\n"); printf("开始喽,你有3次机会,猜吧(1~30): "); for(int i = 0; i < 3; i++) { scanf("%d", &n); if(n== lucky_day) { printf("哇,猜中了:)\n"); return 0; // 猜对直接结束程序 } else if(n< lucky_day) { printf("你猜的日期早了,你的lucky day还没到呢\n"); } else { printf("你猜的日期晚了,你的lucky day在前面哦\n"); } // 不是最后一次,才打印下一次提示 if(i != 2) { printf("再猜(1~30): "); } } // 循环走完,3次用完都没猜对 printf("次数用光啦。11月你的lucky day是%d号\n", lucky_day); return 0; }


浙公网安备 33010602011771号