作者前言
欢迎小可爱们前来借鉴我的gtiee秦老大大 (qin-laoda) - Gitee.com
——————————————————————————————
目录
分支语句
if
switch
循环语句
while
for
do while
goto语句
——————————————————————————————————————
作者感慨
时隔多久。没有更新C语言的博客了,最近一直在学习,能更新博客已经是有大运气了,
现在我们就紧接上一篇C语言的博客,小可爱想看哪些知识可以根据我的博客标题来找。一般都是会连续的写下去,如果没有那就是作者在学校里面被学校压榨了,课满满的,一有空就会更新博客,让各位小可爱学到满满的干货
插播小知识
1.C语言是一种结构化的程序设计语言,C语言支持三种结构(顺序结构、 选择结构、循环结构)
2.在C语言中, 0表示假,非0表示真
什么是语句?
在知道目录的时候,我们了解语句,啥是语句,在c语言中有几种语句,分别是:
1. 表达式语句
2. 函数调用语句
3. 控制语句
4. 复合语句
5. 空语句
表达式语句
函数调用语句
空语句
这些都是我们在前面学习过的语句,后面的两种种语句后面慢慢介绍。控制语句就是接下来我要介绍的语句
控制语句 用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成, 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;
}
结果:
如果我们再细分的话就有下面代码
#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
有一些小可爱写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;
}
结果:
编程好习惯
在每个 switch 语句中都放一条 default 子句是个好习惯,甚至可以在后边再加一个 break 。
循环语句
1.while循环
while 语法结构:
while ( 表达式 )
循环语句 ;
执行流程:
那我们简单的打印1~10
#include<stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
printf("%d ", i);
i++;
}
return 0;
}
break;跳出该循环
#include<stdio.h>
int main()
{
int a = 1;
while (a < 10)
{
a++;
if (5 == a)
{
//continue;
break;
}
printf("%d", a);
}
return 0;
}
总结:
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;
}
总结 :
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;
}
putchar()
#include<stdio.h>
int main()
{
int ch = 0;
ch = getchar();
printf("%d\n", ch);
putchar(ch);
return 0;
}
getchar()还可以吸收字符
#include<stdio.h>
int main()
{
int ch = 0;
while ((ch = getchar()) != EOF)
{
printf("%d\n", ch);
putchar(ch);
}
return 0;
}
案例:
#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;
}
运行效果就出来了.
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;
}
循环顺序:
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;
}
总结:这里简单的介绍了一些C语言的简单的语句,有不懂的可以私聊我