c语言学习两个月心得
第2章 c数据类型
本章内容有常量和变量, 整型、实型和字符型,变量的定义和赋值,赋值运算符=,计算字节数运算符sizeof,运算符的优先级,运算符的结合性,圆括号,标识符命名。
c程序处理的数据由常量和变量两种形式。变量和常量的区别在于:在程序执行的过程中,常量的值保持不变,变量的值是可以改变。c语言的基本数据类型有整型、实型、字符型和枚举型等。变量必须先定义,后使用。标注c规定所有变量必须在第一条可执行语句之前定义。赋值运算符的左值只能是变量,不是常量或表达式。sizeof()是c的关键字不是函数名。圆括号,将表达式括起来,可避免因误用和混淆运算符的优先级和结合性而导致的程序错误。不允许使用C标识符命名。
本章常见错误小结
a:变量未定义就使用
b:忽视了变量区分大小写,使得定义的变量和使用的变量不同名
int sum;
SUM=0;
c:可执行语句之后定义变量
printf(“INPUT n”);
int n;
d:在定义变量时,用于变量初始化的常量类型与定义的变量类型不一致
int n=3.9;
e:在定义变量时,对于多个变量进行连续赋值
int n=m=0;
第三章简单的算数运算和表达式
主要内容:
1.算数运算符
算术运算符算数运算符的优先级高于赋值运算符。算数运算符的结合性是左结合,赋值运算符的结合性是右结和。
2.增一和减一运算符
增一和减1运算符后缀形式与前缀形式的区别:前者是使用变量的值然后再增一(减一),后者是先增一(减一),然后再使用变量的值。
3.强制类型转换运算符
将表达式的值强制转化为目标类型
4.自动类型转换
在不同类型数据之间会发生自动类型转换。将取值范围小的转换为取值范围大的类型是安全的,而反之则是不安全的。
5.整数除法
两个整数相除的商仍为整数。
6.浮点数除法
若要得到浮点数商,必须使用浮点数除法,或者将其中一个操作数强制转为浮点数。
7.宏常量
宏替换是简单的字符串替换,不进行语法检查。
8.const常量
可以用于声明具有某种类型的常量。
常见错误
a:使用了非法的标识符
b:将乘法运算符省略或写成x
4ac 或者 4xaxc
c: 表达式为一线性形式写出,即分子、分母、指数下标等未写在同一行上
d:使用方括号[]和以及花括号{}限制表达式
1.0/2.0+[a-b]/{a/b}
e:数学函数运算时未将参数用圆括号括起来,且且未注意定义域要求和参数的单位
sinx
f:对浮点数进行求余运算
3.5%5
g: 强制转换表达式中类型名为用圆括号括起来
float(m)/2
h:误以为(float)这种强制运算可以改变变量m的类型和数值
i:误以为用双引号括起来字符串中与宏名相同的字符也被宏替换,误以为宏替换时可以做语法检查
k:将宏定义当做算数运算符使用
#define pi=3.14159
l:对一个算数算数表达式使用增一或者减一运算
(a+b)++
典型例题
1.强制转换
#include<stdio.h>
int main()
{int n=256;
float f=3.6;
double d=2.5;
n=f;
f=n;
d=f;
printf("n=%d\n",n);
printf("f=%f\n",f);
printf("d=%f\n",d);
}
程序的运行结果为
n=3
f=3.000000;
d=3.000000;
#include<stdio.h>
#define pi 3.14159
int main()
{
double r;
printf(“INPUT r:”);
scanf("%1f",&r);
printf(“circumstance=%f\n”,2pir);
printf(“area=%f\n”,pirr);
}
第四章 键盘输入和屏幕输出
主要内容
- 字符常量
用单引号括起来的一个字符
2.转义字符
以反斜线()开头、有特定含义的字符序列
3.字符输出函数 putchar()
向屏幕输出字符
4.字符输入函数 getchar()
从键盘输入字符
5.数据的格式化输出函数printf()
以各种格式进行任意类型的数据的屏幕输出操作
6.数据的格式化输入函数scanf()
以各种格式进行任意类型数据的键盘输入操作
错误实例
1.忘记给scanf()中的变量加上取地址运算符&
scanf("%d",a);
2.用户从键盘输入的数据格式与scanf()中格式控制字符串要求的格式不一致。例如,相邻数据项之间应该用逗号分隔,但是用户没有输入逗号,或者不应该用逗号,分隔用户输入了逗号
scanf("%d%d",&a,&b);
用户输入2,3
3.将printf()误写为print()或者Printf()。由于c编译器只是在目标程序中为库函数调用留出空间,并不能识别函数名中拼写错误,更不知道库函数里在哪里,寻找库函数并将其插入到目标程序中是链接程序负责的工作,函数名拼写错误只能在链接时发现
print(“INPUT a:”);
printf(INPUT a:");
例
#include<stdio.h>
int main()
{
char ch;
printf(“press a key and then press Enter:”);
ch=getchar();
ch=ch+32;
printf("%c,.%d\n",ch,ch);}
第五章 选择控制结构
主要内容
用于单分支控制的条件语句
#include<stdio.h>
int main()
{ int a,b,max;
printf(“Input a,b:”);
scanf("%d,%d",&a,&b);
if(a>b) max = a;
if(a<=b) max = b;
printf(“max = %d\n”,max); }
用于双分支控制的条件语句
#include <stdio.h>
int main ()
{ int a,b,max;
printf(“Input a,b:”); scanf("%d,%d",&a,&b);
if(a.b) max = a;
else max = b;
printf(“max = %d\n”,max);
}
用于多分支控制的条件语句
if (表达式) 语句1
else if(表达式2) 语句2
…else if (表达式m) 语句m
else 语句m+1
用于多路选择的switch语句
switch (表达式)
{ case 常量1:
可执行语句序列1
case 常量2:
可执行语句序列2
. . . case 常量n:
可执行语句序列n
default: 可执行语句序列n+1}
我的感悟:一定要先明白c语言的表达方式,遵守c语言的规则,不乱写,有理有据,多加练习。