2026/9/5 C复习笔记(一)

生活中的计算机有哪些?ATM,手机(APP)。理解计算机可以做哪些事情。

计算机是如何解决问题的?

例如:"请给我一杯水"一步一步做。人:把这一步一步串起来。How to do?

这就是程序。

编程语言就是怎么一步一步实现一个东西。

重点:

程序是用特殊的编程语言写出来表达如何解决问题。

不是用编程语言来和计算机交流,而是描述要求它他如何做事情的过程和方法。

计算机懂什么样的语言?一连串的数字(十六进制或者二进制)

举个程序的例子--求最大公约数(辗转相除法):

最大公约数:两个或两个以上数的几个公约数中最大的一个公约数

cpp 复制代码
int u = 32;
int v = 26;
while(v!=0) {
    int temp = u%v;
    u = v;
    v = temp;
}
printf("%d", u);

算法(如何做的步骤):

1.如果v等于0,计算结束,u就是最大公约数;

2.如果v不等于0,那么就计算u除以v的余数,让u等于v,而v等于那个余数;

3.回到第一步。

计算机语言(计算机能懂的东西)--程序(程序员懂的东西)--算法(正常人能懂的东西)。

计算机习惯用什么方式计算?

例如计算一个方程如2x+6=20

计算机就从x=0自增开始试,一直试到7发现OK。把所有的方法列出来一个一个试,这个方法叫枚举。

还有一个方法,我们知道x的范围大概是0~10,先试试5,发现小于20,说明x比5大,取中间数7就OK了。这就是二分法。

计算机执行程序有两个方案:

1.解释:借助一个程序,那个程序能理解你的程序,然后按照你的要求执行(一步一步)

2.编译:借助一个程序,就像一个翻译,把你的程序翻译成计算机能懂的语言--机器语言--写的程序,然后这个机器语言写的程序就能直接执行了。

对于计算机的编程语言来说,计算机没有解释和编译语言之分。任何一种语言既可以解释执行也可以编译执行。一般说C语言是编译型的语言,写出来之后先编译再执行。但也有人做了C语言的解释器。有没有好坏呢?解释型语言有特殊的计算能力,编译型的语言有确定的运算性能。

