一、C语句概述
- 一个C语言程序中由若干个函数组成,每个函数的函数体是由声明部分和执行部分组成。
int main(void)//函数的头部 { int i = 0;//声明部分,不是语句 if(){}//语句 printf();//语句 }
- 一个程序是由若干个源文件程序组成,一个源文件程序是由头文件、预处理、全局变量和若干个函数组成,一个函数由若干个语句和若干个声明部分组成。
图片:
- C语句可以大致分为五类:分支与循环语句、库函数调用语句、表达式语句、复合语句、空语句。
1.1 分支与循环语句
- 分支与循环语句也称为控制语句,用于完成一定的控制功能。
分支与循环语句大致分为九种:if-else语句、switch语句、break语句、continue语句、goto语句、while语句、do-while语句、for语句、return语句。
1.2 函数调用语句
- 函数调用语句由函数名、实际参数和分号组成。
一般形式为:函数名();
printf(); strlen(); scanf(); time(); rand();
1.3 表达式语句
- 表达式语句一般由表达式组成。
一般形式为:表达式;
x = i + j;
1.4 复合语句
- 复合语句是由大括号将多个语句包括起来。
一般形式为:
{
语句1;
语句2;
…
…
}
{ x = y + z; printf("%d\n",x); }
1.5 空语句
- 只有分号“;”的语句为空语句
一般形式为:;
- 空语句为什么不执行的语句。
二、程序的基本结构
- 程序一般分为三种基本结构:顺序结构、选择结构、循环结构。
2.1 顺序结构
- 顺序结构是按照先后顺序逐步完成程序任务。
2.2 选择结构
- 选择结构是进行判断和分支。
2.3 循环结构
- 循环结构,同时也是重复结构,在一定条件下反复执行某一部分的程序。
三、结构中的常见操作符
3.1 关系运算符
- 关系运算符是主要用于比较,关系运算符所在的关系表达式为关系表达式。
关系运算符:
1.< 小于运算符
2.> 大于运算符
3.<= 小于等于运算符
4.>= 大于等于运算符
5.== 相等运算符
6.!= 不相等运算符
- 关系表达式中,一般返回0或1表示真假。在C语言中0表示假,非0表示假。
3.2 条件运算符(三目运算符)
- 条件运算符,也称三目运算符或者三元运算符。
- 条件运算符在执行时,如果exp1为真,执行exp2,如果exp1为假,执行exp3。
一般形式为:exp1?exp2:exp3
- 条件运算符可以作为if- else语句的一种便捷方式。
3.3 逻辑运算符
- 逻辑运算符提供了更加复杂的逻辑判断功能。
逻辑非运算符:!
逻辑与运算符:&&
逻辑或运算符:||
- 逻辑非运算符用于改变单个表达式的真假。
- 逻辑与表达式用于并且(并集),逻辑与表达式的左右俩侧都为真,则为真,有一个或着一个以上假则为假。
- 逻辑或表达式用于或者(交集),逻辑或表达式的左右俩侧都为假,则为假,有一个或者一个以上真则为真。
逻辑运算符与与其他运算符的先后顺序为:逻辑非运算符 > 算数运算符 > 关系运算符 > 逻辑与运算符 > 逻辑或运算符 > 赋值运算符
四、if-else语句
4.1 单分支if语句
格式:
if(运算符)
{
语句;
}
- 单分支if语句在if运算符判断结束后,如果为真,进入if语句;如果为假,跳过语句。
int i = 0; scanf("%d",&i); if(i>10)//5真15假 { i = 50; }
4.2 双分支if-else语句
格式:
if(运算符)
{
语句;
}
esle
{
语句;
}
- 双分支if-else语句在if运算符判断结束后,如果为真,进入if语句;如果为假,进入else语句
//判断俩个数的最小值 int a = 3; int b = 18; int min = 0; if (a > b) min = b; else min = a
4.3 多分支if-else-if语句
格式:
if(运算符1)
{
语句;
}
else if(运算符2)
{
语句;
}
else
{
语句;
}
//写代码将三个整数数按从大到小输出。 #include<stdio.h> int main(void) { int a = 0; int b = 0; int c = 0; scanf("%d %d %d", &a, &b, &c); if (a > b) { if (b > c) printf("%d %d %d", a, b, c); else if(c>a) printf("%d %d %d", c,a, b); else printf("%d %d %d", a,c, b); } else //b>a { if (a > c) printf("%d %d %d", b, a, c); else if (c>b) printf("%d %d %d", c, b, a); else printf("%d %d %d",b,c,a); } return 0; }
- 多分支if-else-if语句在if运算符1判断结束后,如果为真,进入if语句;如果为假,执行if运算符2,在if运算符2判断结束后,如果为真,进入else-if语句,如果为假,进入else语句。
五、switch语句
- switch语句也是分支语句的一种,不同于if-else的判断,switch执行的是选择。
一般形式为:
switch(表达式)
{
case 常量表达式1:
语句1;
case 常量表达式1:
语句2;
…
…
default:
语句n;
}
- 表达式一般为整形常量表达式,case后面的常量表达式应该与switch对应。
- 在执行case选择时,如果case都没有满足条件,编译器会执行default语句。default和case的顺序可以更换。
- 在执行switch语句时,一般会搭配break使用,后文会提到。
#include<stdio.h> int main(void) { int imput = 0; ptintf("********* 1.进入 *********\n"); ptintf("********* 0.退出 *********\n"); scanf("%d",&imput): switch(imput) { case 1: printf("进入\n"); break; case 0 printf("退出\n"); break; default: printf("输入错误\n"); break; } return 0; }
六、循环辅助break和continue
- break语句和continue语句可以根据循环体中的测试结果来忽略一部分循环内容,甚至结束循环。
6.1 break语句
- break语句仅在switch语句和循环语句中使用。执行break语句会之间跳出循环,执行循环下一个语句。
一般形式为:
break;
6.2 continue语句
- continue在执行时会逃过本次循环下面的语句,执行下一次循环。
一般形式为:
continue;
七、goto语句
- goto语句是一种传送语句,一般不建议使用,而且是谨慎使用。
一般形式为:
goto part;
part:
if() {,,, if() {... if() { ... goto palce; } } } place:
八、while循环语句
- while循环语句是一种先判断再执行的语句,属于“当型”循环结构。
一般形式为:
while(表达式)
{
语句;
}
#include<stdio.h> //打印1-10的数字 int main(void) { int i = 1; while(i<=10) { printf("%d\n",i): i++; } return 0; }
九、do-while循环语句
- do-while循环语句是一种先循环后执行的语句,属于是“直到型”循环结构。
一般形式为:
do
{
语句;
}while(表达式);
#include<stdio.h> //打印1-10的数字 int main(void) { int i = 1; do { printf("%d\n",i); i++; }while(i<10); return 0; }
十、for循环语句
- for循环在C语言中是经常被使用的一个语句。
一般形式为:
for(表达式1;表达式2;表达式3)
{
语句;
}
- 表达式1是初始化部分,用于初始化循环变量;表达式2是条件判断语句,用于判断循环的结束;表达式3是调整语句,用于循环的调整。
-
//1到 100 的所有整数中出现多少个数字9 #include<stdio.h> int main(void) { int i = 0; int cet = 0; for (i = 1; i <= 100; i++) { if (i/10 == 9) cet++; if (i % 10 == 9) cet++; } printf("%d", cet); return 0; }