目录

一、学习背景

1、计算机和编程语言

2、计算机的思维方式

1)、计算机的思维:

2)、计算机执行程序有两种方案:

3)、解释语言vs编译语言:

3、为什么是C语言

4、C语言的历史和特点

5、编程软件用什么

6、第一个C语言程序

二、计算:变量和表达式

1、变量定义

2、变量赋值与初始化

3、变量的输入

4、常量VS变量

5、浮点数

6、表达式

7、运算符优先级

8、交换变量

9、复合赋值与递增递减

三、判断:分支结构

四、循环

五、循环控制

六、数据类型和处理

七、函数

八、数组

九、指针初步

十、字符串

十一、结构类型

十二、程序结构

十三、链表

十四、文件

十五、综合应用

一、学习背景

1、计算机和编程语言

计算机怎样解决问题?把大问题拆分成小问题分步进行;

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

我们不是在用编程语言和计算机交谈,而是要求它如何做事情,向它描述做事情的过程和方法。

#include <stdio.h>
int main()
{
	printf("Hello World!\n");
    //输出“Hello World!(换行)”引号内的部分
	return 0;
}

计算机如何解决问题

2、计算机的思维方式

例:解方程2x+6=20 , x∈(1,10)直接解方程对计算机来说太难理解了。

1)、计算机的思维:

        枚举法:

                代入x=1,不行;代入x=2,不行;代入……

        二分法:

                代入x=5,小了;代入x=7……

2)、计算机执行程序有两种方案:

解释:借助一个程序,那个程序可以试图理解你的程序,然后按照你的要求执行;

编译:借助一个程序把你的程序翻译成机器语言写的程序,然后计算机就可以直接执行了;

3)、解释语言vs编译语言:

语言本无解释与编译之分,只是常用的执行方式不同;

解释型语言有特殊的计算能力;

编译型语言有确定的运算性能。

3、为什么是C语言

  1. 在很多场合,C语言是唯一的选择
  2. 现代编程语言在语法上差异很小,基本都和C接近
  3. 语言的能力、适用领域主要是由  和 传统 决定的。

4、C语言的历史和特点

1969诞生:FORTRAN→BCPL→B语言→C语言

1967年,剑桥大学的 Martin Richards 对CPL语言进行了简化,于是产生了BCPL(Basic Combined Pogramming Language)语言

1970年,美国贝尔实验室的 Ken Thompson,以BCPL语言为基础,设计出很简单且很接近硬件的B语言(取BCPL的首字母),并且他用B语言写了第一个UNIX操作系统

在1972年,美国贝尔实验室的 D.M.Ritchie 在B语言的基础上最终设计出了C语言,因为B和BCPL都支持指针间接方式,所以C语言也支持了,C语言还受到了PL/I(和底层系统很接近,可以拿来做操作系统等)的影响,还和 PDP-II的机器语言有很大关系

1973/3,第三版的Unix上出现了C语言的编译器

1973/11,第四版的Unix完全用C语言重新写的。

经典C,又叫K&R the C


1989年,ANSI发布了一个标准:ANSI C

1990年,ISO接受了ANSI的标准:C89

C的标准在1995年和1999年两次更新:C95和C99。

5、编程软件用什么

C语言的用途:写操作系统、嵌入式系统、驱动程序(用来驱动U盘)、底层驱动、图形引擎、图像处理、声音效果(直接给我们提供数据的代码不是用C语言写的)一些底层的东西。

C语言是一种工业语言,由基础人员使用。所以:
        开发效率>>学习过程
        开发效率>>开发乐趣
而在日常的应用中,很少直接用C语言编写。学习C的过程主要是写练习代码,而不是写真实软件。

C语言需要被编译才能运行,所以需要:编辑器和编译器,或者IDE(Integrated Development Environment)集成开发环境

6、第一个C语言程序

在Dev C++中:文件->新建->源代码

#include <stdio.h>
int main()
{
	printf("Hello World!\n");
    //printf()会把" "内的内容(字符串)原封不动地输出,\n表示换行。
	return 0;
}

输入之前确保是英文输入法输入!!!

文件上显示星号,说明没有保存,需要使用键盘上的Ctrl + S 保存,记得选择.c格式;

编译运行;

运行后出现黑色弹窗的终端,显示了运行结果。

下面是学到函数之前一直要用的一段代码框架,可以先背下来,后面慢慢就知道了

#include <stdio.h>
int main()
{
	
	return 0;
}

出现编译错误,会在下面用红色的error显示出来,而具体错误原因在下方窗口中

printf("%d",23+43);
printf("23+43=%d",23+43);

%d是占位符,说明后面会有一个整数输出到这个位置上

二、计算:变量和表达式

1、变量定义

