C语言年度知识总结

C语言年度知识总结

C数据类型
基本数据类型又有整形,实行和字符型。由于类型不同类型的数据在内存中占用不同大小的存储单元,不同类型的数据的表现形式和可参与的运算符不同,所以使用变量前必须先定义,也有助于在程序中对它们按不同方式和要求进行处理。各种数据和运算符及运算符之间的优先性和结合行等构成了严谨的表达式。
简单的算术运算和表达式
对数据的处理依赖于各种运算符,常见算术运算符有加(+)、减(—)、乘(*)、除(/)、求余(%)等。算术运算符(结合性左结合)的优先级高于赋值运算符(结合性右结合)。在后面的循环结构中会用到增一和减一运算符,实现对循环条件的控制。
在自动类型转换过程中,将取值范围小的类型转换为取值范围大的类型是安全的,反之则可能造成数据信息丢失。如果将两个数据全部定义为整形,例 int a=5,b=2; a/b=2运算结果仍为整数,可见这种方法并不能真正获得a与b相除后的小数部分的值。为获取小数值就要用到强制类型转换,先用(float)a将a的值强转为实型数据,便实现要求。强制类型转换的优点在于只将变量的值强转而不改变变量的数据类型。
在程序中往往会直接使用一些常数,称之为幻数。为提高程序可读性和可维护性,我们常把幻数定义为宏常量或const常量。例如Π,我们可以这样定义:#define PI 3.14159 (行末不加分号,宏名后不加“=”)或const double PI=3.14159(行末加分号,宏名后有“=”)。
在数学中拥有丰富的数学运算符来完成数学表达式,同样在C语言中也有丰富的标准数学函数来完成代码中的表达式。常用的有:sqrt开根、fabs求绝对值、ceil向上取整负数去掉小数部分、floor向下取整、round就近取整。
键盘输入和屏幕输出
单个字符的输入和输出。字符常量时用单引号括起来的一个字符,例如’a’是字符常量,a是一个标识符。C语言还引用了转义字符,它是以(\)为开头的字符序列,具有特殊的含义。例如’\n’就是一种转义字符,用于控制输出时的换行处理。须注意的是,当转义序列出现在字符串中时,是按单个字符计数的。在ASCII码中每个字符都有对应的编码。
字符的输入和输出。getchar()和putchar()是C标准函数库中专用于字符输入输出的函数。例如:
char ch
ch=getchar();/从键盘输入一个字符,按回车键结束,该字符被存入变量ch/
Putchar(ch);/在屏幕上显示变量ch中的字符/
注意的是getchar()函数没有参数,因此不能写成getchar(ch)。
数据的格式化输入函数scanf()与数据的格式化输出函数printf().使用时要注意各种格式转换说明符和格式修饰符。若函数scanf()的格式控制字符串中存在除格式说明以外的其他字符,那么用户在输入时也要从键盘原样输入这些字符。应用:scanf(“ %c”,&b)在%加空格可在用户输入空格时将空格读入。为缓冲回车符可加getchr()将回车符读入。
选择控制结构
常用的条件语句有:单分支控制条件的语句,当条件成立执行A操作否则执行后续操作;双分支条件控制的条件语句,if和else两种情况非此即彼;多路选择的switch语句,用于对多种情况的选择,switch(离散数值);C语言中对逻辑关系的表达,依赖于逻辑运算符,注意在数学上正确的表达式在C语言逻辑上不一定正确。
循环控制结构与循环语句
学完循环后,去做openjudge上的题发现基本每道题都会用到循环控制结构。顺序结构、选择结构和循环结构是用于结构化程序设计的·三种基本结构,任何复杂问题都可以用这三种基本结构来编程实现。今天我就总结一下循环控制结构。
C语言提供了for、while、do-while三种循环语句来实现循环结构。被重复的语句序列被称为循环体。
While语句和do-while语句
一般表现形式 while(循环控制条件) do-while
{ {
语句序列 语句序列
}花括号内为循环体 }花括号内为循环体

While和do-while看上去类似,只是循环条件位置不同。实际上whlie和do-while分别代表当型循环和直型循环两种不同的循环结构。对于至少循环一次的语句序列,我们常常采用直型循环。

For语句
For语句属于当型循环结构,一般形式:
for(初始化表达式;循环控制表达式;增值表达式)
{
语句序列
}
for语句中三个表达式之间的分隔符是分号(有且仅有两个,既不能多,也不能少)。初始化表达式和增值表达式可以写在其他地方但是两个分号是必须写在括号内的。

计数控制的循环和条件控制循环
循环次数事先已知的循环称为计数控制的循环。适用于数值改变时,利用数值控制循环,习惯上利用for语句编写计数控制的循环更为简洁方便。循环次数事先未知的循环通常是由一个条件控制的,称为条件控制的循环。此时用while语句和do-while语句编程更为方便。

嵌套循环
循环体中包含另一个循环语句的循环称为嵌套循环,while,do-while,for这三种循环均可相互嵌套。在画矩形和金裱花的题目中我常常使用嵌套循环来控制行和列的输出。
for ( i=0; ;i++)/控制行/
{
for(j=0; ;j++)/控制列/
{
}
}

流程的转移控制
goto语句 goto 语句标号;
语句标号:
常与if(表达式)连用,如if(表达式) goto语句标号;不过最好不要使用goto语句。
break语句和continue语句
continue语句与break语句都可以对循环语句进行内部控制,当在循环体中遇到continue语句时,程序将跳过continue语句后面尚未执行的语句,开始下一次循环。而循环体遇到break语句时,循环终止,从循环后的第一条语句。
备注!!!在嵌套循环的情况下,break 语句和continue 语句只对包含它们的最内层的循环语句起作用,不能用break语句跳出循环。

穷举法
穷举简单地说就是通过尝试问题的所有可能来找到最终答案,在找到最终答案后常采用break语句退出循环,或用exit()来直接结束程序的运行。可读性更好的方法是使用标志变量例如将find赋值为假,循环判断条件置为真“!find”。
一维数组的定义和初始化
在输入较多数据时,如果每个数据都单独使用scanf或cin输入将浪费很多时间也不便于后续对这些数据的使用。解决这些问题就要用到数组。数组是一组具有相同类型的变量的集合。
使用一个统一的名字来标识这组相同类型的数据,这个名字称为数组名,每个数据项称为数组元素,在C程序中通过数组的下标实现对数组元素的访问。
Int score[5];int表示数组的基类型,表示数组元素的类型,score表示数组名,需要注意的是。C语音中数组的下标都是从0开始的。千万注意不要越界。
为了增强程序的适应性,常常把幻数定义为宏常量或conest常量,注意定义数组时一定要用常量来定义数组的大小!!!
定义但未进行初始化的数组仍是随机数,对一维数组初始化:
Int score[5]={90,80,70,100,95}或Int score[ ]={90,80,70,100,95}
二维数组的定义和初始化
先做一个与一维数组定义格式的对比:
一维数组 类型 数组名[元素个数];二维数组 类型 数组名[第一维长度][第二维长度]
第一维长度常常可以表示行数,第二维数组常常表示列数,用二维数组可对行和列中的数据进行处理。注意,第一维长度声明可以省略,但是第二维数组长度声明不可以省略!!!
常采用特殊值来作为结束的标记值,这种循环控制也称为标记控制的循环。

猜你喜欢

转载自blog.csdn.net/qq_43515378/article/details/85796606