首页 > 其他分享 >c语言分支循环语句

c语言分支循环语句

时间:2024-06-08 20:33:04浏览次数:13  
标签:语句 case int while 循环 printf 表达式 分支

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

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,这个值是整数)

caseh后的值,必须为整形常亮表达式

(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处

标签:语句,case,int,while,循环,printf,表达式,分支
From: https://blog.csdn.net/2401_84024092/article/details/139375719

相关文章

  • try…except语句
    自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm=1001.2014.3001.5501在程序开发时,有些错误并不是每次运行都会出现。例如,实例01,只要输入的数据符合程序的要求,程序就可以正常运行,否则将抛出异常并停止运行。假设在输入苹......
  • 链表-循环链表
    循环链表可以像链表一样只有单向引用,也可以像双向链表一样有双向引用。循环链表和链表之间唯一的区别在于最后一个元素指向下一个元素的指针(tail.next)不是引用undefined,而是指向第一个元素(head).单链表:this.tail.next=this.head;双向链表:this.tail.next=this.head;......
  • 浙江大学蒋明凯研究员《Nature》正刊最新成果!揭示生态系统磷循环响应大气二氧化碳浓度
    随着大气二氧化碳浓度的升高,陆地生态系统固存额外碳汇的能力取决于土壤养分的可利用性。前期的研究证据表明,在土壤低磷环境下,大气二氧化碳浓度的升高可以提升成熟森林的光合速率,但是没有产生额外生物量固碳。热带和亚热带森林的生产力普遍受到土壤磷元素可用性的限制,但是生态系......
  • 循环
    一、for循环: 1.遍历字符串中的每个字符:示例:str="abcdferfd"foriinstr:#此处i为临时变量名,可以任意起名x,y.....print(i)#单独输出每一个字母*注:可在括号内i后加上,end='',意为连续输入不换行(python中的print()等同于java中的printly(),......
  • <PLC><工控>使用汇川PLC控制SV630N伺服驱动的循环运动程序(附PLC程序)
    前言本系列是关于PLC相关的博文,包括PLC编程、PLC与上位机通讯、PLC与下位驱动、仪器仪表等通讯、PLC指令解析等相关内容。PLC品牌包括但不限于西门子、三菱等国外品牌,汇川、信捷等国内品牌。除了PLC为主要内容外,PLC相关元器件如触摸屏(HMI)、交换机等工控产品,如果有值得记......
  • 在错误的分支开发了代码
    文章目录在错误的分支开发了新功能处理方法1.新功能还没有在本地commit提交2.新功能已经在本地提交了,但是还没有`push`到远程仓库2.1新的功能需要添加在一个新的分支2.2新功能需要添加在另一个分支上3.新功能已经在本地提交了,且`push`到了远程仓库在错误的分支......
  • 【NOI】C++程序结构入门之循环结构二-for循环
    文章目录前言一、for循环1.导入2.语法3.使用场景4.条件控制5.小结二、例题讲解问题:1264-4位反序数问题:1085-寻找雷劈数问题:1057-能被5整除且至少有一位数字是5的所有整数的个数问题:1392-回文偶数?问题:1090-同因查找问题:1446.人口增长问题三、总结四、感谢......
  • 0基础认识C语言(分支&循环)
    大家今天有没有开心的敲代码呢?hhhhhh让我们今天继续走进C语言~前提回顾:上节课我们学习了一些单目操作符和双目操作符,还聊了一会儿scanf和printf,今天我们对前一次的内容做一次补充1.如果你想输出一个保留五位小数并且让他右对齐十格,你应该怎么办呢?这个时候我们也是有办......
  • 【WPF】Dispatcher 与消息循环
    这一期的话题有点深奥,不过按照老周一向的作风,尽量讲一些人鬼都能懂的知识。咱们先来整个小活开开胃,这个小活其实老周在N年前写过水文的,常阅读老周水文的伙伴可能还记得。通常,咱们按照正常思路构建的应用程序,第一个启动的线程为主线程,而且还是UI线程(当然,WPF默认会创建辅助线......
  • msSQL 语句查询时 charindex()方法的妙用
    CHARINDEX(expressionToFind,expressionToSearch[,start_location])参数说明:expressionToFind:必需,要查找的字符串。expressionToSearch:必需,要进行查找的字符串表达式。start_location:可选,指定搜索的起始位置,默认为1。如果指定了起始位置,则从该位置开始搜索。list变......