引言:
从源代码到.exe文件的过程中要经历五个时期,[预处理期]程序员所写的源代码(高级语言:接近人类 远离机器的语言)在没有发生语法错误的情况下(编译器在符合版本的条件下),[编译期]编译成功会将源代码转换为汇编语言。[汇编期]再由汇编器转换为机械语言(.obj文件)。其中.obj文件称为目标文件,目标文件是指计算机把程序员所写的程序转变成计算机可执行的文件。[连接期]最后由连接器将.exe所需要的相应的库函数和.obj文件打包形成我们所要的.exe可执行文件[执行期]。
编译错误:就是语法错误,不符合计算机语言的语法所引起的错误
链接错误:无法生成可执行文件,常见的样例为链接找不到lib库,写了函数声明缺缺少函数定义。
c语言编程思维:模块化,结构化(先写格式,后补内容)。
顺序结构:
#include<stdio.h>
/* 购物流程 */
int main()
{
printf("1、进店\n");
printf("2、挑选物品\n");
printf("3、结账\n");
return 0;
}
从前向后按顺序执行,为顺序结构。
选择结构:
二选一:
#include <stdio.h>
/* 2021年黑龙江
普通本科二批:
文史类为354分,理工类为280分;
*/
int main()
{
int grade = 290;
if(grade>=280)
{
printf("能上理工类本科二批\n");
}
else
{
printf("不能上\n");
}
return 0;
}
通过限制条件则执行前者,否则执行后者。
格式:
if(限制条件)
{
执行内容1;
}
else
{
执行内容2;
}
多选一:
#include <stdio.h>
/*
打印不同等级对应的评价
*/
int main()
{
char gradeLeave= 'A';
switch(gradeLeave)
{
case 'A':
case 'a':
printf("卓越");
break;
case 'B':
case 'b':
printf("优秀");
break;
case 'C':
case 'c':
printf("良好");
break;
case 'D':
case 'd':
printf("及格");
break;
default:
printf("惨不忍睹");
break;
}
return 0;
}
符合对应条件则执行对应的语句。
格式:
switch(条件)
{
case 条件1: //注意:这里是分号不是冒号
执行语句1;
break;
case 条件2:
执行语句2;
break;
default:
执行语句n;
break;
}
循环结构:
知起止:
#include <stdio.h>
int main()
{
// 打印前100个数的和
int num=0;
for (int i = 1; i <= 100; i++)
{
num += i;
}
printf("%d\n", num);
return 0;
}
符合循环条件,就重复执行循环体内的代码。
格式:
for(变量初始状态;限制条件;变化量)
{
所要循环执行的代码;
}
每当型:
#include <stdio.h>
/* 勤俭是一种美德 */
int main()
{
int lifeMoney = 1000;
int minMoney = 50;
while(1)
{
lifeMoney = lifeMoney - minMoney;
printf("还剩%d元钱\n", lifeMoney);
}
return 0;
}
每当符合while循环中的条件时,就执行一次while语句中的代码。
格式:
while(条件)
{
所要循环的代码;
}
直到型:
#include <stdio.h>
/* 模拟上班族的一个月 */
int main()
{
int workDay=25;
do
{
workDay--;
printf("距离发工资还有%d天\n",workDay);
}while(workDay>=1);
return 0;
}
直到不满足while括号中的条件时,才会终止循环。(保底执行一次)
格式:
do
{
所要循环的代码;
}while(限制条件); //注意:这里分号必须加
特殊循环:死循环
可以无限执行的循环:
for(;;)
{
所需循环的语句;
}
不设置for循环的变量初始状态,限制条件,变化量使得for循环执行没有条件无法终止,所以可以实现无限循环(死循环)。
while(1)
{
所需循环的语句;
}
在c语言当中0为假 非0为真 所以while循环条件一直为真,达到无限循环(死循环)的目的。