C语言第六课----------循环语句-------逻辑代码必备

这篇具有很好参考价值的文章主要介绍了C语言第六课----------循环语句-------逻辑代码必备。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作者前言

 欢迎小可爱们前来借鉴我的gtiee秦老大大 (qin-laoda) - Gitee.com

——————————————————————————————

目录

分支语句
        if
        switch
循环语句
        while
         for
         do while
goto语句

——————————————————————————————————————

作者感慨

        时隔多久。没有更新C语言的博客了,最近一直在学习,能更新博客已经是有大运气了,

现在我们就紧接上一篇C语言的博客,小可爱想看哪些知识可以根据我的博客标题来找。一般都是会连续的写下去,如果没有那就是作者在学校里面被学校压榨了,课满满的,一有空就会更新博客,让各位小可爱学到满满的干货

插播小知识

1.C语言是一种结构化的程序设计语言,C语言支持三种结构(顺序结构、 选择结构、循环结构)

C语言第六课----------循环语句-------逻辑代码必备,c语言,开发语言

 2.在C语言中, 0表示假,非0表示真

什么是语句?

在知道目录的时候,我们了解语句,啥是语句,在c语言中有几种语句,分别是:

1. 表达式语句
2. 函数调用语句
3. 控制语句
4. 复合语句
5. 空语句

表达式语句

C语言第六课----------循环语句-------逻辑代码必备,c语言,开发语言

函数调用语句 

C语言第六课----------循环语句-------逻辑代码必备,c语言,开发语言

空语句

C语言第六课----------循环语句-------逻辑代码必备,c语言,开发语言

 这些都是我们在前面学习过的语句,后面的两种种语句后面慢慢介绍。控制语句就是接下来我要介绍的语句

控制语句 用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成, C 语 言有九种控制语句。
可分成以下三类:
1. 条件判断语句也叫分支语句: if 语句、 switch 语句;
2. 循环执行语句: do while 语句、 while 语句、 for 语句;
3. 转向语句: break 语句、 goto 语句、 continue 语句、 return 语句

分支语句(选择结构)

比如:如果你好好学习,校招时拿一个好 offer ,走上人生巅峰。
如果你不学习,毕业等于失业,回家卖红薯。

if语句

语法结构 1:
if ( 表达式 )
    语句 ;
语法结构2:
if ( 表达式 )
    语句 1 ;
else
    语句 2 ;
语法结构3:
// 多分支    
if ( 表达式 1 )
    语句 1 ;
else if ( 表达式 2 )
    语句 2 ;
else
    语句 3 ;
表达式:条件判断  0表示假,非0表示真
下面我们就简单的写一段代码判断是不是成年人
#include<stdio.h>
int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age < 18)
	{
		printf("未成年");
	}
	else
	{
		printf("成年人");
	}
	
	return 0;
}
结果:
C语言第六课----------循环语句-------逻辑代码必备,c语言,开发语言
如果我们再细分的话就有下面代码
#include<stdio.h>
int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age < 18)
	{
		printf("未成年");
	}
	else if (age >= 18 && age <= 30)
	{
		printf("青年");
	}
	else if (age > 30 && age <= 50)
	{
		printf("中年");
	}
	else if (age > 50 && age <= 70)
	{
		printf("中老年");
	}
	else if (age > 70 && age <= 99)
	{
		printf("老年");
	}
	else
	{
		printf("老寿星");
	}
	return 0;
}

注意一下 不要写成了  18 <=  age <= 30 , 在C语言判断中先判断   如下:3

C语言第六课----------循环语句-------逻辑代码必备,c语言,开发语言

 有一些小可爱写if语句的时候.为了方便,有时会不写{},这样写是不建议的,因为这样写有时会造成读取代码时会读错,比如:

