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=4
          n++;n=3
          break;
     }
  case 4:
      m++;m=5
      break;
  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. 编写代码实现,模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正确则
//提示登录成,如果三次均输入错误,则退出程序。4

int 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;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

视频太长了,想要剪切掉一节怎么操作?

如果你想为你的视频制作一个具有一定客观性的短视频&#xff0c;并在一些平台上发布&#xff0c;那么剪辑视频片段是不可避免的。通过剪辑视频片段的操作&#xff0c;提出视频中多余的视频内容&#xff0c;将自己需要的内容单独提取出来。但问题是如何操作它。对于新手来说&…

docker部署dm数据库

官方文档参考 官网地址&#xff1a;https://eco.dameng.com/document/dm/zh-cn/start/dm-install-docker.html 下载镜像地址 docker部署 1、加载镜像 docker load -i dm8_20240613_x86_rh6_64_rq_ent_8.1.3.140_pack5.tar使用docker images&#xff0c;查看镜像和镜像标签…

云原生化有什么特点?

云原生化&#xff0c;作为一种先进的构建和管理应用程序的方式&#xff0c;不仅代表着技术的革新&#xff0c;更是云计算时代下的必然产物。其核心目标在于充分发掘并发挥云计算平台的各项优势&#xff0c;使应用程序在性能、弹性、可靠性和安全性等方面达到前所未有的高度。 它…

Android 配置蓝牙遥控器键值

文章目录 篇头一、规格书二、红外按键配置三、蓝牙按键配置3.1 查看设备号3.1.1 方式一&#xff1a;dumpsys input3.1.2 方式二&#xff1a; cat /proc/bus/input/devices 3.2 配置kl文件3.2.1 方案商原始配置3.2.2 Generic.kl 文件3.2.3 重映射蓝牙按键3.2.4 完成 Vendor\_568…

github如何删除仓库?

之前练习Git上传的时候&#xff0c;在Github创建的测试项目已经不需要了&#xff0c;所以要如何删除&#xff1f; 首先进入Github主页&#xff0c;可以直接点击左侧1处的仓库&#xff0c;也可以点击2处的头像&#xff0c;再选择进入那个仓库。 我选择删除最后一个FlashAndShan…

通义千问2(Qwen2)大语言模型在PAI-QuickStart的微调、评测与部署实践

Qwen2&#xff08;通义千问2&#xff09;是阿里云最近推出的开源大型语言模型系列&#xff0c;相比2月推出的Qwen1.5&#xff0c;Qwen2实现了整体性能的代际飞跃&#xff0c;大幅提升了代码、数学、推理、指令遵循、多语言理解等能力。其中&#xff0c;Qwen2系列包含5个尺寸的预…

SpringBoot配置第三方专业缓存框架j2cache

j2cache的使用 这不是一个缓存 这是一个缓存框架 J2Cache, 也称为Java Cache或JSR-107&#xff0c;是一个用于缓存管理的标准API&#xff0c;它允许开发者在Java应用程序中实现分布式、基于内存的缓存。J2Cache主要通过javax.cache.Cache接口提供功能&#xff0c;用于存储和…

【漏洞复现】CRMEB开源电商系统 /api/products SQL注入漏洞(CVE-2024-36837)

0x01 产品简介 CRMEB开源电商系统是一款由西安众邦网络科技有限公司打造的全栈式电商解决方案&#xff0c;旨在为开发者和商家提供高性能、智能化的电商平台服务。该系统集成了CRM(客户关系管理)、ERP(企业资源规划)和EB(电子商务)的功能&#xff0c;通过深度结合这些功能&…

图神经网络入门(1)-networkx

简介 NetworkX是一个Python语言的图论建模工具&#xff0c;用于创建、操作复杂网络结构&#xff08;如图、有向图等&#xff09;。它提供了许多用于分析网络、生成随机网络、以及可视化网络的函数和工具。用户可以利用NetworkX来研究复杂网络的拓扑结构、节点间的关系以及路径查…

力扣每日一题 6/18 字符串/模拟

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;IT竞赛 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 2288.价格减免 【中等】 题目&#xff1a; 句子 是由若干个单词组成的字符…

