C(十四)while、for、do-while循环综合(一)

news2024/11/29 10:01:00

uu们,小弟我本科在读,文章我会一直坚持更新下去,包括但不限于C初阶、C进阶、数据结构、C++、Linux、MySQL、项目、QT开发、各种算法······(之后会持续更新),并且站在小白的视角尽可能通俗易懂地把这些写出来,同时加上各种生活场景帮助大家理解知识,并知道说“噢,用来可以这样用”。

 整体工程量比较大,可以给小弟打赏一下多买点营养餐的费用吗?(1元也可以,万分感谢)。

本文目录:👉👉👉

一、数学问题(一)(难度:*)

二、图形的打印(难度:**)

三、密钥(难度:**)

四、数学问题(二)(难度:***)

五、实际场景(难度:***)--- 自选小炒

 

        【分解目标1】选择吃与不吃

 

        【分解目标2】选择如下(自选小炒配料):>(注:米、面、粉免费)

 

        【分解目标3】选择哪种肉,哪种菜

 

        【分解目标4】同学选完后,给下一个同学选择

六、后记

前言:👉👉👉

三大循环结构、各种语句和几个关键字的综合运用。👉

 

while循环 --- 军训匕首操情景

https://blog.csdn.net/2401_87025655/article/details/142651077

for循环 --- 黑神话情景

https://blog.csdn.net/2401_87025655/article/details/142684637

do - while循环 --- 致敬革命烈士

https://blog.csdn.net/2401_87025655/article/details/142699352

goto语句 --- 关机程序(另一位作者的)

https://blog.csdn.net/m0_68865259/article/details/124537858?fromshare=blogdetail&sharetype=blogdetail&sharerId=124537858&sharerefer=PC&sharesource=2401_87025655&sharefrom=from_link

一、数学问题(一)(难度:*)

场景一:求12 与 18的最大公因数

法一:👉(正向思维)

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
int main()
{
	int a = 12;
	int b = 18;
	int max = 1; //1、两个正整数的公因数肯定有1,不妨先令最大公因数为1
	int i = 1;
	for (i = 1; i <= 12; i++)
	{
		if (a % i == 0 && b % i == 0)
		{
			max = i; //2、之后如果找到比1更大的,再赋值给max
		}
	}
	printf("%d", max);
	return 0;
}

法二:👉(逆向思维) 

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
int main()
{
	int a = 12;
	int b = 18;
	int max = 0;
	int i = 0;
	for (i = 12; i > 0; i--)
	{
		if (a % i == 0 && b % i == 0)
		{
			max = i;
			break; //从大到小 --- 找到那个最大的就打破循环
		}
	}
	printf("%d", max);
	return 0;
}

场景二:求十个整数的最大值

法一:do - while循环 

法二:for循环

👉https://blog.csdn.net/2401_87025655/article/details/142699137

场景三: 编写程序数一下 1到 100 的所有整数中出现多少个数字9

本题有一个初学者容易掉进的坑(反正我就掉了,哈哈😄)

话不多说,上分析链接👉

 https://blog.csdn.net/2401_87025655/article/details/142699192

场景四:一个正整数的逆序打印

输入示例:1234

输出示例:4321 

 分析详见👉C题(八)一个正整数的逆序打印(用循环结构实现)

https://blog.csdn.net/2401_87025655/article/details/142708516

二、图形的打印(难度:**)

 场景一:矩形、直角三角形

👉https://blog.csdn.net/2401_87025655/article/details/142651077

 场景二:正三角形

👉 https://blog.csdn.net/2401_87025655/article/details/142675413

三、密钥(难度:**)

场景一:“芝麻开门 ”是通往C语言的大门的暗号,现在你需要说对暗号,大门才会打开。

 👉分析的链接:

https://blog.csdn.net/2401_87025655/article/details/142693306

场景二:输入一串密码,如:“123   xxxx” ,然后读取并确认,是 --- Y;否 --- N。 

👉分析的链接: 

https://blog.csdn.net/2401_87025655/article/details/142694774

四、数学问题(二)(难度:***)

 场景一:水仙花数是指一个三位数,它的每个数位上的数字的立方和等于它本身。