找零钱问题:100 - (用户输入)物品的价格 = 找你的钱

我们需要:

  1. 有办法输入数字;
  2. 有地方放输入的数字;
  3. 输入的数字参与计算。
#include <stdio.h>
int main()
{
    int price=0;
    //定义了整形变量price,类型是int,初始值=0
	
    printf("请输入金额(元):");
	
    int change=100-price;
	
    printf("找您%d元。\n",change);

    return 0;
}

变量是一个保存数据的地方。

变量定义的一般形式就是:

        <类型名称> <变量名称>
变量的名字叫“标识符”,基本原则只能由字母、数字、下划线构成,其中数字不能出现在第一个位置上。

C语言的关键字(又叫保留字)不可用作字符。

如何输入:
        输入在终端窗口中输入。

        输入以行为单位进行,敲下回车,行结束(回车前,程序不会读到任何东西)

2、变量赋值与初始化

	int price=0;
    //其中=是赋值运算符,把右边的值赋给左边的变量。

和数学中不同,b=a和a=b在程序中有着相反的含义。

当赋值发生在刚定义变量时,就叫程序的初始化,虽然C语言并没有强制要求所有的变量在被定义的地方做初始化,但所有变量在第一次被使用(出现在=等号右边)前都应该被赋值一次。

如果没有初始化呢:就是使用这个变量在内存中的那个值。

变量初始化:

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

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

	int a=0,b=1;

有运算符的式子就叫表达式(‘=’是赋值运算符)

C语言是有类型的语言,所有变量在使用前必须先定义或声明;

所有变量必须有确定的数据类型(表示在变量中可以存放什么样的数据),变量中也只能存放指定类型的数据,程序运行过程中也不能改变变量的类型。

//C99可以在任何位置给变量赋值
	int price=0;
	printf("请输入金额(元):");
	scanf("%d",&price);
	int change=100-price;
	printf("找您%d元。\n",change);

比较C和ANSI C

//传统的ANSI C只能在开头的地方定义变量
	int price=0;
	int change=0;
	
	printf("请输入金额(元):");
	scanf("%d",&price);
	change=100-price;
	printf("找您%d元。\n",change);

3、变量的输入

scanf()函数,读到的结果赋值给后面的变量(注意变量前的&)

scanf函数是用来读取终端输入的数字(如果读不到数字就默认为0),f指的是格式化,输出格式化的东西;

&是取地址的意思,%d表示取的格式是整数,%f取的格式为浮点数。

4、常量VS变量

固定不变的数,是常数。

直接写在程序里的,叫直接量。

	const int amount=100;

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

好处:

        1.便于理解

        2.修改的时候好找

编译时会显示:read-only variable is not assignable(一般const的变量全大写)

scanf的空格有讲究,输入时如果要两个数,在中间、最后敲空格或回车,计算机读到两个数字时停止

当scanf扫描数字时输入字母,可能会出来很多奇怪的数字(是ASCII码)

5、浮点数

C语言中两个整数做运算得到的结果也只能是个整数(去掉小数部分),而10和10.0在c中是完全不同的两个数字,10.0是浮点数(浮点数指小数点时可以浮动的,是计算机中表示分数和无理数的一种方式。人们用浮点数来称呼有小数点的数,其实还有定点数,但是在c语言中不用)

当浮点数和整数放在一起运算时,计算机会自动把整数转化为浮点数计算

#include <stdio.h>

int main()
{
	printf("%f\n",10.0/3*3);
	
	return 0;
}

有单精度float(%f)和双精度double(%lf)

(计算机里会有这种纯粹的整数,是因为运算快、占地小)

6、表达式

一个表达式是一系列运算符和算子的结合,用来计算一个值

运算符(operator)是指进行运算的动作,比如加/减法运算符±

算子(operand)是指参与运算的值,可能是常数/变量/一个方法的返回值

计算时间差:这里只记录分钟错位的情况(1:40和2:10)

方法:全部统一记为分钟(小时*60)

#include <stdio.h>

int main()
{
	int hour1,min1;
	int hour2,min2;
	
	scanf("%d %d",&hour1,&min1);
	scanf("%d %d",&hour2,&min2);
	
	int t1=hour1*60+min1;//把小时转化为分钟单位
	int t2=hour2*60+min2;
	
	int t=t2-t1;
	printf("时间差是%d小时%d分。",t/60,t%60);
	//t/60是小时部分;t%60取余,是分钟部分
	
	return 0;
}

7、运算符优先级

8、交换变量

9、复合赋值与递增递减

三、判断:分支结构

四、循环

五、循环控制

六、数据类型和处理

七、函数

八、数组

九、指针初步

十、字符串

十一、结构类型

十二、程序结构

十三、链表

十四、文件

十五、综合应用

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