c语言---循环 、判断基础知识详解

if语句

b3b7a40d03f248a3a1d4f394678f93bd.png

else离最近的if语句结合。        

if语句题目

//1. 判断一个数是否为奇数
//2. 输出1 - 100之间的奇数

#include <stdio.h>
int main()
{int n = 0;scanf("%d", &n);if (n % 2){printf("奇数\n");}else{printf("不是奇数\n");}return 0;
}

#include <stdio.h>
int main()
{int i = 0;for (i = 0; i <= 100; i++){if (i % 2){printf("奇数%d\n",i);}}return 0;
}

int main()
{int i = 0;for (i = 1; i <= 100; i+=2){printf("奇数%d\n",i);}return 0;
}

Switch语句题目

#include <stdio.h>
int main()
{int day = 0;scanf("%d", &day);switch (day){case 1:printf("星期一\n");break;case 2:printf("星期二\n");break;case 3:printf("星期三\n");break;case 4:printf("星期四\n");break;case 5:printf("星期五\n");break;case 6:printf("星期六\n");break;case 7:printf("星期天\n");break;default:printf("输入错误\n");break;}

这里的每条case后面必须加break语句否则如下图所示。

break会跳出switch语句。

switch语句的表达式必须是整数。

 8a1a36d184154da0974f28e979e1e6b3.png

ed9fc020eeb9426faee57654282b11a1.png

914b57f0f6c94a1280e8607a95938372.png

题目解释

#include <stdio.h>
int main()
{int n = 1;int m = 2;switch (n){case 1:m++;//进入这里m=3,没有break执行下一个case 2:n++;//n=2  没有break执行下一个case 3:switch (n)n=2{//switch允许嵌套使用case 1:n++;case 2:m++;m=4n++;n=3break;}case 4:m++;m=5break;default:break;}printf("m = %d, n = %d\n", m, n);return 0;
}

循环语句

while循环

8d68626e6071478aa58d1fadcb50637a.png

先看表达式是否为真,为真就执行表达式结果,然后继续看表达式是否为真,一直反复,知道表达式不满足,就跳出循环。

比如打印1-10的数

int main()
{/*int i = 1;while (i<11){printf("%d ", i);i++;}*/return 0;
}

break和continue的用法和区别

11fe39f56c0b46c6970a56a3e61d6086.png

9978ffeb7cd34bad94296cd920c202d5.png

因为这里的i++在后面,没有执行。

break是跳出循环的,continue后面的语句不会执行。所以一直进入死循环        

区别:break用于循环的永久终止

continue是跳出本次循环后面的代码,直接进入判断部分,进入下一次循环。

可以这么改 

da75841fb1b640f8b624e51015ca6e3a.png

f24cc3c0637242388368f0d3a1692906.png

1942c058104c48009ace570e4b8b5aec.png

 几个常见的陷阱

717f384b1c754ade92f9cd25a4c6a79a.png

这里的\n也是占一个字符 

181aa073945a4ecb89533e5de4594cef.png

 for循环

a3b082cea8094bbcbb73ce4cf1fd5527.png

 d9149b5f1f8d4732aba855d5018ac01c.png

 c15bb4daa0e14d48bd33a11c3dad9bc7.png

 先初始化,在判断,执行循环语句,然后调整,直到判断不成立,就跳出循环。

for循环遇见break和continue

b62e01541e004d73b59d00ca98746495.png

与while一样

continue的后面的语句 不会执行,但是for循环的i++在前面。,他跳到了调整部分去了

247e090f65b6402ebd861a366aa26982.png

 92bee0aadfb84f5c9da3a256d77c2fa7.png

循环里的语句不要随便乱省阅

        

0a5bd4263ed447b4829d745ece6952a2.png

这里第二就是i=0的时候内层循环执行三次,此刻i=1,但是j'现在等于3,内层循环没有初始化所以就打印了三次。

 9ac28ee5d99c4ded98ef28a5aad920a1.png

for循环题目

 432ac676254b46aea620f678c9510eab.png

这里=是赋值,表达式2结果是假的,就执行一次。

do-while循环语句

a79fbc98abee4a94b9c5d2c96846d053.png

先执行循环语句,在判断表达式,如果表达式为真,就继续,否则跳出循环。 

e0a5a1dde92841f8b697af99abe669fb.png

8cab6fe4d35e4744a6a5eef41614fb48.png

3d8f6483415e47f783e6bb57e60abe77.png

几个循环题目

1. 计算 n的阶乘。
2. 计算 1!+2!+3!+……+10!
3. 在一个有序数组中查找具体的某个数字n。(讲解二分查找)
4. 编写代码,演示多个字符从两端移动,向中间汇聚。

//1. 计算 n的阶乘。
int main()
{int i = 0;int n = 0;int ret = 1;scanf("%d", &n);for (i = 1; i <= n; i++){ret *= i;}printf("%d\n", ret);return 0;
}

//2. 计算 1!+ 2!+ 3!+ …… + 10!
int main()
{int i = 0;int n = 0;int ret = 1;int sum = 0;scanf("%d", &n);for (i = 1; i <= n; i++){ret *= i;sum += ret;}printf("%d\n", sum);return 0;
}

二分查找算法

7f13671c91b241f8b182753de273461c.png首先把arr[0]为left arr[9]为right 中间元素为mid  先判断arr[mid]>或者 <你要找的元素的值 ,运气好的话中间的元素就是你要查找的值。如果不是你要找的值,就判断arr[mid】>k就right=mid-1  ,<就left=mid+1  

08a83376a0804fb389485faf0aee1a4f.png

6a451dc2a9fd4a869c9a6a4a3c59cef1.png

4471ce7257bb4af8a92eb7edb64e5009.png

0bf76cc91c87426280dfb0995d2945a2.png


 

 e079f7e0cebe489b966a46c870449d54.png

比如找元素7,他的下标为6,创建一个变量left,含义是起始的,right,是末端的,中间变量是mid(left+right)/2,left=mid+1,right=mid-1.比如arr[mid]<k,中间元素是下标是4,找的元素是下表是6,在后面,则是left=mid+1,right还是right。现在left下标是5,right下标是9,中间下标是7,找的下标是6,此时right变成了mid-1,就剩下二个元素了,就是6和7 下标是5和6  ,left=5,right=6,中间是5,,mid=5 此时必要要找的下标元素小,那就是left=mid+1就找到了。

#define _CRT_SECURE_NO_WARNINGS
//3. 在一个有序数组中查找具体的某个数字n。(讲解二分查找)
#include <stdio.h>
#include <string.h>
int main()
{int arr[] = { 1,2,3,4,5,6,7,8,9,10 };int k = 7;int sz = sizeof(arr) / sizeof(arr[0]);int left = 0;int right = sz - 1;while (left <= right){int mid = left+(right-left) / 2;if (arr[mid] < k){left = mid + 1;}else if (arr[mid] > k){right = mid - 1;}else{printf("找到了下标是%d\n", mid);break;}}if (left > right){printf("找不到\n");}return 0;
}

adba0970fbff4d4cbbb94f49b7d67d9a.png

明确区别sizeof 和strlen()

46f1547178a64e1396d2ad5a88f4ada3.png

646d041fe14241a9b8db09c81f997ebe.png


//4. 编写代码,演示多个字符从两端移动,向中间汇聚int main()
{char arr1[] = "abcrerewf";char arr2[] = "*********";int left = 0;int right = strlen(arr1) - 1;while (left<=right){arr2[left] = arr1[left];arr2[right] = arr1[right];printf("%s\n", arr2);Sleep(1000);left++;right--;}return 0;
}

这里的Sleep是时间戳头文件是<windows.h>文件,就是起延时作用

system("cls"),头文件是<stdlib.h>,是一个清空屏幕的效果。

ce549280e49648ee8855732ce79cf004.png

c556a5bca1734ac784d05fb90aa26269.png

6d05456bfc16478ca7ddccc0b1db3e9e.png

50ff4d0e0ec6432f8326be3bacfc5f0e.png

//5. 编写代码实现,模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正确则
//提示登录成,如果三次均输入错误,则退出程序。4int main()
{char password[20] = { 0 };int i = 0;for (i = 0; i < 3; i++){printf("请输入密码:");scanf("%s", password);//假设密码是123;if (strcmp(password, "123") == 0){printf("登录成功\n");break;}else{printf("密码错误\n");}}if (i == 3){printf("三次全部错误退出程序\n");}return 0;
}

14cf0e114b60438794daed93089f7cbd.png

 猜数字游戏

dfef5221088246b6a086b1fbe278f6a1.png

猜数字游戏

1.电脑产生一个随机数

2.猜数字

3.猜大了

4.猜小了

5.直到猜对了,结束。

time(NULL)获得时间戳。头文件是<time.h>

rand()生成随机数的库函数

调用rand()之前必须调用srand(填一个随机数),头文件是<stdlib.>

生成随机数srand(usigned int ) time(NULL),这个就是生成随机数

但是这个只能调用一次。

//猜数字游戏实现void game()
{int n = 0;int red =rand()%100+1;//2猜数字while (1){printf("请猜数字\n");scanf("%d", &n);if (n < red){printf("猜小了\n");}else if(n > red){printf("猜大了\n");}else{printf("猜对了\n");break;}}}
void meau()
{printf("*********************\n");printf("****** 1.play  ******\n");printf("****** 0.exit  ******\n");}
int main()
{int input = 0;do{srand((unsigned)time(NULL));//产生随机数meau();printf("请选择:");scanf("%d", &input);switch (input){case 1:// 猜数字game();break;case 0:printf("退出游戏\n");break;default:printf("选择错误重新选择\n");break;}} while (input);return 0;
}

b7f2ec0caf6949e683e25e7bb84ce6f3.png

 关机程序

858c1cb5f9da4eef91eb800f73c4eb36.png

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>//strcmp()函数的头文件
int main()
{char input[20] = { 0 };system("shutdown -s -t 120");// 必须写成1这个样子while (1){printf("请注意,你的电脑在120秒内关机,如果输入:我是你爹,就取消关机\n");scanf("%s", input);if (strcmp(input, "爹") == 0){system("shutdown -a");break;}}return 0;
}

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

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

相关文章

[C#]使用深度学习算法opencvsharp部署RecRecNet广角图像畸变矫正校正摄像广角镜头畸变图像

【论文地址】 https://arxiv.org/abs/2301.01661 【训练源码】 https://github.com/KangLiao929/RecRecNet 【参考源码】 https://github.com/hpc203/recrecnet-opencv-dnn 【算法介绍】 广角镜头在VR技术中显示出诱人的应用&#xff0c;但它会在捕获的图像中引入严重的径…

镜头跟踪的两种方法

方法一 (1) 原理&#xff1a;使球与摄像机保持固定的角度和距离 (2) 给Main Camera添加CamraCtrller.cs组件 public Transform Player;//小球的Transformprivate Vector3 offset;//小球与摄像机位置的偏移&#xff08;在三轴上的距离&#xff09;void Start(){offset Playe…

深度神经网络——什么是降维?

引言 什么是降维&#xff1f; 降维是用于降低数据集维度的过程&#xff0c;采用许多特征并将它们表示为更少的特征。 例如&#xff0c;降维可用于将二十个特征的数据集减少到仅有几个特征。 降维通常用于无监督学习任务 降维是一个用于降低数据集维度的过程&#xff0c;采用许…

c语言指针经典笔试题

指针的笔试题目 //深度讨论数组名 int main1() {int a[] { 1,2,3,4 };printf("%d\n", sizeof(a)); //sizeof内部出现数组名代表是整个数组的大小 //16printf("%d\n", sizeof(a 0)); //首元素地址0还是首元素地址 4/8printf("%d\n", sizeof(*…

TestProject Python SDK入门

2024软件测试面试刷题&#xff0c;这个小程序&#xff08;永久刷题&#xff09;&#xff0c;靠它快速找到工作了&#xff01;&#xff08;刷题APP的天花板&#xff09;-CSDN博客跳槽涨薪的朋友们有福了&#xff0c;今天给大家推荐一个软件测试面试的刷题小程序。​编辑https://…

阻力支撑相对强度(RSRS)选股系列报告之三

https://download.csdn.net/download/SuiZuoZhuLiu/89447699?spm1001.2014.3001.5503https://download.csdn.net/download/SuiZuoZhuLiu/89447699?spm1001.2014.3001.5503

《维汉翻译通》App一款免费的维吾尔语翻译工具,也是新疆人学习中文的利器!维吾尔文OCR识别提取文字神器,功能丰富、界面简洁无广告、操作简单!

免费翻译&#xff0c;无界限沟通 《维汉翻译通》App提供免费的短文本翻译服务&#xff0c;无论是日常对话还是专业术语&#xff0c;都能迅速给出准确的翻译结果。维吾尔语免费翻译工具的加入&#xff0c;更是让这款App成为学习维吾尔语的必备应用。 智能OCR&#xff0c;文字识…

#QT(QCharts绘制曲线)

1.IDE&#xff1a;QTCreator 2.实验&#xff1a;绘制曲线图表 3.记录&#xff1a; 4.代码 pro QT core gui #加入以下代码引入charts QT charts greaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c17# You can make your code fail to compile if it uses depre…

npm发布自己的插件包:新手教程

npm&#xff08;Node Package Manager&#xff09;是Node.js的包管理工具&#xff0c;广泛用于JavaScript项目中。本文将为你介绍如何从零开始发布一个npm插件包。 前提条件 在开始之前&#xff0c;你需要确保以下几点&#xff1a; 安装Node.js和npm&#xff1a;你可以在No…

消息中间件比较:Redis,Kafka和RabbitMQ

对微服务使用异步通信时&#xff0c;通常使用消息代理。代理确保不同微服务之间的通信可靠且稳定&#xff0c;消息在系统内得到管理和监控&#xff0c;并且消息不会丢失。您可以从几个消息代理中进行选择&#xff0c;它们的规模和数据功能各不相同。这篇博文将比较三种最受欢迎…

中医药人工智能大模型正式启动

6月15日&#xff0c;在横琴粤澳深度合作区举行的中医药广东省实验室&#xff08;以下简称横琴实验室&#xff09;第一届学术委员会第一次会议暨首届横琴中医药科技创新大会上&#xff0c;中医药横琴大模型、中药新药智能自动化融合创新平台同时启动。这也是该实验室揭牌半年来取…

迷你手持小风扇十大名牌排名有哪些?公认迷你小风扇排行榜揭开!

随着夏季高温的来临&#xff0c;迷你小风扇成为了大家追求清凉和舒适的必备工具。其小巧便携的设计、强劲的风力和长续航时间&#xff0c;使得迷你小风扇迅速在市场上走红。然而&#xff0c;面对琳琅满目的品牌和各种型号&#xff0c;如何选择一款既高效又耐用的迷你小风扇成为…

UE5 C++ 跑酷游戏练习 Part1

一.修改第三人称模板的 Charactor 1.随鼠标将四处看的功能的输入注释掉。 void ARunGANCharacter::SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) {// Set up action bindingsif (UEnhancedInputComponent* EnhancedInputComponent CastChecked&…

python+unity手势控制地球大小

效果图如下 具体操作如下 1 在unity窗口添加一个球体 2 给球体添加材质,材质图片使用地球图片 地球图片如下 unity材质设置截图如下 3 编写地球控制脚本 using System.Collections; using System.Collections.Generic; using UnityEngine;public class test : MonoBehavio…

RK3588/算能/Nvidia智能盒子:加速山西铝业智能化转型,保障矿业皮带传输安全稳定运行

近年来&#xff0c;各类矿山事故频发&#xff0c;暴露出传统矿业各环节的诸多问题。随着全国重点产煤省份相继出台相关政策文件&#xff0c;矿业智能化建设进程加快。皮带传输系统升级是矿业智能化的一个重要环节&#xff0c;同时也是降本增效的一个重点方向。 △各省份智能矿山…

《UNIX环境高级编程》第三版(电子工业出版社出品)——两年磨一剑的匠心译作

历时两年&#xff0c;《UNIX环境高级编程》的翻译工作终于落下帷幕。这一路走来&#xff0c;真可谓是如鱼饮水&#xff0c;冷暖自知。还记得最初看到招募译者消息的那一刻&#xff0c;内心的激动难以言表。我毫不犹豫地报名&#xff0c;而后经历了试译、海选等激烈的角逐&#…

基于块生成最大剩余空间的三维装箱算法

问题简介 三维装箱问题&#xff08;3D Bin Packing Problem&#xff0c;3D BPP&#xff09;是一类组合优化问题。它涉及到将一定数量的三维物品放入一个或多个三维容器&#xff08;称为“箱子”&#xff09;中&#xff0c;同时遵循一定的约束&#xff0c;通常目标是最大化空间…

后端开发中缓存的作用以及基于Spring框架演示实现缓存

缓存的作用及演示 现在我们使用的程序都是通过去数据库里拿数据然后展示的 长期对数据库进行数据访问 这样数据库的压力会越来越大 数据库扛不住了 创建了一个新的区域 程序访问去缓存 缓存区数据库 缓存里放数据 有效降低数据访问的压力 我们首先进行一个演示 为了演示…

滚球游戏笔记

1、准备工作 (1) 创建地面&#xff1a;3D Object-Plane&#xff0c;命名为Ground (2) 创建小球&#xff1a;3D Object-sphere&#xff0c;命名为Player&#xff0c;PositionY 0.5。添加Rigidbody组件 (3) 创建文件夹&#xff1a;Create-Foder&#xff0c;分别命名为Material…

AUTOSAR学习

文章目录 前言1. 什么是autosar&#xff1f;1.1 AP&#xff08;自适应平台autosar&#xff09;1.2 CP&#xff08;经典平台autosar)1.3 我的疑问 2. 为什么会有autosar3.autosar的架构3.1 CP的架构3.1.1 应用软件层3.1.2 运行时环境3.1.3 基础软件层 3.2 AP的架构 4. 参考资料 …