实验2

task1

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

运行结果截图

 

问题一:line 12表示生成1~100的随机数

问题二:Line13%04d将整数按照四位宽度输出,不满在前面补零,确保整齐性和可读性

问题三:随机生成以20490042开头的5个号码

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. 雪碧 - 3 元/瓶\n");
11         printf("3. 橙汁 - 5 元/瓶\n");
12         printf("4. 矿泉水 - 2 元/瓶\n");
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为了重置总价,如果去掉,总价会一直相加

问题二:break是终止当前的循环(while1),跳出循环继续后面的语句

continue是跳过本次循环中后面的语句,直接回到循环判断处,开始下一次循环

问题三:没必要,在前面的代码中line20已经判断了范围,不需要再加上default

task3

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

运行结果截图

task4

 1 #include <stdio.h>
 2 int main()
 3 {
 4     double n,max,min,s=0;
 5     printf("输入今日开销,直到输入-1为止:\n");
 6     max=0;min=20000;
 7     while(1){
 8         scanf("%lf",&n);
 9         if(n==-1){
10             break;
11         }
12         s+=n;
13         if(n>max){
14             max=n;
15         }
16         if(n<min){
17             min=n;
18         }
19     }    
20 printf("今日累计消费总额:%.1f\n",s);
21 printf("今日最高一笔开销:%.1f\n",max);
22 printf("今日最低一笔开销:%.1f\n",min);
23 return 0;       
24     
25 }

运行结果截图

 

task5

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

运行结果截图

task6

 1 #include <stdio.h>
 2 int main()
 3 {
 4     int i,n,k,j=1;
 5     scanf("%d",&n);
 6     printf("input n:%d\n",n);
 7     for(k=n;k>0;--k){
 8     for(i=n-1;i>k-1;--i){
 9         printf("     ");}    
10     for(i=1;i<=2*k-1;++i)
11     {printf("  o  ");}
12     printf("\n");
13     for(i=n-1;i>k-1;--i){
14         printf("     ");}
15     for(i=1;i<=2*k-1;++i)
16      {printf(" <H> ");}
17      printf("\n");
18      for(i=n-1;i>k-1;--i){
19         printf("     ");}
20     for(i=1;i<=2*k-1;++i)
21      {
22      printf(" I I ");}
23      printf("\n");
24      } 
25     
26     return 0;
27 }

运行结果截图

 

posted @ 2025-03-21 14:53  火火好样的  阅读(9)  评论(0)    收藏  举报