首页 > 其他分享 >c语言的判断与循环

c语言的判断与循环

时间:2022-11-06 12:31:08浏览次数:40  
标签:case 语句 判断 语言 else break 循环 printf 表达式

前言:C语言所编写的程序是一个结构化程序

我们的生活中时时刻刻都离不开三种结构:1.顺序结构;2.选择;3.循环。我们的世界就是由这三种结构组成,无时无刻我们都在作出选择,每一天的周而复始是循环,面对不同的事物需要我们进行自己主观的分析与选择,我们每天起床,洗漱,吃饭其实也是一种顺序,里面同样也包含了选择和循环。

而一个C语言程序也同样离不开这些结构,我们不仅要知道他是怎么运行(了解关于cpu如何执行程序)的,还要知道他运行可以为我们做些什么。


if语句

首先if语句通过表达式的值来控制是否执行他的语句块,表达式(单目运算符,双目运算符,三目运算符)就是用运算符把多个运算量(常量,变量,函数)连接起来且符合C语言规则的式子。

注意:在if,else语句后面不要加分号“;”

选择语句有不同的语法:

if(表达式)           //表达式“==”和“=”区别搞清!可以反着写(例如5==num,强制写“==”),避免出现bug

if(表达式){。。。}else{。。。}若是在“{}”中只有一条语句的话我们可以省略

if......else if...语句和if if...else...else语句都是嵌套语句

关于三目运算符

可以用它代替if....else语句

格式(表达式1)?(表达式2):(表达式3)

表达式1用来判断,若为1执行表达式2,否则执行表达式3

关于else悬空问题


else悬空 一般出现在进行嵌套少写一个else的情况下

举例代码:if..if..else

,当出现在把开头和结尾的if和else搞混了就会导致出现else悬空,但其实最后一个else与它最近的if匹配

int a=18,b=16;

if(a==19)//这里故意错,去看看能不能和最下面else匹配

if(b==16) printf("haha")

else  printf("hehe")    //最后的结果是啥也不输出,原因是else与它最近的if匹配

练习:1.判断一个数是否为奇数,偶数

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

}

2.输出1-100之间的奇数

#include<stdio.h>//第一种
int main()
{int i=1;
while(i<=100)
{
if(i%2!=0)
printf("%d ",i);
i++;
}
}

#include<stdio.h>//第二种
int main()
{int i=1;
while(i<=100)
{
printf("%d ",i);
i+=2;
}


}

switch语句

试想一下,如果用if...else语句来进行判断今天是否星期几是不是很麻烦?

#include<stdio.h>
int main()
{int day=0;
scanf("%d",&day);//调用scanf函数来进行输入并且把day放在已经分配好的内存中
if(1==day)
printf("星期一");
else if(2==day)
printf("星期二");
else if(3==day)
printf("星期三");
else if(4==day)
printf("星期四");
}

但是不用担心,我们C语言提供了一种可以用来更简单就能把问题解决的办法那就是switch语句。下面来举个例子:

#include<stdio.h>
int main()
{int day=0;
scanf("%d",&day);
switch(day)
{
case 1:
printf("1");break;//break用来结束,否则若是输入7的时候那么前面全都会执行
case 2:
printf("2");break;
case 3:
printf("3");break;
case 4:
printf("4");break;
case 5:
printf("5");break;
case 6:
printf("6");break;
case 7:
printf("7");break;
default:printf("输出错误")//如果上面都不能执行执行它,可有可无,用来处理非法数据
}
}

当然,以上若是有重复的,来回编写回浪费我们时间,下面也可以这么写:

#include<stdio.h>
int main()
{int day=0;
scanf("%d",&day);
switch(day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日");break;
case 6:
case 7:
printf("休息日");break;//如果不加break程序运行完结束,加break防止case8语句执行时会执行到7.6,出现bug
case 8:
break;
//他们没有固定的顺序
}
}

当我们在1-5范围内输入时就会输出工作日,6-7是休息日

switch(表达式)
{ case 整形常量表达式:【语句】break;
case 常量表达式:【语句】break;
【defult:语句】

}

首先 switch是一个多分支结构

1、switch后面的表达式必须是整形或者字符型,case后面常量表达式的必须是对应的整数或者字符

2、case的作用是一个分支的入口,defult也起到了分支的作用,表示除了case以外的标号,他的顺序不一定要在最后,可有可无