#include <stdio.h>
int main ()
{
    int a = 0 ;
    int b = 2 ;
    if ( a == 1 )
        if ( b == 2 )
            printf ( "hehe\n" );
    else
        printf ( "haha\n" );
    return 0 ;
}
这样写会造成我们在读的过程会一不小心就会读错,会误以为else跟第一个if搭配,其实 else 是跟最近的if搭配,不建议这样写,因为我们写代码是为了方便别人和自己都能理解,不是自己理解就行

尽量能加{}就加上

if 书写形式的对比
//代码1
if (condition) {
    return x;
}
return y;
//代码2
if(condition)
{
    return x;
}
else
{
    return y;
}
//代码3
int num = 1;
if(num == 5)
{
    printf("hehe\n");
}
//代码4
int num = 1;
if(5 == num)
{
    printf("hehe\n");
}

上面的代码2和代码4 的写法是比较好的,我们写就尽量按照这种模式写

那写一个判断奇数的代码

#include<stdio.h>
int main()
{
	int a = 1;
	//scanf("%d", &a);
	while (a <= 100)
	{
		if (a % 2 == 1)
		{
			printf("%d是奇数\n", a);
		}
		a++;
	}
	


	return 0;
}

switch语句

写法:

switch ( 整型表达式 )
{
    语句项;
}
switch (整形表达式)
{
    case 整数:
            语句;
     case 整数:
            语句;
     case 整数:
            语句;
        ......
    default :
           语句;




}

这里的整数就是整形常量表达式,写成整数就是让大家好理解

case 整形常量表达式:
    语句;

或者按照这个理解

default 在没有case语句才运行的,或者是case语句不写break停止运行下去,也会运行下去

那我写一个判断星期的switch语句

#include<stdio.h>
int main()
{
	int weekday = 0;
	scanf("%d", &weekday);
	switch (weekday)
	{
		case 1:
			printf("星期一");
			break;
		case 2:
			printf("星期二");
			break;
		case 3:
			printf("星期三");
			break;
		case 4:
			printf("星期四");
			break;
		case 5:
			printf("星期五");
			break;
		case 6:
			printf("星期六");
			break;
		case 7:
			printf("星期七");
			break;
		default:
			printf("没有该星期");
			break;
	}
	return 0;
}

结果:C语言第六课----------循环语句-------逻辑代码必备,c语言,开发语言

编程好习惯
在每个 switch 语句中都放一条 default 子句是个好习惯,甚至可以在后边再加一个 break

循环语句

1.while循环

while 语法结构:
while ( 表达式 )
        循环语句 ;

执行流程: 

C语言第六课----------循环语句-------逻辑代码必备,c语言,开发语言
那我们简单的打印1~10
#include<stdio.h>
int main()
{
	int i = 1;
	while (i <= 10)
	{
		printf("%d ", i);
		i++;
	}

	return 0;
}

C语言第六课----------循环语句-------逻辑代码必备,c语言,开发语言

break;跳出该循环

#include<stdio.h>
int main()
{
	int a = 1;
	while (a < 10)
	{
		a++;
		if (5 == a)
		{
			//continue;
			break;
		}
		printf("%d", a);

	}
	return 0;
}

C语言第六课----------循环语句-------逻辑代码必备,c语言,开发语言

 总结:

break while 循环中的作用:
其实在循环中只要遇到 break ,就停止后期的所有的循环,直接终止循环。
所以: while 中的 break 是用于 永久 终止循环的。

continue:继续,跳过这次循环,开始下一次循环

#include<stdio.h>
int main()
{
	int a = 1;
	while (a < 10)
	{
		a++;
		if (5 == a)
		{
			continue;
		}
		printf("%d", a);

	}
	return 0;
}

 C语言第六课----------循环语句-------逻辑代码必备,c语言,开发语言