例如,153就是一个水仙花数,因为1³ + 5³+ 3³ = 1 + 125 + 27 = 153。

👉分析的链接(难点剖析): 

https://blog.csdn.net/2401_87025655/article/details/142697771

场景二:打印1到100之间的素数。(素数也叫质数,是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。例如2、3、5、7、11等都是素数。)

👉分析的链接 :(含对C语言中0与非0的认知、flag证伪理论)

https://blog.csdn.net/2401_87025655/article/details/142703599

五、实际场景(难度:***)--- 自选小炒

 场景一:

“要吃什么吗,靓仔?” 热情的食堂阿姨问你了,你要怎么回答?

 【分解目标1】选择吃与不吃

第一步:打印菜单(先执行 --- 用do - while循环) 

    do
    {
        //菜单栏
        printf("******* 1、炒面 *******\n");
        printf("******* 2、炒饭 *******\n");
        printf("******* 3、炒粉 *******\n");
        printf("**** 0、不了,谢谢 ****\n");
    }
    while();

 第二步:开始选择

        //选择栏
        int input = 1;
        printf("请选择:>");
        scanf("%d", &input);

第三步:循环实现 --- 如果不吃,阿姨就问下一位同学

基于:在C语言中,非0表示真,0表示假,所以👉

选择 1、2 、3(非0)时,加上取反操作符 !-----> 变为0,表示假,循环终止。

选择 0 时,加上 !------> 变为非0,表示真,循环继续。

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
    int input = 1;
    printf("要吃什么吗,靓仔?\n");
    do
    {
        //菜单栏
        printf("******* 1、炒面 *******\n");
        printf("******* 2、炒饭 *******\n");
        printf("******* 3、炒粉 *******\n");
        printf("**** 0、不了,谢谢 ****\n");
        //选择栏
        printf("请选择:>");
        scanf("%d", &input);
        //如果不吃
        if (input == 0)
        {
            printf("\n你呢,同学?\n\n");
        }
        //如果吃
        else
        {
            printf("循环体1");
        }
    } 
    while (!input); //非0表示真,0表示假
    return 0;
}

【分解目标2】选择如下(自选小炒配料):>(注:米、面、粉免费)

————两肉两菜 :8元

————三肉两菜 :9元

————三肉三菜 :10元

接下来,编写循环体1

            printf("同学,有8、9、10元的配料,你要几元的配料呀?:>");
            int input1 = 0;
            scanf("%d",&input1);
            switch (input)
            {
            case 8:
                printf("语句1\n");
                break;
            case 9:
                printf("语句2\n");
                break;
            case 10:
                printf("语句3\n");
                break;
            }

tip:因为我这里说明在 8、9、10中选,所以我switch内部没有写default子句。(当然,有写更好)。  

【分解目标3】选择哪种肉,哪种菜

以8元的为例,选两肉两菜,共4个选择,所以语句1为 👉

printf("同学,选一下配料。\n");
int j = 0;
for (j = 4; j > 0; j--)
{
   printf("这个。\n");
}

同理,9元---5个选择 ; 10元 --- 6个选择。 

【分解目标4】同学选完后,给下一个同学选择

语句1、2、3执行完后都加上input = 0,使得do - while循环继续。 


最终代码 👉

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
    int input = 1;
    printf("要吃什么吗,靓仔?\n");
    do
    {
        //菜单栏
        printf("******* 1、炒面 *******\n");
        printf("******* 2、炒饭 *******\n");
        printf("******* 3、炒粉 *******\n");
        printf("**** 0、不了,谢谢 ****\n");
        //选择栏
        printf("请选择:>");
        scanf("%d", &input);
        //如果不吃
        if (input == 0)
        {
            printf("\n你呢,同学?\n\n");
        }
        //如果吃
        else
        {
            //选小炒配料
            printf("同学,有8、9、10元的配料,你要几元的配料呀?:>");
            int input1 = 0;
            scanf("%d",&input1);
            int j = 0;
            switch (input1)
            {
            case 8:
                printf("同学,选一下配料。\n");
                for (j = 4; j > 0; j--)
                {
                    printf("这个。\n");
                }
                input = 0;
                break;
            case 9:
                printf("同学,选一下配料。\n");
                for (j = 5; j > 0; j--)
                {
                    printf("这个。\n");
                }
                input = 0;
                break;
            case 10:
                printf("同学,选一下配料。\n");
                for (j = 6; j > 0; j--)
                {
                    printf("这个。\n");
                }
                input = 0;
                break;
            }
        }
    } 
    while (!input); //非0表示真,0表示假
    return 0;
}

