文章主要记录C语言的学习笔记。
三、C语言的基本程序结构
C语言的控制语句主要分为三类:
1、条件判断语句:if语句、switch语句。
2、循环执行语句:do...while语句、while语句、for语句。
3、转向语句:break语句、goto语句、continue语句、return语句。
3.1 条件判断语句
条件判断语句有:if语句、if-else语句、if-else if-else语句和switch多分支语句。
单分支选择语句——if语句:
if(boolean_expression)
{
Program control block
}
if的条件表达式:在执行过程中如果表达式为真则执行语句,如果为假那么不执行。
双分支选择语句——if-else语句:
if (boolean_expression)
{
Program control block1
}
else
{
Program control block2
}
if-else的条件表达式:在执行过程中如果表达式为真则执行if内的语句块,如果为假那么执行else内的语句块。
实例:输入比较num1和num2值来判断最大值。
#include<string.h>
#include<stdio.h>
int main(void)
{
int num1 = 0;
int num2 = 0;
printf("输入num1和num2的值\n");
printf("num1 = ");
scanf("%d", &num1);
printf("num2 = ");
scanf("%d", &num2);
if (num1 > num2)
{
printf("num1 > num2");
}
else
{
printf("num1 < num2");
}
return 0;
}
多分支语句——if-else if-else语句:
if (boolean_expression)
{
Program control block1
}
else if(boolean_expression)
{
Program control block2
}else
{
Program control block3
}
if-else if-else的条件表达式:在执行过程中依次判断表达式中是否为真,若为真则执行该分支语句,若为假则继续进行判断下一个分支语句。最终只会执行其中的一个分支语句。
实例:输入一个0-100的数值来判断其在哪个分数的区间:
#include<string.h>
#include<stdio.h>
int main(void)
{
while (1)
{
int Score = 0;
printf("输入要计算等级的成绩:\n");
scanf("%d", &Score);
if ((Score >= 90) && (Score <= 100))
{
printf("成绩优秀\n");
}
else if ((Score >= 80) && (Score <= 90))
{
printf("成绩良好\n");
}
else if ((Score >= 70) && (Score <= 80))
{
printf("成绩中等\n");
}
else if ((Score >= 60) && (Score <= 70))
{
printf("成绩及格\n");
}
else
{
printf("成绩不及格\n");
}
}
return 0;
}
还有一种多分支语句——switch语句:
switch(expression)
{
case Constant expressions1 :
Program control block1;
case Constant expressions2 :
Program control block2;
.......
default:
break;
}
实例:上面的实例另外一种写法,输入一个0-100的数值来判断其在哪个分数的区间:
#include<string.h>
#include<stdio.h>
int main(void)
{
while (1)
{
int Score = 0;
printf("输入要计算等级的成绩:\n");
scanf("%d", &Score);
switch (Score / 10)
{
case 10:
case 9:
{
printf("优秀\n");
break;
}
case 8:
{
printf("良好\n");
break;
}
case 7:
{
printf("中等\n");
break;
}
case 6:
{
printf("及格\n");
break;
}
default:
printf("不及格\n");
break;
}
}
return 0;
}
3.2循环执行语句:
循环执行语句有while循环语句、do..while语句和for循环语句:
while循环语句:
while循环语句会在执行循环体之前判断while()里的条件表达式,若表达式为真则执行循环体内的语句,否则则退出while循环。
while(boolean_expression)
{
Program control block;
}
实例:若Counter小于10,Counter++然后一直循环执行打印变量Counter的值。
#include<string.h>
#include<stdio.h>
int main(void)
{
int Counter = 0;
while (Counter < 9)
{
Counter++;
printf("%d\n", Counter);
}
return 0;
}
do...while()循环语句
do...while循环语句会在执行循环前先执行一遍循环体再去判断while()的条件表达式,因此至少保证循环体会执行一遍。
do
{
Program control block
}
while(boolean_expression);
for循环语句:
for ( init; condition; increment ) //初始化变量;条件表达式;自增表达式
{
Program control block;
}
实例:若Counter小于10,Counter++然后一直循环执行打印变量Counter的值。
#include<string.h>
#include<stdio.h>
int main(void)
{
for(int Counter = 0;Counter < 10;Counter++)
{
printf("%d\n", Counter);
}
return 0;
}
for循环语句还可以嵌套使用:
实例:打印九九乘法表
#include<string.h>
#include<stdio.h>
int main(void)
{
for(int Counter = 9;Counter >= 1;Counter--)
{
for (int Counter1 = 1; Counter1 <= Counter; Counter1++)
{
int result = Counter1 * Counter;
printf("%d*%d = %d ",Counter1,Counter,result);
}
printf("\n");
}
return 0;
}
3.3转向语句
转向语句有break语句、goto语句、continue语句、return语句。
break语句:
C 语言中 break 语句有以下两种用法:
- 当 break 语句出现在一个循环内时,循环会立即终止,且程序流将继续执行紧接着循环的下一条语句。
- 它可用于终止 switch 语句中的一个 case。
如果您使用的是嵌套循环(即一个循环内嵌套另一个循环),break 语句会停止执行最内层的循环,然后开始执行该块之后的下一行代码。
continue语句:
C 语言中的 continue 语句有点像 break 语句。但它不是强制终止,continue 会跳过当前循环中的代码,强迫开始下一次循环。
对于 for 循环,continue 语句执行后自增语句仍然会执行。对于 while 和 do...while 循环,continue 语句重新执行条件判断语句。
White Board:C语言运算符优先级表
类别 | 运算符 | 结合性 |
---|---|---|
后缀 | () [] -> . ++ - - | 从左到右 |
一元 | + - ! ~ ++ - - (type)* & sizeof | 从右到左 |
乘除 | * / % | 从左到右 |
加减 | + - | 从左到右 |
移位 | << >> | 从左到右 |
关系 | < <= > >= | 从左到右 |
相等 | == != | 从左到右 |
位与 AND | & | 从左到右 |
位异或 XOR | ^ | 从左到右 |
位或 OR | | | 从左到右 |
逻辑与 AND | && | 从左到右 |
逻辑或 OR | || | 从左到右 |
条件 | ?: | 从右到左 |
赋值 | = += -= *= /= %=>>= <<= &= ^= |= | 从右到左 |
逗号 | , | 从左到右 |
运算符 | 描述 | 实例 |
---|---|---|
sizeof() | 返回变量的大小。 | sizeof(a) 将返回 4,其中 a 是整数。 |
& | 返回变量的地址。 | &a; 将给出变量的实际地址。 |
* | 指向一个变量。 | *a; 将指向一个变量。 |
? : | 条件表达式 | 如果条件为真 ? 则值为 X : 否则值为 Y |
tips:不用中间变量交换两个变量的值
#include<string.h>
#include<stdio.h>
int main(void)
{
int A = 18;
int B = 19;
printf("A = %d",A);
printf("B = %d\n",B);
A = A ^ B;
B = B ^ A;
A = A ^ B;
printf("A = %d", A);
printf("B = %d", B);
return 0;
}