总结 :
continue while 循环中的作用就是:
continue 是用于终止本次循环的,也就是本次循环中 continue 后边的代码不会再执行,
而是直接跳转到 while语句的判断部分。进行下一次循环的入口判断
getchar()
输入一个字符,读取成功返回这个字符的ASCII值,读取失败或者遇到文件末尾会返回 EOF(就是-1)
#include<stdio.h>
int main()
{
	int ch = 0;
	ch = getchar();
	printf("%d\n", ch);
	return 0;
}
C语言第六课----------循环语句-------逻辑代码必备,c语言,开发语言
putchar()
#include<stdio.h>
int main()
{
	int ch = 0;
	ch = getchar();
	printf("%d\n", ch);
	putchar(ch);
	return 0;
}
C语言第六课----------循环语句-------逻辑代码必备,c语言,开发语言

getchar()还可以吸收字符

#include<stdio.h>
int main()
{
	int ch = 0;
	while ((ch = getchar()) != EOF)
	{
		printf("%d\n", ch);
		putchar(ch);
	}
	
	
	return 0;
}

C语言第六课----------循环语句-------逻辑代码必备,c语言,开发语言

案例:

#include<stdio.h>
int main()
{
	char arr[40];
	printf("输入密码\n");
	while (scanf("%s", arr) != EOF)
	{
		while (getchar() != '\n')
		{
			;
		}
		
		printf("是否确定(Y/N)\n");
		char ch = 'w';
		scanf("%c", &ch);
		if (ch == 'Y' || ch == 'y')
		{
			printf("确认\n");
		}
		else
		{
			printf("取消\n");
		}
	}
	return 0;
}

C语言第六课----------循环语句-------逻辑代码必备,c语言,开发语言

 运行效果就出来了.

for循环

语法:

for ( 表达式 1 ; 表达式 2 ; 表达式 3 )
循环语句 ;
表达式 1
表达式 1 初始化部分 ,用于初始化循环变量的。
表达式 2
表达式 2 条件判断部分 ,用于判断循环时候终止。
表达式 3
表达式 3 调整部分 ,用于循环条件的调整。
我们就用使用 for 循环 在屏幕上打印 1-10 的数字。
#include <stdio.h>
int main()
{
 int i = 0;
 //for(i=1/*初始化*/; i<=10/*判断部分*/; i++/*调整部分*/)
 for(i=1; i<=10; i++)
 {
 printf("%d ", i);
 }
 return 0;
}

循环顺序:

C语言第六课----------循环语句-------逻辑代码必备,c语言,开发语言

 C语言第六课----------循环语句-------逻辑代码必备,c语言,开发语言

 break 和continue一样可以在for使用

建议:
1. 不可在 for 循环体内修改循环变量,防止 for 循环失去控制。
2. 建议 for 语句的循环控制变量的取值采用 前闭后开区间 写法。
3.c99可以在初始化部分进行定义变量,但是不建议这样做
一些 for 循环的变种
#include <stdio.h>
int main()
{
 //代码1
 for(;;)
 {
 printf("hehe\n");
 }
    //for循环中的初始化部分,判断部分,调整部分是可以省略的,但是不建议初学时省略,容易导致//问题。
    
    //代码2
    int i = 0;
    int j = 0;
    //这里打印多少个hehe?
    for(i=0; i<10; i++)
   {
        for(j=0; j<10; j++)
       {
 printf("hehe\n");
       }
   }
    
    //代码3
    int i = 0;
    int j = 0;
    //如果省略掉初始化部分,这里打印多少个hehe?
    for(; i<10; i++)
   {
        for(; j<10; j++)
       {
 printf("hehe\n");
       }
   }
    
 //代码4-使用多余一个变量控制循环
 int x, y;
    for (x = 0, y = 0; x<2 && y<5; ++x, y++)
   {
        printf("hehe\n");
   }
 return 0;
}

do...while()循环

do..while()语句的语法:

do
循环语句 ;
while ( 表达式 )
简单的理解为先运行一次然后再判断
而前面的是先判断然后再循环
C语言第六课----------循环语句-------逻辑代码必备,c语言,开发语言
#include<stdio.h>
int main()
{
	int i = 1;
	do
	{
		printf("%d ", i);
		i++;
		if (i == 5)
		{
			//break;
			continue;
		}
	} while (i <= 10);



	return 0;
}

