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

news/2025/3/26 11:55:10/文章来源:https://www.cnblogs.com/cyyyyc/p/18787873
任务一:
 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("20490042%04d\n", number);
15     }
16 
17     return 0;
18 }

问题一:随机生成(0,100】的整数。

问题二:在生成的数左边添加0,使得生成的数达到4位。

问题三:在学号尾号在(0,100】的学生中随机抽取四位学生。

 

任务二:

 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 }

问题一:

问题一:用途是在每完成一次交易后将总价重新变为零,如果去掉,在多次购买时,总价会不断累加,将前一次的总价累加到下一次;
问题二:break语句会终止并跳出当前所在循环,继续执行循环体后面的代码,直接结束整个购买流程;continue语句会使程序跳过本次循环中continue后面的代码,直接回到循环的条件判断处,开始下一次循环;
问题三:没必要,因为:在进入 switch (choice) 语句之前,程序已经通过 if (choice < 1 || choice > 4) 对 choice 的值进行了有效性检查,只有当 choice 的值为1、2、3、4或者0时程序才会继续执行后续代码。而当 choice 为0时,会通过 break 语句跳出循环,不会进入 switch 语句。所以进入 switch 语句时, choice 的值必然是1、2、3、4中的一个,不存在其他可能的值,也就不会出现需要 default 子句来处理的意外情况,因此没必要增加 default 子句。

 

任务三:

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 
 4 int main()
 5 {
 6     char color;
 7 
 8     while(scanf("%c",&color)!=EOF){
 9     
10     switch(color){
11     case 'r':printf("stop\n");break;
12     case 'g':printf("go go go\n");break;
13     case 'y':printf("waint a minute\n");break;
14     default:printf("illegal input\n");
15     }
16     while((getchar())!='\n');
17     }
18         system("pause");
19 
20         return 0;
21 }

 

 

任务四:

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

 

 

 

任务五:

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<time.h>
 4 
 5 int main()
 6 {
 7     int lucky_date;
 8     int date;
 9     int i=3;
10     srand((unsigned int )time(NULL));
11     lucky_date = rand() %30 +1;
12 
13     printf("猜猜2025年4月哪一天是你的lucky day\n");
14     printf("开始喽,你有三次机会,猜吧(1~30):");
15 
16     while(i>0){
17         scanf("%d",&date);
18         if (date == lucky_date){
19             printf("哇,猜中了:-)\n");
20             return 0;
21         }
22         else if(date < lucky_date){
23             printf("你猜的日期早了,你的lucky day还没到呢\n");
24         }
25         else
26         {
27             printf("你猜的日期晚了,你的lucky day 在前面哦\n");
28         }
29         i--;
30         if(i > 0){
31             printf("再猜(1~30):");
32         }
33 
34     }
35 
36     printf("次数用完啦,偷偷告诉你,4月你的lucky day是%d号\n",lucky_date);
37 
38     system("pause");
39     return 0;
40 
41     }

 

 

 

 

 

任务六:

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

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/904217.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

矿用人员违规闯入监控报警系统

矿用人员违规闯入监控报警系统,设置警戒预警功能,巷道正在行车时,当有行人闯入时,及时抓拍、识别现场违章入侵人员同时闪光警示和音箱报警提示禁止进入,在绞车运行期间人员误入斜巷能够及时报警,自动停止绞车运行。该系统做到绞车运行和行人的安全隔离,有力保障了煤矿斜…

工厂车间人员违规闯入禁区报警系统

工厂车间人员违规闯入禁区报警系统前端设备嵌入AI人体识别算法,对人员的检测、跟踪,实现对人体检测分析识别,实时预警周界区域内人员入侵事件。当有可疑人员进入监测范围内可对其自动识别,即对其抓拍并将当时图像传输到管理中心,在管理中心输出报警信号。工厂车间人员违规…

iis备份还原工具,想要备份iis有哪些工具可以实现?

想要备份IIS(Internet Information Services),可以使用多种专门的备份还原工具。以下是一些常用的IIS备份还原工具及其简要介绍:IISBackUp 功能:专注于备份和恢复IIS站点设置,包括网站配置文件、站点绑定信息、应用程序池设置、SSL证书和密钥信息等。 特点: 提供一种方便…

集合的通用遍历方法--java进阶day09

1.集合的三种通用遍历方法之前我们学习过集合的遍历方法,为什么这里还要再学呢? 这是因为,之前我们用的遍历方法使用了索引,但我们知道set接口的实现类的集合均无索引,所以我们要学习通用的遍历方法 2.迭代器遍历 1.迭代器 迭代器叫做Iterator,是一个接口,我们知道接口是…

安卓逆向:adb连接模拟器进行jeb动态调试

这篇文章的内容记录下我在各个文章搜索学习最后解决了安卓进行模拟器动态调试的方法。 参考的文章有: ADB:https://blog.csdn.net/Python_0011/article/details/132040387 ADB的使用https://blog.csdn.net/SM1555/article/details/112608576 Androidkiller:https://blog.csdn.…

Java中的Map CAS AQS

Java中的Map 1.基本介绍和api使用就免了 Java中的Map是一种用于存储键值对(Key-Value)的接口,属于java.util包,是集合框架的重要组成部分。 2.HashMap从图中的关系可以看出这些类间关系了。 ①基本分析 HashMap的一些属性 // 默认容量 16 static final int DEFAULT_INITIAL…

一款 .NET 开源、功能强大的远程连接管理工具,支持 RDP、VNC、SSH 等多种主流协议!

前言 今天大姚给大家分享一款基于 .NET 开源(GPL-2.0 license)、免费、功能强大的 Windows 远程连接管理工具,支持 RDP、VNC、SSH 等多种主流协议:mRemoteNG。 项目介绍 mRemoteNG是一款基于 .NET 开源(GPL-2.0 license)、免费、功能强大的 Windows 远程连接管理工具,支…

探秘Transformer系列之(17)--- RoPE

从零开始解析Transformer,目标是:(1) 解析Transformer如何运作,以及为何如此运作,让新同学可以入门;(2) 力争融入一些比较新的或者有特色的论文或者理念,让老鸟也可以有所收获。探秘Transformer系列之(17)--- RoPE 目录探秘Transformer系列之(17)--- RoPE文章总表0x0…

《AI未来进行式》(DeepSeek、宇树科技、人形机器人、AI面试官本书全部预言。第18届文津提名奖,樊登、俞敏洪、刘慈欣等推荐) | PDF免费下载

《AI未来进行式》深入探讨人工智能的最新进展与未来趋势,涵盖 DeepSeek、宇树科技、人形机器人、AI 面试官等前沿话题。通过翔实案例与专业分析,预测 AI 如何重塑社会、产业与人类生活。荣获第18届文津图书奖提名,获樊登、俞敏洪、刘慈欣等推荐,适合对 AI 未来充满好奇的读…

python第三章课后程序练习题

重量计算 earth_weight = eval(input("请输入你当前的体重(kg)😊) moon_weight = earth_weight * 0.165 for year in range(1, 11): earth_weight += 0.5 moon_weight = earth_weight * 0.165 print(f"Year {year}: Earth weight = {earth_weight}kg, Moon weight …

逆序对的数量 与 归并排序

题目描述 给定一个长度为 n 的整数数列,请你计算数列中的逆序对的数量。 逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满足i<j且 a[i]>a[j],则其为一个逆序对;否则不是。 输入格式 第一行包含整数 n,表示数列的长度。 第二行包含 n 个整数,表示整个数列…

我最常用的 Visual Studio 2022 扩展插件推荐:生产力必备工具

Visual Studio 2022作为微软推出的一款功能强大的IDE,业界称之为“宇宙第一IDE”。它以出色的性能、丰富的内置功能和对多种编程语言的支持,深受开发者喜爱。然而,随着项目复杂度的增加和开发需求的多样化,仅依靠IDE的内置功能往往不足以满足所有场景。这时,扩展插件成为了…