C语言程序设计学习总结

C语言程序设计学习总结

第二章 C数据类型
本章中,我第一次接触C语言,主要学习常量和变量、数据类型、变量的定义和赋值方法。
①在学习时,我对字符型常量与字符串常量有很大的混淆,直到反复阅读课本、上机举例操作后才明白。字符型常量是由一对单引号括起来的一个任意字符(char),而字符串常量是由一对双引号括起来的0个或多个字符。如:
char ch;
ch=‘78’;
此时’78’是一个不合法的字符型常量,因为这样’78’就成了一个字符串,用这种方法不能输出完整的78;而使ch=78;时,可以输出N,因为此时是使用的ASCII码值对应的字母来给它赋值。
另外,cout<<‘3’;与cout<<“3”;的结果是一样的,都是3。若cout<<‘3’+3;输出的结果为54,即3的ASCII码51加上3(这里的‘3’也不再是数字了,已经成为了一个字符,即使参与了运算,也需要用到第三章里不同类型的操作数进行运算时的自动类型提升,即将所有的char提升为int),而cout<<“3”+3;则输不出东西。
②另外,在给变量赋值时尤其要注意,=是赋值号,而且它是右结合的,如x=x+1就是把x+1的值重新赋给x,而且a=b=c=0与a=(b=(c=0))是等价的。需要注意的是,=的左值只能是变量,不能是常量或者表达式。相等应用 == 表示,而且两个=之间不能有空格。b==2不一定成立,b=2因为是赋值语句而永远成立,所以以后尤其是应用选择控制结构时一定要注意不要因为疏忽而搞错。
③任何变量都必须先定义后使用,且所有的变量都要在第一条可执行语句前定义,而且要先赋值再运算。比如:
int a,b,c;
scanf("%d %d",&a &b);
c=a+b;
就是不行的,要把c=a+b;这条赋值语句放到scanf()前面去。
④定义变量到时候不可以对多个变量连续赋初值,如int a=b=c=0;是错误的。

第三章 简单的算数运算和表达式
本章主要学习putchar()函数、getchar()函数、printf()函数、scanf()函数。
①我在本章里学到的算数运算符与原本理解的并不同。比如/是除法符号,而且有整数除法与浮点数除法。%是用来求余的,但是参与运算的两个操作数必须为整型,得到的数的符号与被除数相同。
②而且在这里我第一次接触复合的赋值运算符,随着C语言学习的越来越深入,我越发觉得使用这些符号可以有效的提升输入效率,如在循环结构中计算累加、累乘的时候。与此同时,自增自减运算符在循环控制结构中也有必不可少的位置,几乎每一个循环中都能找到。在我看来,他们是让循环成为循环的关键。但是我经常把m=-n++等价于m=(-n)++,这是不合法的,因为不可以对表达式进行增1或减1的操作,其实际等价于m=-(n++)
④本章中我还学到如何定义宏常量与const常量。
宏定义:#define 标识符(宏名) 字符串
宏名与字符串之间可有多个空格符,无需加等号。不要加分号,否则会连分号一起替换,如2PIr实际为2*=3.14159;r
const可以声明具有某种数据类型的常量,但是只可以在定义时赋初值。如const define PI=3.14159; 注意要加上=和; 。
⑤强制类型转换运算符通过 (类型) 表达式 可以把表达式的值转化为任意值。我认为这个在浮点数除法中很好用,总感觉比
1.0感觉更直观。另外,本章还介绍了几个常用的标准数学函数,如计算x平方根的sqrt(x)、求x绝对值的fabs(x)等,调用它们时应有cstdlib或cmath头文件。
注意:应用圆心率时不可直接在表达式中输入π,否则会变为非法字符;运算时要用小括号,因为中括号和大括号都有特定含义。

第四章 键盘输入和屏幕输出
本章主要讲述字符输入函数putchar()、字符输入函数getchar()、数据的格式化输出函数printf()数据的格式化输入函数scanf()。
①getchar()与putchar()
char ch; ch=getchar(); putchar(ch); ,不可以是getchar(ch);
另外,用putchar()输入\n时要加单引号,即putchar(‘\n‘);
②在做题时,我常用printf()输出要求显示小数点后几位数的题。本章中我学习到printf()中可以在%与格式符中间插入一些格式修饰符进行输出的数据域宽、显示精度、左对齐等的输出格式微调。③在使用scanf()时,*为忽略输入修饰符,而且如果函数scanf()的格式控制字符串中存在除格式说明符以外的其他字符,那么这些字符必须在输入数据时由用户从键盘原样输入。如若:"%d %d",则输入的数据之间应有空格;若把空格换成逗号,也是如此。
④若printf(“a=%d,b=%d\n”,a,b);且scanf(“a=%d,b=%d”,&a,&b);那么输入时应把a=、b=原样输入。
若scanf("%2d%2d",&a,&b);,则在输入的数字为1234时,输出a=12,b=34。"2"为宽度。
⑤有时做题怎样运行都不能出现想要的结果,往往都是在焦头烂额之时才总能发现自己把scanf()里面写成了%d\n 。这种错误今后一定要避免,无论是用scanf()还是cin时都要格外注意。

第五章 选择控制结构
本章主要讲述关系运算符、逻辑运算符、条件运算符、if形式的条件语句(用于单分支控制)、if-else形式的条件语句(用于双分支控制)、else-if形式的条件语句(用于多分支控制)(表示互斥的情况)、switch语句(用于多路选择)。
①写这些程序的时候一定要锁进,因为这样可以提高程序的可读性,方便检查,降低出错率。
②表达式1?表达式2:表达式3 若表达式1成立,则为表达式2的值,否则为表达式3的值。这是一个省时省力的表达方法。
③复合语句可当做一条语句来使用,即可以用在单个语句可以使用的地方。
④if()、else后面不可以加;
⑤ 在把实数与0比较时,应注意浮点数只是在某种范围内近似实数,而不是真正的实数,只能用近似的方法与0比较。如比较实数时,if(a==0)是不可以的,而if(a<=le-6)就是可行的。同理,判断两个浮点数是否相等也是应该判断其差值的绝对值是否近似为零,我认为这种判断方法在做有关一元二次函数判别式、分数分母规定等类型的题时有很大作用。
⑤switch语句在多路选择中十分有效,它就相当于一系列if-else语句,使用它时应注意switch后面的括号中的表达式只能是char型或int型。而且case后面只能是空格和常量,其类型应该与switch后面的表达式类型一致。我曾经使用switch语句就出现过许多问题,比如把常量后面的冒号输成了分号,又或者把常量写成了一个区间或出现了运算符。所以平时看书时一定要仔细,以免写程序时错误百出。而且break语句在程序中的作用也很大,它可以跳出switch结构,避免case一直执行下去。
⑥在数学中可行的表达式a<b<c在C语言中并不适用,此时应使用逻辑表达符号写成(a<b)&&(b<c)的形式。从前做题时并没有意识到这一点,结果提交时怎样都不符合条件,所以修改程序消耗了大量时间,这也说明看课本一定要仔细。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值