do ... while()的break和continue和在while是一样的效果

continue只会跳出循环,不会跳过判断部分

下面利用循环语句进行写一些题

计算 n 的阶乘。
#include<stdio.h>
int main()
{
	// 计算n的阶乘
	int a = 1;
	int b = 0;
	int sum = 1;
	scanf("%d", &b);
	while (a <= b)
	{
		sum *= a;
		a++;
	}
	printf("%d", sum);
	return 0;
}
计算 1!+2!+3!+……+10!
#include<stdio.h>
int main()
{
	// 计算 1!+2!+3!+……+10!
	int a = 1;
	int sum_1 = 0;
	int b = 1;
	// 第一种
	/*for (a = 1; a <= 10; a++)
	{
		
		int sum = 1;
		for (b = 1; b <= a; b++)
		{
			sum *= b;
		}
		sum_1 += sum;
	}*/
	// 第二种
	for (a = 1; a <= 10; a++)
	{
		b = a * b;
		sum_1 = b + sum_1;
	}
	printf("%d", sum_1);
	return 0;
}

. 在一个有序数组中查找具体的某个数字n

这里主要运用了二分查找,使用二分查找要是有序数组,C语言第六课----------循环语句-------逻辑代码必备,c语言,开发语言

 可以看出前后两个数相加然后除以2就会得到中间下标,然后我们再比较两个数之间的大小然后取范围,这个二分查找可以解决,不懂的小可爱可以到我的主页找到这篇博客,

代码如下:

#include<stdio.h>
int main()
{
	// 在一个有序数组中查找具体的某个数字n
	int a = 0; //给该数组传几个
	printf("你想输入几个数字给数组:");
	scanf("%d", &a);
	int arr[100];
	int i = 0;
	for (i = 0; i < a; i++)
	{
		printf("请输入:");
		scanf("%d", &arr[i]);
		printf("\n");
	}
	int left = 0;
	int rigth = a - 1;
	int conten = (left + rigth) / 2;
	int k = 0;
	printf("输入你要查找的数字:");
	scanf("%d", &k);
	while (left <= rigth)
	{
		if (arr[conten] == k)
		{
			printf("找到了,下标为:%d", conten);
			break;
		}
		else if (arr[conten] < k)
		{
			left = conten + 1;
		}
		else if (arr[conten] > k)
		{
			rigth = conten - 1;
		}
		conten = (left + rigth) / 2;
	}
	if (left > rigth)
	{
		printf("找不到");
	}

	return 0;
}
演示多个字符从两端移动,向中间汇聚。
#include<stdio.h>
#include<windows.h>
int main()
{
	char arr[] = "welcome to bit!!!!!!!";
	char arr1[] = "*********************";
	int rigth = (sizeof arr / sizeof(char)) - 2;
	int left = 0;
	while(left <= rigth)
	{
		arr1[left] = arr[left];
		arr1[rigth] = arr[rigth];
		Sleep(1000);
		system("cls");
		left++;
		rigth--;
		printf("%s\n", arr1);
	}
	return 0;
}
编写代码实现,模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正确则
提示登录成,如果三次均输入错误,则退出程序。
#include<stdio.h>
#include<string.h>
int main()
{
	int i = 0;
	char password[20] = { 0 };
	for (i = 0; i < 3; i++)
	{
		printf("输入密码:");
		scanf("%s", &password);
		if (strcmp(password, "123456789") == 0)
		{
			printf("登录成功");
			break;
		}
		printf("密码错误");

	}
	if (i == 3)
	{
		printf("退出登录");
	}


	return 0;
}
猜数字游戏实现
// 随机生成一个1-100的数
// 让我们来猜
#include<stdio.h>
#include <stdlib.h>
void menu()
{
	printf("*****************************\n");
	printf("******   0.exit   ***********\n");
	printf("******   1.play   ***********\n");
	printf("*****************************\n");
}
int main()
{
	srand((unsigned int)time(NULL));
	int a = 0;
	do
	{
		menu();
		printf("请选择是否玩游戏:>");
		scanf("%d", &a);
		switch (a)
		{
		case 1 :
			printf("请开始你的表演\n");
			// 生成随机数字
			// 猜数字
			
			int ra = rand();
			printf("%d\n", ra);
			while (1)
			{
				int guees = 0;
				printf("输入你猜的数字");
				scanf("%d", &guees);
				if (guees > ra % 100)
				{
					printf("猜大了");
				}
				else if (guees < ra % 100 )
				{
					printf("猜小了");
				}
				else 
				{
					printf("猜对了,但是没有奖励\n");
					break;
				}

			}
			break;
		case 0 :
			printf("游戏结束");
		default :
			printf("重新选择");




		}
	} while (a);
	




	return 0;
}
// rand函数生产伪随机数
//rand生成的随机数的范围是0--32767
//rand函数在生产随机数之前,要使用srand函数设置随机数的生成器
//可以理解为rand函数的算法是根据srand的种子来计算随机数的

