实验2 C语言分支与循环基础应用编程

任务一:

问题1:第13行代码的功能是生成一个1到100之间的随机整数,并将其赋值给变量number。并且此处rand() % 100会生成0到99的随机数,加1后范围变为1到100。

问题2:第14行使用%04d的作用是获取一个4位宽度,不足4位时在左侧补零的数。

问题3:程序的功能是生成5个格式为“20490042”后接4位数字的字符串。后4位由1到100的随机数生成,并通过%04d补零保证长度为4位。

任务二:

问题1:
total_price = 0; 的用途是重置总价,确保每次购买流程结束后重新计算新订单的总金额。如果去掉这行代码,total_price 会持续累加之前所有订单的费用,导致后续订单的总价越来越高

问题2:break:立即终止当前循环,跳出循环体,继续执行循环外的代码(例如输入 0 时退出整个购买流程)

    continue:跳过当前循环的剩余代码,直接进入下一次循环的条件判断(例如输入无效编号时,跳过后续代码并重新显示菜单)。

     区别在于:break 完全退出循环,而 continue 仅跳过当前迭代。

问题3:不需要增加 default 子句。原因是进入 switch 之前,程序已通过 if (choice < 1 || choice > 4) 检查输入是否正确,非法输入会触发 continue 重新循环。因此,switch 的 case 分支已覆盖所有可能的有效输入(1-4),default 子句不会被执行到。增加 default 反而冗余,当前逻辑已保证分支完整性。

任务三:

#include <stdio.h>

int main() {
char c;
while (scanf_s(" %c", &c) != EOF) { 
switch (c) {
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");
}
}
return 0;
}

 

任务四:

#include <stdio.h>

int main() {
double expense, sum = 0.0;
double max = 0.0;
double min = 20000.0;

while (1) {
scanf_s("%lf", &expense);
if (expense == -1) break;
sum += expense;
if (expense > max) max = expense;
if (expense < min) min = expense;
}

printf("最高开销: %.1f\n", max);
printf("最低开销: %.1f\n", min);
printf("总开销: %.1f\n", sum);
return 0;
}

 

任务五:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
srand(time(NULL));
int lucky = rand() % 30 + 1;
int guess, i;

for (i = 0; i < 3; i++) {
printf("请输入猜测的日期(1-30): ");
scanf_s("%d", &guess);
if (guess == lucky) {
printf("猜中了!\n");
return 0;
}
else if (guess < lucky) {
printf("早了\n");
}
else {
printf("晚了\n");
}
}
printf("你的幸运日是%d号\n", lucky);
return 0;
}

任务六:

#include <stdio.h>

int main() {
int n;
scanf_s("%d", &n);

for (int i = 0; i < n; i++)
for (int k = 0; k < 3; k++) {
for (int s = 0; s < 2 * i; s++)
printf(" ");
for (int j = 0; j < n - i; j++)
printf(k == 0 ? " O " : k == 1 ? "<H>" : "I I");
printf("\n");
}
return 0;
}

 

posted @ 2025-03-22 15:10  awfasf  阅读(24)  评论(0)    收藏  举报