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,不妨先令最大公因数为1int 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循环常用于菜单栏的弹出,之后如果有写设计游戏库的博文的话,会用到。