//time--函数返回一个时间戳
//time()函数需要传入一个值,没有啥想传的就传入一个NULL(空)
//srand需要传入的类型是unsigned int,所以可以强制转换
//注意一下,srand调用一次就行了, 否则生成的数太相邻了

// rand函数生产伪随机数
//rand生成的随机数的范围是0--32767
//rand函数在生产随机数之前,要使用srand函数设置随机数的生成器
//可以理解为rand函数的算法是根据srand的种子来计算随机数的

//time--函数返回一个时间戳
//time()函数需要传入一个值,没有啥想传的就传入一个NULL(空)
//srand需要传入的类型是unsigned int,所以可以强制转换
//注意一下,srand调用一次就行了, 否则生成的数太相邻了

goto语句

最常见的用法就是终止程序在某些深度嵌套的结构的处理过 程。注意一下,不能乱使用,
写法:
goto  aaa;
语句1
aaa:
        语句2;
会直接跳过一些语句,但是只能在本函数内部使用,
简单的关机
#include<stdio.h>
#include<Windows.h>
#include<string.h>
int main()
{
a:
	system("shutdown -s -t 600000");
	printf("你的电脑将要关机,请输入''我是猪取消''关机");
	char arr[30];
	scanf("%s", &arr);
	if (strcmp(arr, "我是猪"))
	{
		system("shutdown -a");
		printf("取消关机");

	}
	else
	{
		goto a;
	}
	return 0;
}

总结:

这里简单的介绍了一些C语言的简单的语句,有不懂的可以私聊我文章来源地址https://www.toymoban.com/news/detail-573048.html

