c语言分支循环语句--真·超级详细!!!!

与这相关的逻辑运算符和求素数的四种方法都在主页哦 

目录

if语句(三种形式)

1.无else语句部分

1)语法形式

2)介绍

2.有else语句部分

1)语法形式 

3.多分支

1)语法形式

2)介绍

                 

switch语句

1.简单switch语句的程序

2.switch语句的介绍

例题

例题1:

例题2:

while语句

1.if语句与while语句的区别

2.例题

例题1求和

例题2 逆序输出

for语句

1.语法形式

2.介绍

do···while循环

1.语法形式

​2.例题

break与continue

break举例

continue语句

求素数练习题

goto语句


if语句(三种形式)

1.无else语句部分

1)语法形式

if(表达式)
语句1
2)介绍

如果表达式为真(成立),则语句执行;如果表达式为假(不成立),则语句不执行。

注意:在c语言中,0表示真,非零表示假

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

2.有else语句部分

1)语法形式 
if(表达式)
   语句1
else
   语句2

2)代码介绍 

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

注意:默认情况下,if后面只能跟一条语句,所以要跟多条语句,则需大括号{}

3.多分支

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

2)介绍

下面我们用判断一个年是不是闰年来举例子(只要满足一个条件,就为闰年

(1)能被4整除且不能被100整除的年份为闰年。

(2)能被400整除的年份为闰年。

#include<stdio.h>
int main()
{
	int year = 0;
	scanf("%d", &year);
	if (year % 4 == 0 && year % 100 != 0)
	{
		printf("闰年\n", year);
	}
	else if (year % 400 == 0)
	{
		printf("闰年\n", year);
	}
	else
	{
		printf("不是闰年\n", year);
	}
	return 0;
}


                 

如果大家还是不太理解,可以看一下这个程序框图,我会把代码放在下面

#include<stdio.h>
int main()
{
     int x,y;
	scanf("%d",&x);
	if(x<0)
		y=-1;
	else
{
		if(x==0)
			y=0;
		else
			y=1;
}
		printf("y=%d\n",y);
return 0;
}

除此之外,我们还要注意配套的if else的配套使用

#include<stdio.h>
int main()
{
     int x,y;
	scanf("%d",&x);
	if(x<0)
		y=-1;
	else
		if(x==0)
			y=0;
		else
			y=1;
		printf("y=%d\n",y);
return 0;
}

如上代码未加大括号,我们应该注意书写格式要和匹配的对齐

我们还应该记住:else总是跟最接近的if匹配

switch语句

1.简单switch语句的程序

#include"stdio.h"
int main()
{
	int n=0;
	scanf("%d",&n);
	switch(n%3)
	{
	case 0:
			printf("余数是0\n");
			break;
	case 1:
			printf("余数是1\n");
			break;
	case 2:
			printf("余数是2\n");
			break;
	}
	return 0;
}

如果case语句中没有break语句,将连续输出

例如

所以说,没有break就会把下面的都输出,直到遇见break,或最后一个case语句,但是要注意到的是,最后一个case子句(如果你的程序中是default就是default)中可不必用花括号括起来

2.switch语句的介绍

(1)switch语句括号内的应该为整形表达式(包括字符型)(因为字符型也归类到整形,因为字符的本质是ASCII,这个值是整数)

case后的值,必须为整形常量表达式

(2) switch下面的花括号内师一个复合语句,这个复合语句包括若干语句,他是switch语句的语句体,语句体内包含多个以关键字case开头的语句行和最多一个以default开头的行。case后面跟一个常量(或常量表达式),如:case 'A',它们和default都是起标号(label,或称标签、标记)的作用,用来标志一个位置。执行switch语句时,先计算switch后面的"表达式"的值,然后将它与各case标号比较,如果与某一个 case标号中的常量相同,流程就转到此case标号后面的语句。如果没有与 switch 表达式相匹配的 case常量,流程转去执行 default 标号后面的语句。
警说明:
(3)可以没有default标号,此时如果没有与switch表达式相匹配的 case 常量,则不执行任何语句,流程转到switch语句的下一个语句
(4)各个 case 标号出现次序不影响执行结果。例如,可以先出现default标号,再出现"case 'D':…",然后是"case 'B':….

所以default子句不一定要放在最后,不过我们通常都是放在最后处理的

(5)每一个case常量必须互不相同;否则就会出现互相矛盾的现象(对 switch 表达式的同一个值,有两种或多种执行方案)。

(6)default语句是处理case语句不能解决的情况

例题

例题1:

如果输入a为6,程序运行的结果是()

如果输入a为9,程序运行的结果是()

#include"stdio.h"
int main()
{
int a;
scanf("%d",&a);
switch (a)
{
case 1:printf("Monday\n");
case 2:printf("Tuesday\n");
case 3:printf("Wednesday\n");
case 4:printf("Thursday\n");
case 5:printf("Friday\n");
case 6:printf("Saturday\n");
case 7:printf("Sunday\n");
default:printf("error\n");
}
return 0;
}

答案在这里哟

 

例题2:

输入1-5,输出为工作日

输入6-7,输出为休息日

#include"stdio.h"
int main()
{
int a;
scanf("%d",&a);
switch (a)
{
case 1:
case 2:
case 3:
case 4:
case 5:printf("工作日\n");break;
case 6:
case 7:printf("休息日\n");break;
default:printf("error\n");
}
return 0;
}

while语句

在讲while之前,先介绍一下while与if的区别吧

1.if语句与while语句的区别

上图的while循环的流程图,满足条件就执行语句,语句执行完再次执行表达式,不成立才会结束

while循环的特点是:只要循环条件表达式为真(即给定的条件成立),就执行循环体语句,

所以以上while循环的结果才会无止境,一直循环

2.例题

例题1求和

求1+2+3+···+100

我们来分析一下这道题

(1)这是一个累加运算,先后将100个数相加,需要重复进行100次运算,所以我们需要用到循环体 

(2)再来看它有没有规律,发现每一次运算,都为后一个数是前一个数加1,因此不需要用scanf函数输入数据,只需要加完上一个数i之后,使i加1就可以得到下一个数。

#include<stdio.h>
int main()
{
	int i = 1, sum = 0;
		while(i<=100)
		{
			sum = sum + i;
			i++;
		}
	printf("%d", sum);
	return 0;
}
例题2 逆序输出

将1234逆序输出

1234%10=4   %是求余数的
1234/10=123  定义的整除,所以除完只取整数部分


123%10=3
123/10=12


12%10=2
12/10=1

 任何数除以10余数都是他的个位数

#include<stdio.h>
int main()
{
	int n = 0;
	scanf_s("%d", &n);
	while (n)
	{
		printf("%d", n % 10);
		n = n / 10;
	}
		return 0;
}

for语句

1.语法形式

for(表达式1;表达式2;表达式3)
    语句

语句就是循环体,多条语句需要加上大括号  

2.介绍

表达式1:初始化表达式,只执行一次(可看下面的程序框图理解)可以为0个,1个,多个变量

表达式2:判断表达式,决定是否继续执行

表达式3:调整,例如使变量增值,他是在循环体进行完才执行的 

与下面形式的while循环等价

表达式1;
while 表达式2
{
语句;
表达式3;
}

 注意:

1)表达式1可以省略,但应该在for语句前设立初值