运行结果:👉

要吃什么吗,靓仔?
******* 1、炒面 *******
******* 2、炒饭 *******
******* 3、炒粉 *******
**** 0、不了,谢谢 ****
请选择:>0

你呢,同学?

******* 1、炒面 *******
******* 2、炒饭 *******
******* 3、炒粉 *******
**** 0、不了,谢谢 ****
请选择:>1
同学,有8、9、10元的配料,你要几元的配料呀?:>8
同学,选一下配料。
这个。
这个。
这个。
这个。
******* 1、炒面 *******
******* 2、炒饭 *******
******* 3、炒粉 *******
**** 0、不了,谢谢 ****
请选择:>2
同学,有8、9、10元的配料,你要几元的配料呀?:>9
同学,选一下配料。
这个。
这个。
这个。
这个。
这个。
******* 1、炒面 *******
******* 2、炒饭 *******
******* 3、炒粉 *******
**** 0、不了,谢谢 ****
请选择:>

六、后记 

这个do - while循环常用于菜单栏的弹出,之后如果有写设计游戏库的博文的话,会用到。 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

xss之dom类型

目录 xss关于dom类型 1、闭合方式 2、闭合&#xff0c;直接输入1&#xff0c;成功闭合 上我们的pikachu xss关于dom类型 1、闭合方式 输入123&#xff0c;然后打开f12&#xff0c;审查元素&#xff0c;之前一直没有搞懂为什么要在前面加上个单引号 输入两个双引号&#x…

【STM32开发之寄存器版】(三)-详解NVIC中断

一、前言 STM32F103ZET6具备强大的中断控制能力&#xff0c;其嵌套向量中断控制器(NVIC)和处理器核的接口紧密相连&#xff0c;可以实现低延迟的中断处理和高效地处理晚到的中断。NVIC主要具备以下特性&#xff1a; 68个可屏蔽中断通道(不包含16个Cortex™-M3的中断线)&#xf…

【黑马点评】 使用RabbitMQ实现消息队列——1.Docker与RabbitMQ环境安装

黑马点评中&#xff0c;使用基于Redis的Stream实现消息队列&#xff0c;但是Strema已经不太常用。在此修改为使用RabbitMQ实现消息队列。主要包括RabbitMQ的环境准备&#xff08;Docker的下载与安装&#xff09;以及如何修改黑马点评中的代码。 【黑马点评】使用RabbitMQ实现消…

【Java数据结构】栈 (Stack)

【本节目标】 1. 栈的概念及使用 2. 相关 OJ 题 一、概念 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO&#xff08;Last…

C语言—单链表

目录 一、链表的概念及结构 二、单链表实现 &#xff08;2.1&#xff09;基本结构定义 &#xff08;2.2&#xff09;申请节点 &#xff08;2.3&#xff09;打印函数 &#xff08;2.4&#xff09;头部插入删除\尾部插入删除 &#xff08;2.4.1&#xff09;尾部插入 &…

Anaconda的安装与环境设置

文章目录 一、Anaconda介绍二、Anaconda环境搭建1. 下载Anaconda(1)官网下载(2)清华大学镜像 2. 安装Anaconda3.配置环境变量4.检验conda是否安装成功5.更改镜像源6.若菜单栏没有conda prompt 三、虚拟环境1.创建、查看、删除虚拟环境2.激活、退出虚拟环境 四、CUDA、Pytorch、…

基于SpringBoot+Vue的酒店客房管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

qemu-system-aarch64开启user用户模式网络连接

