生活中的计算机有哪些?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是浮点数。