2)表达式2可以省略,但是程序会无止境的走下去

for(i=1;;i++)
{
sum=sum+i;
}

相当于while

i=1
while(1)
{
sum=sum+i;
i++;
}

3)表达式3 也可以省略,但应该在语句中写出

4)三个表达式都可以省略,但是无使用价值了就,因为无初值,无判断,也不增值

do···while循环

1.语法形式

do
   语句;
while(表达式);

 不管三七二十一,上来就执行语句

所以语句至少执行一次

例如打印十个整数


2.例题

算出有几个数字

#include<stdio.h>
int main()
{
	int n = 0;
	int count = 0;
	scanf_s("%d", &n);
	
	do
	{
		count++;
		n = n / 10;
	} while (n);
	printf("%d\n", count);
}

这个代码很适用与do···while,因为即使n=0,也是1位数 

break与continue

在循环执行的过程中,如果某些状况发生的时候,需要提前终止循环,这是非常常见的现象。C语言中提供了break和continue两个关键字,就是应用到循环中的。
1)break 的作用是用于永久的终止循环,只要 break被执,直接就会跳出循环,继续往后执行。
2)continue的作用是跳过本次循环中 continue 后边的代码,在for循环和while循环中有所差异的。

break举例

break语句提前终止循环

continue语句

无结果,光标会一直闪烁,因为continue下面的语句都执行不到,i不能加1,所以一直是5,都是5还打印不出来,死循环了。

那如果想打印1234678910呢,那就不能将i++放在后面了,所以应当改为

 注意i的初值改为0

求素数练习题

//方法一:试除法
#include<stdio.h>
int main()
{
	int i = 0;
	int count = 0;
	for(i=101; i<=200; i++)
	{
		int j = 0;
		for(j=2; j<i; j++)
		{
			if(i%j == 0)
			{
				break;
			}
		}
		if(j==i)
		{
			count++;
			printf("%d ", i);
		}
	}
	printf("\ncount = %d\n", count);
	return 0;
}

还有其他求素数的方法在我主页哟!

goto语句

goto next;

next:

goto会跳转到next处

  • 42
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值