3、若要执行一个case内的语句,要在后面加上break跳出switch结构

执行过程

1、先计算表达式的值,然后根据表达式的值再选择case中常量表达式的值,若没有找到对应,则选择defult开始往下执行

break语句

用来控制语句结束,使switch选择结构跳出循环,或结束循环。若是没有结束就依次向下执行case

循环语句

while循环

一般格式:

while(表达式)

{循环体}

1、表达式称为执行条件,循环体为一条或者多条语句组成。当循环条件成立后执行循环体。

执行过程:

1、先计算表达式,非0执行循环体,为0退出

2.执行完循环体返回第一步。

c语言的判断与循环_i++

3、退出该循环

小例题:使用while循环进行输出1-10

#include<stdio.h>
int main()
{int i=1;
while(i<=10)
{
printf("%d ",i);
i++;
}return 0;
}

while语句后面用“{}“包含

关于在while循环中的“break”和“countinue”

break:

用于结束while的循环,当下面代码执行时遇到break结束所有循环,直接退出

只要遇到break,直接永久终止

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

continue:当我们循环内部有不想继续执行的语句时,就用continue跳出本次循环,直接终止,后面代码不要了。

要遇到break,直接终止本次循环

首先我们先来看一段代码:

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

当执行这段源码之后输出结果与上一个break代码案例相同,至于为什么,因为i=5时跳出本次循环,在这时他跳出循环就无法执行到下面的printf语句和i++所以答案为1,2,3,4。

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

所以,我们在进行编码的过程中要十分的注重先后语句的逻辑

扩展:

EOF:为end of file意思为“文件结束标志”,他的值为-1。

若是输出的值一直无限循环无法给赋变量,ctrl+z为把值放进字符里面

标签:case,语句,判断,语言,else,break,循环,printf,表达式
From: https://blog.51cto.com/u_15863066/5827259

相关文章

  • 用字符判断星期
    #include<stdio.h>intmain(){ charch; charch1; ch=getchar(); getchar(); //接收回车 switch(ch){ case'm': printf("monday\n"); break; c......
  • 判断回文数
    //前提该数是5位数#include<stdio.h>intmain(){ intnumber; intwan,qian,shi,ge; scanf("%d",&number); wan=number/10000; printf("wan=%d\n",w......
  • Spring三级缓存解决循环依赖
    前提知识1、解决循环依赖的核心依据:实例化和初始化步骤是分开执行的2、实现方式:三级缓存3、lambda表达式的延迟执行特性spring源码执行逻辑核心方法refresh(), populateBea......
  • go打印hello world、go语言的注释、go语言的代码风格、go中文api文档
    go打印helloworld打开自己存放go代码的项目文件夹main,在main下面新建一个test.go文件1.在文件中输入以下代码:packagemain//声明该文件所在的包,每个go文件必须有其归......
  • go语言快速查询目录
    go语言快速查询目录 安装go开发包、配置GOPATH、GO项目结构目录介绍、go语言IDE选择go打印helloworld、go语言的注释、go语言的代码风格、go中文api文档 ......
  • 周六1900C++班级2022-11-5 双重for循环
    4872:#include<bits/stdc++.h>#include<iostream>//C++#include<cstdio>//有这个才能使用printfusingnamespacestd;intmain(){//4872//定义输入n,x......
  • C语言运算符优先级
    C语言的运算符包括单目运算符、双目运算符、三目运算符,优先级如下:第1优先级:各种括号,如()、[]等、成员运算符.;第2优先级:所有单目运算符,如++、–、!、~等;第3优先级:乘法运算......
  • C语言初级阶段4——数组2————二维数组
    C语言初级阶段4——数组2————二维数组二维数组的定义:类型说明符数组名[数组大小][数组大小]第一个大小是行的大小,第二个大小是列的大小。二维数组的初始化:{}#in......
  • C语言初级阶段4——数组3——字符数组
    C语言初级阶段4——数组3——字符数组字符数组的定义:储存字符类型数据的集合1.注意:如果用字符串给字符数组初始化,那么不需要{},但是要有""。2.%s:用来输出字符串的格式......
  • C语言初级阶段5——函数1
    C语言初级阶段5——函数1函数的基本概念1.函数:理解为封装功能的容器。主函数是函数的入口2.函数定义的基本格式:返回值类型:常用的基本数据类型,执行完以后,函数会得到一......