实验2

任务1

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <time.h>
 4 
 5 #define N 100
 6 #define CNT 5
 7 
 8 int main() {
 9     int number;
10     int i;
11 
12     srand(time(0));     // 以当前系统时间作为随机种子
13     for(i = 0; i < CNT; ++i) {
14         number = rand() % N + 1;
15         printf("20490042%04d\n", number);
16     }
17 
18     return 0;
19 }

屏幕截图 2026-10-28 081715

问题1:生成并打印五个随机打乱顺序的学号,学号的后四位是1到100的随机数。

问题2:生成一个1到100之间的随机整数,并将其赋值给变量number。

问题3:使打印出来的学号后4位永远是四个字符,并在不足四位时在前面补0。

问题4:设置随机数种子,使每次运行程序时生成的五个学号序列都不同。

 任务2

 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         if(choice == 1 || choice == 2)
34             total_price += 3 * quantity;
35         else if(choice == 3)
36             total_price += 5 * quantity;
37         else
38             total_price += 2 * quantity;
39 
40         printf("请投入金额: ");
41         scanf("%f", &amount_paid);
42 
43         change = amount_paid - total_price;
44         printf("本次购买总价: %.2f 元\n", total_price);
45         printf("找零: %.2f 元\n", change);
46 
47         total_price = 0;
48     }
49 
50     printf("感谢您的购买,欢迎下次光临!\n");
51     return 0;
52 }

屏幕截图 2026-10-28 090812

问题1:程序运行时会发生金额累加的计算逻辑错误。

问题2:立即结束本次循环,直接跳转到循环的下一次条件判断。

任务3

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

屏幕截图 2026-10-28 081715

任务4

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

屏幕截图 2026-10-28 231003

任务5

 1 #include <stdio.h>
 2 int main(){
 3     int a,b,c;
 4     int i;
 5     for(i=0;i<5;i++){
 6     scanf("%d %d %d",&a,&b,&c);
 7     if(a+b<=c||a+c<=b||b+c<=a){
 8         printf("不能构成三角形\n");
 9     }
10     else{if(a==b&&b==c){
11         printf("等边三角形\n");
12     }
13     else if(a==b||b==c||a==c){
14         printf("等腰三角形\n");
15     }
16     else if(a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a){
17         printf("直角三角形\n");
18     }else{
19         printf("普通三角形\n");
20         
21     }
22     }
23 }
24     
25 return 0; 
26 }

屏幕截图 2026-10-28 232908

任务6

 

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

int main() {
    int lucky_day;
    int guess;
    int i;
    int is_guessed = 0;

    srand(time(0));
    lucky_day = rand() % 30 + 1;

    printf("猜猜2026年11月哪一天是你的lucky day\n\n");

    for (i = 0; i < 3; i++) {
        if (i == 0) {
            printf("开始喽,你有3次机会,猜吧(1~30): ");
        } else {
            printf("再猜(1~30): ");
        }
        scanf("%d", &guess);

        if (guess == lucky_day) {
            printf("哇,猜中了:)\n");
            is_guessed = 1;
            break;
        } else if (guess < lucky_day) {
            printf("你猜的日期早了,你的lucky day还没到呢\n\n");
        } else {
            printf("你猜的日期晚了,你的lucky day在前面哦\n\n");
        }
    }

    if (is_guessed == 0) {
        printf("次数用光啦。11月你的lucky day是%d号\n", lucky_day);
    }

    return 0;
}

屏幕截图 2026-10-28 233711

 

posted @ 2026-10-28 09:04  NOVAIL  阅读(5)  评论(0)    收藏  举报