C语言分支语句和循环语句(上)

本文详细介绍了C语言中的语句类型,重点阐述了控制语句(包括分支、循环和转向语句),以if、else、while、for和switch为例,并讨论了else悬空问题以及break和continue的用法。同时提供了相关编程示例和小知识点如getchar和putchar的运用。
摘要由CSDN通过智能技术生成

一.什么是语句

C语言中语句分为以下几种:

1.表达式语句

2.函数调用语句

3.控制语句

4.复合语句

5.空语句

主要介绍控制语句

控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持的三种结构:顺序结构,选择结构,循环结构)都是由语法定义符组成,C语言有九种控制语句

分为三类:

1.条件判断语句(分支语句):if,switch

2.循环执行语句:do while,while,for

3.转向语句:break,goto,continue,return

二.分支语句

看一张图就很容易理解

2.1 if语句

语法结构:

第一种:

if(表达式)
 语句;

第二种:

if(表达式)
  语句1;
else
  语句2;

第三种:

if(表达式)
  语句1;
else if(表达式)
  语句2;
else
  语句3;

代码演示:

if

#include<stdio.h>

int main()
{
    int a = 0;
    scanf("%d", &a);
    if(a>90)
    {
      printf("有红包\n");
    }    

   return 0;
}   

if else

#include<stdio.h>

int main ()
{

int a = 0; 
scanf("%d" , &a);
if(a > 60)
{
  printf("红包\n");  
}
else (a > 80)
{
 printf("手机\n");
}

return 0;
}

if else if 

#include<stdio.h>

int main()
{

 int a = 0;
scanf("%d" , &a);
 if(a < 18)
 {
  printf("少年\n");
 }

 else if(a >= 18 && a < 30)
{
printf("青年"\n);
}

else if(a >=30 && a < 50)
{
 printf("中年\n");
}

else if(a >= 50 && a < 70)
{
 printf("老年\n");
}

else
{
printf("老寿星\n");
}

return 0;
}

这里要注意的是,C语言中0表示假,非0表示真。0的意思是编译器在执行的时候发现是0就停止运行,非0就正常运行。

2.2 else悬空问题

错误写法:

int main()
{

	int a = 0;
	int b = 2;
	if (a == 1)
	
		if (b == 2)
			printf("你好\n");
	  else
		printf("再见\n");


	return 0;
}

这里大家会认为输出的是再见或者你好,实际上什么都不会打印。因为当a不等于1的时候程序不会往下执行去判断b,又因为else是悬空的会和最近的if匹配,所以程序直接结束了。

else是和最近的if匹配

正确写法:

#include<stdio.h>

int main ()
{
 int a = 0;
 int b = 2;
 if(a == 1)
 {
   if(b == 2)
    printf("你好\n");
 }
 else
  {
    printf("再见\n");
  }
return 0;

}

2.3 if书写形式

第一种写法:

#include<stdio.h>

int main()
{

 int a  = 1;
 scanf("%d" , &a);
 if(a == 4)
{
 printf("你好"\n);
}

 return 0;
}

第二种写法:

#include<stdio.h>

int main()
{
  int b = 0;
scanf("%d", &b);
if(5 == b)
{
printf("你好"\n);

}

return 0;
}

总结:第二中写法更好,因为有人不注意会把判断是否相等的符号==,写成赋值符号=,这种写法可以减少写错的几率。

2.4练习

1.判断奇偶数

首先因该思考的是什么是奇数什么是偶数,奇数就是不能被2整除的数,偶数就是能被2整除的数。

有了这个思路就可以写代码了

#include<stdio.h>

int main()
{

	int a = 0;
	scanf("%d", &a);
	if (a % 2 == 1)
	{
		printf("奇数\n");
	}
	else
	{
		printf("偶数\n");
	}

	return 0;
}

2.打印1-100之间的奇数

首先思考的是如何得到100个数,再去判断是不是奇数,要得到100个数可以写个for或者while循环

for

#include<stdio.h>

int main()
{
	int a = 1;
	for (a = 1; a < 100; a++)
	{
		if (a % 2 == 1)
		{
			printf("%d ", a);
		}
	}

	return 0;
}

while

#include<stdio.h>

int main()
{

	int i = 1;
	while (i <= 100)
	{
		if (i % 2 == 1)
			printf("%d\n", i);
			i++;
	}

	return 0;
}

2.5 switch语句

switch语句也是一种分支语句

语法形式:

switch(整型表达式)
 {
  语句项;
  case 整型表达式;
      语句;
 }

实际应用:

#include<staio.h>

int main()
{
	int a = 0;
	scanf("%d", &a);

	switch (a)
	{
	case 1:
		printf("吃饭\n");
		break;
	case 2:
		printf("睡觉\n");
		break;
	case 3:
		printf("打游戏\n");
		break;
	case 4:
		printf("锻炼\n");
		break;
	}

	return 0;
}
  

注意:在是switch语句中,没有办法直接实现分支,要搭配break使用才能实现分支

  

说出n和m的值

int main()
{

	int n = 1;
	int m = 2;
	switch (m)
	{
	case 1:
		m++;
	case 2:
		n++;
	case 3:
		switch (n)
		{
		case 1:
			n++;
		case 2:
			m++;
			n++;
			break;
		}

	case 4:
		m++;
		break;
	default:
		break;
	}

	printf("%d %d\n", n, m);

	return 0;
}

正确答案是n=3,m=4

三.循环语句

分为以下三种:

while

for

do while

3.1while循环语句

我们发现if语句只能执行一次,而现实生活中同一件事需要多次完成

C语言引入了:while循环语句,可以实现循环

语法:

while(表达式)
   循环语句;

练习:用while语句在屏幕上打印10个数字

#include<stdio.h>

int main()
{
	int i = 0;
	while (i < 10)
	{
		printf("%d\n", i);
		i++;
	}
	return 0;
}

3.2 while语句中的break和continue

break

#include<stdio.h>

int main()
{

    int i = 1;
    while (i <= 10)
    {
        if (i == 7)
            break;
        printf("%d ", i);
        i = i + 1;
    }


    return 0;
}

解释一下,当i等于7的时候程序就直接break结束了,不会在往下执行,最后的结果是1-6

其实在循环中遇到break,就会停止后面所有的循环,直接终止循环

所以while中的break是用于永久终止循环

continue

#include<stdio.h>

int main()
{

	int i = 1;
	while (i <= 10)
	{
		if (i == 7)
			continue;
		printf("%d ", i);
		i = i + 1;
	}


	return 0;
}

解释一下,当i等于7的时候程序会无限重复执行代码的上一部分,下部分代码不会执行,最后的结果是1-6

continue是用于终止本次循环的,也就是continue后边的代码不会再执行,直接跳转到while语句判断部分

小知识点:getchar和putchar(很少用)

 getchar是输入字符

puchar是输出字符

#include<stdio.h>

int main()
{
	int ch = 0;
	while ((ch == getchar()))
	putchar(ch);

	return 0;
}

可以用来清空缓冲区

#include<stdio.h>

int main()
{
	char ch = '\0';
	while ((ch == getchar()) != EOF)
	{
		if (ch < '0' || ch > '9')
			continue;
		putchar(ch);
	}

	return 0;
}

只打印数字字符,跳过其他字符。

循环语句还有下部分,点点关注和赞下集更精彩

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值