自动驾驶规划-RTT* 算法 【免费获取Matlab代码】

目录 1.算法原理3.结果展示4.参考文献5.代码获取 1.算法原理 RRT(Rapidly-Exploring Random Trees) 快速随机扩展树&#xff0c;是一种单一查询路径规划算法。RRT 将根节点作为搜索的起点&#xff0c;然后通过随机撒点采样增加叶子节点的方式&#xff0c;生成一个随机扩展树&a…

基于IDEA的Maven简单工程创建及结构分析

目录 一、用 mvn 命令创建项目 二、用 IDEA 的方式来创建 Maven 项目。 &#xff08;1&#xff09;首先在 IDEA 下的 Maven 配置要已经确保完成。 &#xff08;2&#xff09;第二步去 new 一个 project &#xff08;创建一个新工程&#xff09; &#xff08;3&#xff09;…

MapReduce基础编程项目实践

一、项目实现效果概述 在accounts.txt文件中存储如下&#xff0c;第一列为金额大小&#xff0c;第二列表示收入、支出&#xff08;0表示收入&#xff0c;1表示支出&#xff09;&#xff0c;第三列表示金额出入的月份。我们要通过MapReduce计算每个月过去后的结余&#xff0c;并…

【日常记录】【vue】vite-plugin-inspect 插件的使用

文章目录 1、vite-plugin-inspect2、安装3、使用4、链接 1、vite-plugin-inspect vite-plugin-inspect 可以让开发者在浏览器端就可以看到vue文件编译后的代码、vue文件的相互依赖关系 2、安装 npm i -D vite-plugin-inspect// vite.config.ts import Inspect from vite-plugi…

单一管理平台 - Enterprise Global Console

大约三年前&#xff0c;当我们向客户和社区推出控制台时&#xff0c;MinIO 的世界发生了变化。这是可访问性的巨大飞跃。可靠的 CLI 和 MC 命令很快让位于我们新的基于浏览器的 GUI 的速度和直观可用性。对于开发人员和企业 IT 管理员来说&#xff0c;这是一个游戏规则的改变者…

关于一元方程求根中牛顿迭代法的分析

文末含有程序源代码以及可执行exe文件&#xff0c;文中部分内容参考网上博客以及GPT协助&#xff0c;希望能对你有所帮助~ 一、理论知识简述 牛顿迭代法&#xff08;Newton’s Method&#xff09;&#xff0c;也称为牛顿-拉弗森方法&#xff08;Newton-Raphson Method&#xf…

Python 条件控制语句

条件控制语句是编程中用于基于特定条件执行不同代码块的一种结构。Python提供了几种条件控制语句&#xff0c;包括if、elif和else。这些语句允许程序根据不同的条件执行不同的代码路径 if 语句 if语句是最基本的条件控制语句&#xff0c;用于检查一个条件是否为真。如果条件为真…

C++ 53 之 继承中同名成员处理

#include <iostream> #include <string> using namespace std;class Base06{ public:int m_a;Base06(){this->m_a 10;}void fun(){cout << "父类的fun函数" << endl;}void fun(int a){cout << "父类的fun(int a)函数" &…

简易计算器需求报告

1. &#xff08;简易计算器&#xff09; 需求说明书 文件编号&#xff1a;2022[1] [木柚2] 06[3] [木柚4] 01[5] [木柚6] 完成日期&#xff1a;2024年 06月18日 编制&#xff1a; 易正阳 日期&#xff1a;2024年6月18日 审核&#xff1a;张正 日期&#xff1a;2024年6月18…

LLM 理论知识

LLM 理论知识 一.大型语言模型LLM1.1 大型语言模型 LLM 的概念1.2 常见的 LLM 模型1.2.1 闭源 LLM (未公开源代码)1.2.1.1 GPT 系列1.2.1.1.1 ChatGPT1.2.1.1.2 GPT-4 1.2.1.2 Claude 系列1.2.1.1.3 PaLM/Gemini 系列1.2.1.1.4 文心一言1.2.1.1.5 星火大模型 1.2.2. 开源 LLM1.…