2、C语言书写格式是自由的,每行可以写多个语句,可以写多行。
3、一个C语言程序有且只有一个main函数,是程序运行的起点。 # 二、变量和数据类型 1、变量:int a; int是一个新单词,它是 Integer 的简写,意思是整数。a 是我们给这块区域起的名字,当然也可以叫其他名字。
这个语句的意思是:在内存中找一块区域,命名为 a,用它来存放整数。 =:=是一个新符号,它在数学中叫“等于号”,例如 1+2=3,但在C语言中,这个过程叫做赋值。赋值是指把数据放到内存的过程。
因为 a 的值可以改变,所以我们给它起了一个形象的名字,叫做变量。
int a;创造了一个变量 a,我们把这个过程叫做变量定义。
a=123;把 123 交给了变量 a,我们把这个过程叫做给变量赋值;又因为是第一次赋值,也称变量的初始化,或者赋初值。
2、数据类型:
int 有一个专业的称呼,叫做数据类型。
顾名思义,数据类型用来说明数据的类型,确定了数据的解释方式,让计算机和程序员不会产生歧义。在C语言中,有多种数据类型:
1,char:字符型;
2,short:短整型;
3,int:整型;
4,long:长整型;
5,float:单精度浮点型;
6,double:双精度浮点型;
7,void:无类型;
数据类型只在定义变量时指明,而且必须指明;使用变量时无需再指明,因为此时的数据类型已经确定了。
# 三、C语言输入输出在C语言中,有三个函数可以用来在显示器上输出数据,它们分别是:
- puts():只能输出字符串,并且输出结束后会自动换行。
- putchar():只能输出单个字符。
- printf():可以输出各种类型的数据。
printf() 是最灵活、最复杂、最常用的输出函数,完全可以替代 puts() 和 putchar()。
程序是人机交互的媒介,有输出必然也有输入,在C语言中,有多个函数可以从键盘获得用户输入:
- scanf():和 printf() 类似,scanf() 可以输入多种类型的数据。
- getchar()、getche()、getch():这三个函数都用于输入单个字符。
- gets():获取一行数据,并作为字符串处理。
scanf() 是最灵活、最复杂、最常用的输入函数,但它不能完全取代其他函数。
对于 scanf(),输入数据的格式要和控制字符串的格式保持一致。
# 四、C语言if else语句代码都是顺序执行的,也就是先执行第一条语句,然后是第二条、第三条……一直到最后一条语句,这称为顺序结构。
在C语言中,使用if和else关键字对条件进行判断。请先看下面的代码:
#includeint main() { int age; printf("请输入你的年龄:"); scanf("%d", &age); if(age>=18){ printf("恭喜,你已经成年,可以使用该软件!n"); }else{ printf("抱歉,你还未成年,不宜使用该软件!n"); } }
运行结果可能是
请输入你的年龄:23↙ 恭喜,你已经成年,可以使用该软件!
也可能是
请输入你的年龄:16 抱歉,你还未成年,不宜使用该软件!
if 和 else 是两个新的关键字,if 意为“如果”,else 意为“否则”,用来对条件进行判断,并根据判断结果执行不同的语句。
只使用if语句有的时候,我们需要在满足某种条件时进行一些操作,而不满足条件时就不进行任何操作,这个时候我们可以只使用 if 语句。也就是说,if else 不必同时出现。
单独使用 if 语句的形式为:
if(判断条件){
语句块
}
if else 语句也可以多个同时使用,构成多个分支,形式如下:
if(判断条件1){
语句块1
} else if(判断条件2){
语句块2
}else if(判断条件3){
语句块3
}else if(判断条件m){
语句块m
}else{
语句块n
}
意思是,从上到下依次检测判断条件,当某个判断条件成立时,则执行其对应的语句块,然后跳到整个 if else 语句之外继续执行其他代码。如果所有判断条件都不成立,则执行语句块n,然后继续执行后续代码。
也就是说,一旦遇到能够成立的判断条件,则不再执行其他的语句块,所以最终只能有一个语句块被执行。
if 的判断条件中使用了<=、>、!=等符号,它们专门用在判断条件中,让程序决定下一步的操作,称为关系运算符。
关系运算符在使用时,它的的两边都会有一个表达式,比如变量、数值、加减乘除运算等,关系运算符的作用就是判明这两个表达式的大小关系。注意,是判明大小关系,不是其他关系。
C语言提供了以下关系运算符:
| 关系运算符 | 含 义 | 数学中的表示 |
|---|---|---|
| < | 小于 | < |
| <= | 小于或等于 | ≤ |
| > | 大于 | > |
| >= | 大于或等于 | ≥ |
| == | 等于 | = |
| != | 不等于 | ≠ |
关系运算符的优先级低于算术运算符,高于赋值运算符。
逻辑运算符&&是一个新的运算符,称为逻辑运算符。
在高中数学中,我们就学过逻辑运算,例如p为真命题,q为假命题,那么“p且q”为假,“p或q”为真,“非q”为真。在C语言中,也有类似的逻辑运算:
| 运算符 | 说明 | 结合性 | 举例 |
|---|---|---|---|
| && | 与运算,双目,对应数学中的“且” | 左结合 | 1&&0、(9>3)&&(b>a) |
| || | 或运算,双目,对应数学中的“或” | 左结合 | 1||0、(9>3)||(b>a) |
| ! | 非运算,单目,对应数学中的“非” | 右结合 | !a、!(2<5) |
逻辑运算符和其它运算符优先级从低到高依次为:
赋值运算符(=) < &&和|| < 关系运算符 < 算术运算符 < 非(!)
&& 和 || 低于关系运算符,! 高于算术运算符。
# 六、C语言switch case语句C语言虽然没有限制 if else 能够处理的分支数量,但当分支过多时,用 if else 处理会不太方便,而且容易出现 if else 配对出错的情况。
对于这种情况,实际开发中一般使用 switch 语句代替。
switch 是另外一种选择结构的语句,用来代替简单的、拥有多个分枝的 if else 语句。基本格式如下:
switch(表达式){
case 整型数值1: 语句 1;
case 整型数值2: 语句 2;
......
case 整型数值n: 语句 n;
default: 语句 n+1;
}
它的执行过程是:
1) 首先计算“表达式”的值,假设为 m。
2) 从第一个 case 开始,比较“整型数值1”和 m,如果它们相等,就执行冒号后面的所有语句,也就是从“语句1”一直执行到“语句n+1”,而不管后面的 case 是否匹配成功。
3) 如果“整型数值1”和 m 不相等,就跳过冒号后面的“语句1”,继续比较第二个 case、第三个 case……一旦发现和某个整型数值相等了,就会执行后面所有的语句。假设 m 和“整型数值5”相等,那么就会从“语句5”一直执行到“语句n+1”。
4) 如果直到最后一个“整型数值n”都没有找到相等的值,那么就执行 default 后的“语句 n+1”。
需要重点强调的是,当和某个整型数值匹配成功后,会执行该分支以及后面所有分支的语句。
break 是C语言中的一个关键字,专门用于跳出 switch 语句。所谓“跳出”,是指一旦遇到 break,就不再执行 switch 中的任何语句,包括当前分支中的语句和其他分支中的语句;也就是说,整个 switch 执行结束了,接着会执行整个 switch 后面的代码。
case 后面必须是一个整数,或者是结果为整数的表达式,但不能包含任何变量
default 不是必须的。当没有 default 时,如果所有 case 都匹配失败,那么就什么都不执行