一、问题 在使用qemu构建arm64的虚拟机时&#xff0c;虚拟机没有网络&#xff0c;桥接方式相对麻烦&#xff0c;我只是需要联网更新即可。与宿主机的通信我使用共享文件夹即可满足要求。 使用指令启动虚拟机时&#xff0c;网络部分的参数为 -net user,hostfwdtcp::10022-:22 …

白板2-数学基础

高斯分布1-极大似然估计 高斯分布2-极大似然估计-无偏&有偏 高斯分布3-从概率密度角度高斯分布4-局限性高斯分布5-边缘概率及条件概率高斯分布6-求联合概率分布

八大排序--01冒泡排序

假设有一组数据 arr[]{2&#xff0c;0&#xff0c;3&#xff0c;4&#xff0c;5&#xff0c;7} 方法&#xff1a;开辟两个指针&#xff0c;指向如图&#xff0c;前后两两进行比较&#xff0c;大数据向后冒泡传递&#xff0c;小数据换到前面。 一次冒泡后&#xff0c;数组中最大…

codetop标签动态规划大全C++讲解(四)!!动态规划刷穿地心!!学吐了家人们o(╥﹏╥)o

一天复习一篇&#xff0c;个人学习记录 1.最大子数组和2.最长的斐波那契子序列的长度3.最大正方形4.最长有效括号5.乘积最大子数组6.可被三整除的最大和7.回文子串数目8.最长回文子序列9.最长回文子串 1.最大子数组和 给你一个整数数组 nums &#xff0c;请你找出一个具有最大…

SpringBoot在线教育平台:设计与实现的深度解析

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

【JAVA开源】基于Vue和SpringBoot的教学资源库系统

本文项目编号 T 067 &#xff0c;文末自助获取源码 \color{red}{T067&#xff0c;文末自助获取源码} T067&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析5.4 用例设计5.4.1 管…

654、最大二叉树

1、题目描述 . - 力扣&#xff08;LeetCode&#xff09; 其实就是给定了一个所谓"最大二叉树"的规则&#xff0c;让我们去构建二叉树。 以 nums [3,2,1,6,0,5] 为例&#xff0c;规则如下&#xff1a; (1)找出其中的最大值6将其作为根节点&#xff0c;6前面的是左子…

自动驾驶系列—线控系统:驱动自动驾驶的核心技术解读与应用指南

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

工具 | 红队大佬亲测5款推荐的Burpsuite插件

*免责声明&#xff1a;* *本文章仅用于信息安全技术分享&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作…

基于SpringBoot+Vue+MySQL的校园二手物品交易系统

系统展示 用户前台界面 管理员后台界面 系统背景 校园二手物品交易系统开发的背景与重要性随着高等教育的蓬勃发展&#xff0c;大学生群体的规模持续扩大&#xff0c;随之而来的是物品更新换代速度的显著加快。学生们在追求新潮、高品质生活的同时&#xff0c;往往会产生大量闲…

微信步数C++

题目&#xff1a; 样例解释&#xff1a; 【样例 #1 解释】 从 (1,1) 出发将走 2 步&#xff0c;从 (1,2) 出发将走 4 步&#xff0c;从 (1,3) 出发将走 4 步。 从 (2,1) 出发将走 2 步&#xff0c;从 (2,2) 出发将走 3 步&#xff0c;从 (2,3) 出发将走 3 步。 从 (3,1) 出发将…

llm接口高可用工程实践(尽快关注我,以后这些文章将只对粉丝开放)

上一节课程链接&#xff1a;中文llama3仿openai api实战-CSDN博客 &#xff0c;本文是在上一节基础上继续操作 课程介绍 本文基于Chinese-LLaMA-Alpaca-3&#xff08;https://github.com/ymcui/Chinese-LLaMA-Alpaca-3&#xff09;项目&#xff0c;介绍如何通过搭建2个llama3…

生信初学者教程(二十五):验证候选特征

文章目录 介绍加载R包导入数据函数重要特征的表达ROC分析汇总筛选结果输出结果总结介绍 在成功识别出核心特征之后,为了验证这些特征的有效性和可靠性,我们在发现数据集和验证数据集上进行了进一步的评估。这一步骤旨在确保这些特征在不同数据集上的表达值具有一致性,并验证…