wangchi12321

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

task1:

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <time.h>
 4 
 5 #define N 5
 6 
 7 int main(){
 8     int number;
 9     int i;
10     
11     srand(time(0));
12     for(i = 0;i < N; ++i){
13         number = rand()%100+1;
14         printf("20241350%04d\n", number);
15     }
16     
17     return 0;
18 } 

task2:

 1 #include <stdio.h>
 2 
 3 int main(){
 4     int choice, quantity;
 5     float total_price = 0, amount_paid, change;
 6     
 7     while (1){
 8         printf("\n自动饮料售卖机菜单:\n") ;
 9         printf("1. 可乐 - 3 元/瓶\n");
10         printf("2. 雪碧");
11         printf("3. 橙汁");
12         printf("4. 矿泉水");
13         printf("0. 退出购买流程\n"); 
14         printf("请输入饮料编号:"); 
15         scanf("%d",&choice);
16         
17         if (choice = 0);
18             break;
19         
20         if (choice < 1 || choice > 4){
21             printf("无效的饮料编号,请重新输入\n");
22             continue;
23             }
24         
25         printf("请输入购买的数量");
26         scanf("%d",&quantity);
27         
28         if (quantity < 0){
29             printf("购买数量不能是负数,请重新输入,\n");
30             continue;
31         }
32          
33         switch (choice){
34             case 1:
35             case 2:
36                 total_price += 3*quantity;
37                 break;
38             case 3:
39                 total_price += 5* quantity;
40                 break; 
41             case 4:
42                 total_price += 2* quantity;
43                 break;
44     }
45     
46     printf("请投入金额:");
47     scanf("%f", &amount_paid);
48     
49     change = amount_paid - total_price;
50     printf("本次购买总价:%.2f 元\n", total_price);
51     printf("找零:%.2f 元\n", change);
52     
53     total_price = 0;
54     }
55     
56     printf("感谢你的购买,欢迎下次光临!\n");
57     return 0;
58 }

问题一:line53代码(total_price = 0;)的用途是在每次购买流程结束后重置总价。如果去掉这行代码,total_price会持续累积之前所有购买的总金额,导致后续购买的总价计算错误。例如,客户第一次购买后总价为5元,第二次购买时总价会在此基础上继续累加,而非从零开始计算。

问题二:break:直接终止整个循环,跳出循环体。例如,当用户输入0时,break会结束while循环,程序退出购买流程。continue:跳过当前循环的剩余代码,直接进入下一次循环。例如,客户输入无效的饮料编号时,continue会跳过后续的数量输入和价格计算步骤,重新回到菜单选择。

问题三:不需要。因为程序在进入switch语句前,已经通过if (choice < 1 || choice > 4)的检查,确保choice只能是14之间的有效值。因此,switchcase已覆盖所有可能的分支,default子句在此场景下不会被执行到,增加它不会带来实际作用。

task3:

 1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5     char light;
 6     while(scanf("%c",&light) != EOF){
 7     
 8     getchar();
 9     switch(light)
10     {
11         case 'r':
12             printf("stop!\n");
13             break;
14         case 'g':
15             printf("go go go\n");
16             break;
17         case 'y':
18             printf("wait a minute\n");
19             break;
20         default:
21             printf("something must be wrong...\n");
22             break;
23     }
24     }
25     
26     return 0;
27     
28  } 

 

task4:

#include <stdio.h>
#include <math.h>

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

task5:

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <time.h>
 4 
 5 int main() {
 6     srand(time(0));  
 7     int lucky_day = rand() % 30 + 1;  
 8     int guess, attempts = 0;
 9     printf("猜猜2025年4月哪一天是你的lucky day\n\n"); 
10     for (attempts = 0; attempts < 3; attempts++) {
11         printf("开始喽,你有三次机会,猜吧(1~30):");
12         scanf("%d", &guess);
13         
14         if (guess == lucky_day) {
15             printf("哇,猜中了!:-)\n\n");
16             return 0; 
17         } 
18         else {
19             printf("%s\n", (guess < lucky_day) ? "你猜的日期早了,你的lucky day还没到呢\n" : "你猜的日期晚了,你的lucky day在前面哦\n");  
20         }
21     }
22     
23     printf("次数用完啦。偷偷告诉你,4月你的lucky day是 %d 号\n", lucky_day);  
24     return 0;
25 }

task6:

 1 #include <stdio.h>
 2 
 3 int main() {
 4     int n;
 5     printf("input n:");
 6     scanf("%d", &n);
 7     
 8     int max_comb = 2 * n - 1;
 9     int width_per_comb = 10;  
10     int max_width = max_comb * width_per_comb;
11     
12     int k; 
13     for (k = n; k >= 1; k--) {
14         int comb = 2 * k - 1;        
15         int current_width = comb * width_per_comb;
16         int space_num = (max_width - current_width) / 2; 
17         
18         printf("%*s", space_num, "");
19         int i;   
20         for (i = 0; i < comb; i++) 
21             printf("    O     ");     
22         printf("\n");
23         
24         printf("%*s", space_num, "");
25         for (i = 0; i < comb; i++)
26             printf("   <H>    ");       
27         printf("\n");
28         
29         printf("%*s", space_num, "");
30         for (i = 0; i < comb; i++)
31             printf("   I I    ");       
32         printf("\n");
33     }
34     
35     return 0;
36 }

 

posted on 2025-03-27 20:21  卡希勒  阅读(10)  评论(0)    收藏  举报