实验2
实验任务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 return 0; 14 }
运行结果截图:

问题1:line13代码功能:随机生成1~100数字赋值给number
问题2:%04d作用:使number数字补足4位,不足四位前面加0
问题3:代码作用:随机生成一位学员学号202400420001~202400420100.
实验任务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 switch (choice) { 27 case 1: 28 case 2: 29 total_price += 3 * quantity; 30 break; 31 case 3: 32 total_price += 5 * quantity; 33 break; 34 case 4: 35 total_price += 2 * quantity; 36 break; 37 } 38 printf("请投入金额: "); 39 scanf("%f", &amount_paid); 40 change = amount_paid - total_price; 41 printf("本次购买总价: %.2f 元\n", total_price); 42 printf("找零: %.2f 元\n", change); 43 total_price = 0; 44 } 45 printf("感谢您的购买, 欢迎下次光临! \n"); 46 return 0; 47 }
运行结果截图:

问题1:line53作用:将价格重新归零,如果删去会使价格初始值与上一次支付相同
问题2:break是跳出内循环,continue是继续内循环
问题3:不用加入default语句,因为choice一定在规定范围之内
实验任务3
代码:
1 #include <stdio.h> 2 int main() 3 { 4 char s; 5 while (1) { 6 scanf_s("%c", &s,1); 7 getchar(); 8 switch (s) { 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 default:printf("something must be wrong..\n"); break; 13 } 14 } 15 return 0;
运行结果截图:

实验任务4:
1 #include <stdio.h> 2 int main() 3 { 4 double sum = 0, a, b = 0, c = 20000; 5 printf("输入今日开销,直到输入-1终止:"); 6 while (1) { 7 scanf("%lf", &a); 8 if (a == -1) { 9 break; 10 } 11 sum = sum + a; 12 if (c > a) { 13 c = a; 14 } 15 if (b < a) { 16 b = a; 17 } 18 } 19 printf("今日累计消费总额:%.1f\n", sum); 20 printf("今日最高一笔开销:%.1f\n", b); 21 printf("今日最低一笔开销:%.1f\n", c); 22 23 return 0; 24 }
运行结果截图:

实验任务5
代码:
1 #include <stdio.h> 2 #include <stdlib.h> 3 int main() 4 { 5 int day, s, i; 6 printf("猜猜2025年4月哪一天是你的lucky day"); 7 day = rand() % 30 + 1; 8 printf("开始喽,你有三次机会,猜吧(1~30):"); 9 scanf("%d", &s); 10 for (i = 0; i < 2; ++i) { 11 if (s < day) { 12 printf("你猜的日期早了,你的lucky day还没到呢\n"); 13 } 14 if (s > day) { 15 printf("你猜的日期晚了,你的lucky day总会到的\n"); 16 } 17 printf("再猜(1~30)"); 18 if (s == day) { 19 printf("哇,猜中了:-)"); 20 break; 21 } 22 scanf("%d", &s); 23 } 24 if (s != day) { 25 printf("次数用完了。偷偷告诉你,4月你的lucky day是%d号", day); 26 } 27 return 0; 28 29 }
运行结果截图:

实验任务6
代码:
1 #include <stdio.h> 2 3 int main() { 4 int n; 5 printf("input n: "); 6 scanf_s("%d", &n); 7 8 for (int i = n; i >= 1; i--) { 9 for (int j = n - i; j > 0; j--) { 10 printf("\t"); 11 } 12 for (int k = 0; k < (2 * i - 1); k++) { 13 printf(" 0 \t"); 14 } 15 for (int j = n - i; j > 0; j--) { 16 printf("\t"); 17 } 18 printf("\n"); 19 20 for (int j = n - i; j > 0; j--) { 21 printf("\t"); 22 } 23 for (int k = 0; k < (2 * i - 1); k++) { 24 printf("<H>\t"); 25 } 26 for (int j = n - i; j > 0; j--) { 27 printf("\t"); 28 } 29 printf("\n"); 30 31 for (int j = n - i; j > 0; j--) { 32 printf("\t"); 33 } 34 for (int k = 0; k < (2 * i - 1); k++) { 35 printf("I I\t"); 36 } 37 for (int j = n - i; j > 0; j--) { 38 printf("\t"); 39 } 40 printf("\n"); 41 } 42 43 return 0; 44 }
运行结果截图:

浙公网安备 33010602011771号