到了这里,关于C语言第六课----------循环语句-------逻辑代码必备的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【JAVASE】精密逻辑控制过程(分支和循环语句)

    ✅作者简介:大家好,我是橘橙黄又青,一个想要与大家共同进步的男人😉😉 🍎个人主页: 橘橙黄又青-CSDN博客 目标: 1. Java 中程序的逻辑控制语句 2. Java 中的输入输出方式 3. 完成猜数字游戏 废话不多讲,我们直接开始。 顺序结构 比较简单 按照代码书写的顺序一行一行

    2024年04月09日
    浏览(34)
  • Java(三)逻辑控制(if....else,循环语句)与方法

    1.1表达格式(三种) 小括号里面进行判断条件是否符合,正确执行语句 在小括号里面进行条件判断,正确执行语句1,错误执行语句2 表达式1正确,执行语句1,诺表达式1不正确, 则去判断表达式2是否正确,正确则执行语句2, 表达式2不正确,则去语句3。 外入: 为了能将值

    2024年02月09日
    浏览(35)
  • Pygame第六课:事件

    目录 一、获取读取事件 1.1 获取事件 1.2 读取事件 二、判断反应 三、各个事件精讲 3.1 键盘事件 3.1.1 按下键盘 3.1.2 释放键盘 3.1.3 各个常用按键事件对照表 3.2 鼠标事件 3.2.1 获取事件 3.2.2 精确哪一个按键(左键或右键) 3.2.3 获取鼠标位置 3.3 pygame.QUIT事件 3.3.1 什么是

    2024年02月04日
    浏览(30)
  • 第六课:Prompt

    Prompt介绍 Fine-tuning Recap and its Drawbacks: Fine-tuning 指的是在一个已经预训练好的模型基础上,使用特定任务的数据进行额外的训练,以使模型适应该任务。 Fine-tuning 的优点是能够在已有知识的基础上,更好地适应特定任务,提高性能。 缺点可能包括过度拟合(Overfitting):模型

    2024年01月24日
    浏览(22)
  • 数据结构第六课 -----排序

    🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂 ​🎂 作者介绍: 🎂🎂 🎂 🎉🎉🎉🎉🎉🎉🎉 🎂 🎂作者id:老秦包你会, 🎂 简单介绍:🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂 喜欢学习C语言和python等编程语言,是一位爱分享的博主,有兴趣的小可爱可以来互讨 🎂🎂

    2024年02月04日
    浏览(28)
  • 【小黑嵌入式系统第六课】嵌入式系统软件设计基础——C语言简述、程序涉及规范、多任务程序设计、状态机建模(FSM)、模块化设计、事件触发、时间触发

    上一课: 【小黑嵌入式系统第五课】嵌入式系统开发流程——开发工具、交叉开发环境、开发过程(生成调试测试)、发展趋势 下一课: 【小黑嵌入式系统第七课】PSoC® 5LP 开发套件(CY8CKIT-050B )——PSoC® 5LP主芯片、I/O系统、GPIO控制LED流水灯的实现 1、为什么要用C语言? 理

    2024年02月06日
    浏览(44)
  • web前端框架设计第六课-样式绑定

    1.class属性绑定 给P标签绑定一个类样式,类名为active。当active取值为true时,表示绑定样式成功,取值为false时,取消绑定 以对象形式给P标签绑定多个类样式 以数组形式给P标签绑定多个类样式 2.内联样式绑定(见书P66) –行动是治愈恐惧的良药,犹豫拖延将不断滋养恐惧

    2024年04月28日
    浏览(19)
  • 【STM32】基础知识 第六课 内核 & 架构

    4 个主动单元 + 4 个被动单元 主动单元 被动单元 Cortex M3 内核 DCode 总线 (D-Bus) 内部 FLASH Cortex M3 内核系统总线 (S-Bus) 内部 SRAM 通用 DMA1 FSMC 通用 DMA2 AHB 到 APB 的桥, 它连接的所有 APB 外设 AHB (Advance High-performance Bus): 高级高性能总线 APB (Advance Peripheral Bus): 高级外围总线 ICode 总线

    2023年04月24日
    浏览(55)
  • C语言第六弹---分支语句(下)

    ✨ 个人主页: 熬夜学编程的小林 💗 系列专栏: 【C语言详解】 【数据结构详解】 逻辑运算符提供逻辑判断功能,用于构建更复杂的表达式,主要有下面三个运算符。 • ! :逻辑取反运算符(改变单个表达式的真假)。 • :与运算符,就是并且的意思(两侧的表达式都为

    2024年01月25日
    浏览(26)
  • 最经典的解析LSA数据库(第六课)

    初步认识OSPF的大致内容(第三课)_IHOPEDREAM的博客-CSDN博客 建立领居表 同步数据库   今天来 说一说数据库概念 计算路由表 数据库是一个组织化的数据集合,用于存储、管理和检索数据。它是一个可访问的集合,旨在存储与特定主题或目的相关的数据,并提供有效的检索和使

    2024年02月09日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包