C语言——基础查漏补缺(二):《C程序设计试题汇编》应试概念总结

前言

“C语言本来没有输入输出语句,只有输入输出函数”……说真的,不是为了考试,谁会总结这玩意……

得了,干脆将这种知识全部总结至此,如果哪天需要用,直接翻博客,总好过重新学一遍。

本文所用教材是谭浩强的《C程序设计试题汇编》,用它应付大多数C语言考试应该没什么问题,当然,本文只总结烦人的概念,不总结有趣的编程。

第一章 C语言概述

1、C语言本身没有输入输出语句,只有输入输出函数;
2、C程序的基本组成单位是函数,一个C语言程序是由函数组成;
3、C语言程序必须通过编译和连接后,才能被计算机执行;
4、在C源程序中,一个变量代表内存中的一个存储单元;
5、C源程序文件的后缀是.c,经过编译后为.obj,经过连接后,生成文件的后缀是.exe
6、结构化程序由顺序、选择、循环三种基本结构组成;
7、C源程序中至少应含有一个主函数;

第二章 数据类型、运算符与表达式(概念最多的部分)

1、C语言关键字:
char short int unsigned long float double struct union void enum signed const volatile typedef auto register static extern break case continue default do else for goto if return switch while sizeof……

⚠️注意
(1)define是宏定义预处理指令,不是关键字,ifdef,endif也都不是关键字,前面必须加#的都不是关键字;
(2)printf,scanf和getc之类也不是关键字,在库/头文件中被定义的函数名都不是关键字(不能使用其作为自定义变量是因为其会和头文件内容发生冲突);
(3)type不是关键字,typedef才是;include是宏包含预处理指令,不是关键字;没有go这个关键字;pow是C标准库函数名,不是关键字。

2、常量
(1)注意实型常量的表示方法除了十进制小数形式(123.456)外还有指数形式:12.34e3代表的是 12.34 × 1 0 3 12.34\times10^3 ,-346.87E-25代表 346.87 × 1 0 25 -346.87\times10^{-25}
⚠️e和E在指数形式中都可以用,但记住:e/E前e/E后必有数,e/E后一定是整数

(2)字符常量用单引号:'a',字符串常量用双引号:"abc"转义字符是特殊形式的字符常量

(3)符号常量是用#define定义的,#define PI 3.1415,那么PI就是符号常量,预编译后,PI就变成了字面常量3.1415,即符号常量就不存在了

(4)const float pi=3.1415定义的是常变量,其初始化后就不能改变值。常变量是有名字的不变量,常量是没有名字的不变量,前者有名字是为了便于在程序中被引用

(5)0x9代表十六进制的9,0x不能单独用;注意编程时数据不能写成这样:986,012,这种逗号是不被允许的;

(6)⚠️以0开头的数字表示八进制,这也是为什么-068不合法,这不是-68,而是八进制数,八进制没有8,所以错了;

(7)关于小数,-.18 是合法的, 小数点前和后的0可以省略,但不能只有小数点自身;

(8)03e2是300,03不会被处理为八进制,因为e表示的科学计数法是以10为基底;

(9).8e-4.1e0都是合法的,但.e0不合法,因为e前必须有数字,只用小数点来表示0.0是错误的;

(10)转义字符合法性判断:
几个不常用的:\a响铃,\b退格,\f换页,\v垂直制表,\\反斜杠,\?问号,\'单引号,\"双引号;

\xab代表ASCII码为十六进制数ab的字符,\101\033代表的是ASCII码为八进制数101和33的字符;

⚠️ASCII码十进制范围是0~127,也就是说八进制代表的转义字符最大是\177十六进制代表的转义字符最大是\x7F

3、运算符和表达式
(1)int,char,short三种类型数据在内存中所占用的字节数由所用机器的机器字长决定;

(2)混合数据类型的运算,int、float、double两两之间的运算,int和float都被转化为double,运算结果是double。如果是char和float或者double进行运算,则将char、float都转化为double,运算结果为double。char可以直接和int之间进行运算;

(3)⚠️算术表达式和运算符的优先级与结合性
算术运算符:
除了按照优先级进行结合,还遵循左结合性;

赋值运算符遵循右结合性:
a=b=c,现将c赋给b,再将b赋给a;


右结合性的运算符:
一些单目运算符:!(逻辑非),~(按位取反),++,–,-(负号),(类型)(类型转换),*(指针运算符),&(取地址),sizeof;
? :(条件运算符,三目);
=,+=,-=,%=,>>=等赋值运算符


注意逗号运算符是左结合的。


优先级
初等运算符((),[],->,.)==> 单目运算符 ==> 算数运算符(先乘除后加减) ==> 关系运算符 ==> 逻辑运算符(不包括!) ==> 条件运算符 ==> 赋值运算符 ==> 逗号运算符。


⚠️重要例子:
x=(i=4,j=16,k=32),x值为32;
(a=2,b=5,b++,a+b)表达式的值是8,因为括号中的几个表达式从左至右计算,而括号表达式取值为括号中最后一个表达式的值。

(4)%两侧都必须是整数(要求运算数必须是整型);

(5)y为double型,i为int型,则y=float(i)是错的,赋值语句不能类型不匹配;

(6)int a=2; a*=2+3等价于a=2*(2+3),算数运算符优先级高于赋值运算符;

(7)a=a*3=2这种写法是错误的,赋值符号右结合性,先运行a*3=2,不能将值赋给表达式;


基本上应试概念就集中在谭浩强这本绿皮书的前两章,剩下的章节基本是编程题,正如文章开头所说,我不会此文总结编程题,之后我会将剩下章节的应试概念更新至此文(如果有的话)。

如果你最近有C语言考试(比如大学C语言期中期末),可以mark这篇文章,考前晚上背一背就行。想拿高分or想用好C语言,还要将主要时间用来编程。我还有一篇C语言——基础查漏补缺(一),这篇总结涵盖除了文件操作几乎所有的C语言注意事项,也是我总结用来考试的,希望能顺便帮到一些人。

发布了36 篇原创文章 · 获赞 41 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/umbrellalalalala/article/details/88123739