为什么是C?排名第二!2026处于第二,第一是python。(TIOBE Index - TIOBE

C语言开始于上世纪70年代。

C的发展和版本:

1989年ANSI发布了一个标准--ANSI C;

1990年ISO接受了ANSI的标准--C89;

C的标准在95年和99年两次更新--C95和C99。(现在)

C语言用在哪里?操作系统、嵌入式系统、驱动程序、底层驱动(图形引擎、图像处理、声音效果)

C语言需要被编译才能运行,所以需要第一编辑器、第二编译器。或者是IDE(集成开发环境)。

推荐的编程软件:Dev C++。免费 安装简单 不用建工程。

如何在Dev C++中编辑、编译和运行程序?

第一个程序,编译、运行。

程序框架:

cpp 复制代码
#include <stdio.h>

int main()
{
	
	return 0;
 } 

输出:

cpp 复制代码
printf("Hello World!\n");

""里面的内容叫字符串,printf会把其中的内容原封不动的输出。

\n表示需要在输出的结构后面换一行。

编译后有错误提示,不见得就是定位的地方,要去前面或者后面都去看看。

不要用中文!!!

做计算:

cpp 复制代码
printf("%d", 12+34); 

%d说明后面有一个整数要输出到这个位置上。

cpp 复制代码
printf("12+34 = %d", 12+34); 

四则运算:

%表示两个数相除以后的余数。

变量

cpp 复制代码
	int price = 0; //变量名是price,类型是int,初始值是0
	printf("请输入金额(元):");
	scanf("%d", &price);
	
	int change = 100 - price;
	printf("找您%d元。\n", change);

如何输入?输入也在终端中;输入是以行为单位进行的,行的结束标志是你按下了回车键,。在你按下回车键以前,你的程序不会读到任何东西。

变量是一个保存数据的地方,当我们需要在程序中保存数据时,比如上面的例子中要记录用户输入的价格,就需要一个变量保存它。用一个变量保存了数据,它才能参加到后面的计算中,比如计算找零。

变量的定义:

一般形式:<类型名称> <变量名称>;

cpp 复制代码
int price;
int amount;
int price,amount;

变量的名字:变量需要一个名字,变量的名字是一种"标识符",意思是他是用来识别这个和那个的不同的名字;标识符是有标识符的构造规则,基本的原则是:标识符符只能由字母、数字和下划线组成,数字不可以出现在第一个位置上,C语言的关键字(有的地方叫他们保留字)不可以用作标识符。

C语言的保留字(不需要背诵):

cpp 复制代码
auto,break,case,char,const,continue,default,
do,double,else,enum,extern,float,for,goto,
if,int,long,register,return,short,signed,sizeof,
static,struct,switch,typedef,union,unsigned,void,
volatile,while,inline,restrict

或者你使用了上面的保留字,编译器也会报错的。

赋值和初始化

=赋值运算符,和数学不同,a=b在数学中表示关系,即a和b的值一样;而在程序设计中,a=b表示要求计算机做一个动作:将b的值赋给a。关系是静态的,而动作是动态的。在数学中a=b和b=a是等价的,而在程序设计中,两者的意思完全相反。

初始化:当赋值发生在定义变量的时候,就像程序中int price = 0;那样,就是变量的初始化,虽然C语言并没有强制要求所有的变量都在定义的地方初始化,但是所有的变量在第一次被使用(出现在赋值运算符的右边)之前应该被赋值一次。如果没有初始化呢?值就不确定。

变量初始化:

<类型名称> <变量名称> = <初始值>;

cpp 复制代码
int price = 0;
int amount = 0;

组合变量定义的时候,也可以在这个定义中单独给单个变量赋值,如:

cpp 复制代码
int price = 0,amount = 100;

变量类型:C是一种有类型的语言,所有的变量在使用之前必须定义或声明,所有的变量必须具有确定的数据类型。数据类型表示在变量中可以存放什么样的数据,变量中只能存放指定类型的数据,程序运行过程中也不能改变变量的类型。

第二个变量(这是C99的写法!):

cpp 复制代码
int change = 100 - price;
//定义了第二个变量change
//并且做了计算

而传统的ANSI C写法只能在代码开头的地方定义变量。

cpp 复制代码
//C99写法
int price = 0;
printf("请输入金额(元):");
scanf("%d", &price);
	
int change = 100 - price;
printf("找您%d元。\n", change);

//ANSIC写法
int price = 0;
int change = 0;
printf("请输入金额(元):");
scanf("%d", &price);
	
int change = 100 - price;
printf("找您%d元。\n", change);

读整数

cpp 复制代码
scanf("%d", &price);

要求scanf这个函数读入下一个整数,读到的结果赋值给变量price;要注意price前面的&。如果输入的数不是整数会怎样?输入hello此时输出100。

常量和变量

固定不变的数,是常量。直接写在程序里面的数据叫直接量(literal)。

更好的方式,是定义一个常量:

cpp 复制代码
const int AMOUNT = 100;//C99

用更有意义的名字让别人更容易理解这个数字代表的是什么含义。放在前面也很容易修改。

const是一个修饰符,加在int的前面,用来给这个变量加上一个const(不变)的属性。这个const的属性表示这个变量的值一旦初始化,就不能再修改了。

cpp 复制代码
int change = AMOUNT - price;

如果你试图对常量修改,把它放在赋值运算符的左边,就会被编译器发现,指出为一个错误。(C99)

浮点数:

身高5尺7?美国人固执地使用英制计量单位,他们习惯用几尺几寸(英尺英寸)来报自己的身高。如果你遇到一个美国人告诉你他是5英尺7寸,它的身高应该是一米几呢?(5+7➗️12)✖️0.0048=1.7018米

两个整数的运算的结果只能是整数。

10和10.0在C中是完全不同的数。

10.0是浮点数。

相关推荐
zhangrelay1 小时前
答疑-是否软件源问题都必须更换为国内呢-
linux·笔记·学习·ubuntu·ros2
zhangrelay1 小时前
《ROS 机器人程序设计》课程教学大纲-2026- kinetic-lyrical
linux·笔记·学习·ubuntu·机器人
路弥行至2 小时前
Linux (ARM64 / Jetson) 挂载 exFAT 移动硬盘排障与离线安装指南
linux·运维·服务器·经验分享·笔记·jetson·exfat
wuyk5552 小时前
从零吃透 MQTT 通信|第 5 章 MQTT 心跳保活机制深度优化,断线检测与智能自动重连
c语言·开发语言·stm32·学习
知产xiao_xin3 小时前
《伯尔尼公约》适用的特殊情形
经验分享·笔记·知识产权
luj_17683 小时前
虚实交融中的真实人物塑造
c语言·开发语言·网络·经验分享·算法
AC赳赳老秦4 小时前
农产品公开数据应用:OpenClaw 抓取农产品价格、产销公开数据,实现农产品行情动态监测
java·c语言·javascript·python·php·deepseek·openclaw
hope_wisdom5 小时前
C/C++数据结构之二叉树的遍历
c语言·数据结构·c++·二叉树·深度优先·广度优先
自小吃多5 小时前
PCB Editor软件走线、修线操作笔记
笔记·嵌入式硬件