C语言重要的知识点
总体上必须清楚的:
1)程序结构是三种: 顺序结构 、选择结构(分支结构)、循环结构。
2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择),有且只有一个main函数。
3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是 他的地址.
4)bit是位 是指为0 或者1。 byte是指字节, 一个字节 = 八个位.
概念常考到的:
1、编译预处理不是C语言的一部分,不占运行时间,不要加分号。C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。
2、define PI 3.1415926; 这个写法是错误的,一定不能出现分号。
3、每个C语言程序中main函数是有且只有一个。
4、在函数中不可以再定义函数。
5、算法:可以没有输入,但是一定要有输出。
6、break可用于循环结构和switch语句。
7、逗号运算符的级别最低,赋值的级别倒数第二。
第一章 C语言的基础知识
第一节、对C语言的基础认识
1、C语言编写的程序称为源程序,又称为编译单位。
2、C语言书写格式是自由的,每行可以写多个语句,可以写多行。
3、一个C语言程序有且只有一个main函数,是程序运行的起点。
第二节、熟悉vc++
1、VC是软件,用来运行写的C语言程序。
2、每个C语言程序写完后,都是先编译,后链接,最后运行。(.c---à.obj---à.exe)这个过程中注意.c和.obj文件时无法运行的,只有.exe文件才可以运行。
第三节、标识符
1、标识符(必考内容):
合法的要求是由字母,数字,下划线组成。有其它元素就错了。
并且第一个必须为字母或则是下划线。第一个为数字就错了
2、标识符分为关键字、预定义标识符、用户标识符。
关键字:不可以作为用户标识符号。main define scanf printf 都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。
预定义标识符:背诵define scanf printf include。记住预定义标识符可以做为用户标识符。
用户标识符:基本上每年都考,详细请见书上习题。
第四节:进制的转换
十进制转换成二进制、八进制、十六进制。
二进制、八进制、十六进制转换成十进制。
第五节:整数与实数
1)C语言只有八、十、十六进制,没有二进制。但是运行时候,所有的进制都要转换成二进制来进行处理。
a、C语言中的八进制规定要以0开头。018的数值是非法的,八进制是没有8的,逢8进1。
b、C语言中的十六进制规定要以0x开头。
2)小数的合法写法:C语言小数点两边有一个是零的话,可以不用写。
1.0在C语言中可写成1.
0.1在C语言中可以写成.1。
3)实型数据的合法形式:
a、2.333e-1 就是合法的,且数据是2.333×10-1。
b、考试口诀:e前e后必有数,e后必为整数。请结合书上的例子。
4) 整型一般是4个字节, 字符型是1个字节,双精度一般是8个字节:
long int x; 表示x是长整型。
unsigned int x; 表示x是无符号整型。
第六、七节:算术表达式和赋值表达式
核心:表达式一定有数值!
1、算术表达式:+,-,*,/,%
考试一定要注意:“/” 两边都是整型的话,结果就是一个整型。 3/2的结果就是1.
“/” 如果有一边是小数,那么结果就是小数。 3/2.0的结果就是0.5
“%”符号请一定要注意是余数,考试最容易算成了除号。)%符号两边要求是整数。不是整数就错了。
2、赋值表达式:表达式数值是最左边的数值,a=b=5;该表达式为5,常量不可以赋值。
1、int x=y=10: 错啦,定义时,不可以连续赋值。
2、int x,y;
x=y=10; 对滴,定义完成后,可以连续赋值。
3、赋值的左边只能是一个变量。
4、int x=7.7;对滴,x就是7
5、float y=7;对滴,x就是7.0
3、复合的赋值表达式:
int a=2;
a*=2+3;运行完成后,a的值是12。
一定要注意,首先要在2+3的上面打上括号。变成(2+3)再运算。
4、自加表达式:
自加、自减表达式:假设a=5,++a(是为6), a++(为5);
运行的机理:++a 是先把变量的数值加上1,然后把得到的数值放到变量a中,然后再用这个++a表达式的数值为6,而a++是先用该表达式的数值为5,然后再把a的数值加上1为6,
再放到变量a中。 进行了++a和a++后在下面的程序中再用到a的话都是变量a中的6了。
考试口诀:++在前先加后用,++在后先用后加。
5、逗号表达式:
优先级别最低。表达式的数值逗号最右边的那个表达式的数值。
(2,3,4)的表达式的数值就是4。
z=(2,3,4)(整个是赋值表达式) 这个时候z的值为4。
z= 2,3,4(整个是逗号表达式)这个时候z的值为2。
补充:
1、空语句不可以随意执行,会导致逻辑错误。
2、注释是最近几年考试的重点,注释不是C语言,不占运行时间,没有分号。不可以嵌套!
3、强制类型转换:
一定是 (int)a不是 int(a),注意类型上一定有括号的。
注意(int)(a+b) 和(int)a+b 的区别。前是把a+b转型,后是把a转型再加b。
4、三种取整丢小数的情况:
1、int a =1.6;
2、(int)a;
3、1/2; 3/2;
第八节、字符
1)字符数据的合法形式::
'1' 是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。
'0' 的ASCII数值表示为48,'a' 的ASCII数值是97,'A'的ASCII数值是65。
一般考试表示单个字符错误的形式:'65' "1"
字符是可以进行算术运算的,记住: '0'-0=48
大写字母和小写字母转换的方法: 'A'+32='a' 相互之间一般是相差32。
2)转义字符:
转义字符分为一般转义字符、八进制转义字符、十六进制转义字符。
一般转义字符:背诵\0、 \n、 \’、 \”、 \\。
八进制转义字符: ‘\141’ 是合法的, 前导的0是不能写的。
十六进制转义字符:’\x6d’ 才是合法的,前导的0不能写,并且x是小写。
3、字符型和整数是近亲:两个具有很大的相似之处
char a = 65 ;
printf(“%c”,a); 得到的输出结果:a
printf(“%d”, a); 得到的输出结果:65
第九章、位运算
1)位运算的考查:会有一到二题考试题目。
总的处理方法:几乎所有的位运算的题目都要按这个流程来处理(先把十进制变成二进制再变成十进制)。
例1: char a = 6,b;
b = a<<2; 这种题目的计算是先要把a的十进制6化成二进制,再做位运算。
例2: 一定要记住,异或的位运算符号” ^ ”。0 异或 1得到1。
0 异或 0得到0。两个女的生不出来。
考试记忆方法:一男(1)一女(0)才可以生个小孩(1)。
例3: 在没有舍去数据的时候,<<左移一位表示乘以2;>>右移一位表示除以2。
第二章
第一节:数据输出(一)(二)
1、使用printf和scanf函数时,要在最前面加上#include“stdio.h”
2、printf可以只有一个参数,也可以有两个参数。(选择题考过一次)
3、printf(“ 第一部分 ”,第二部分 );把第二部分的变量、表达式、常量以第一部分的形式展现出来!
4、printf(“a=%d,b=%d”,12, 34) 考试重点!
一定要记住是将12和34以第一部分的形式现在在终端也就是黑色的屏幕上。考试核心为:一模一样。在黑色屏幕上面显示为 a=12,b=34
printf(“a=%d,\n b=%d”,12, 34)那么输出的结果就是:a=12,
b=34
5、int x=017; 一定要弄清楚为什么是这个结果!过程很重要
printf(“%d”, x); 15
printf(“%o”, x); 17
printf(“%#o”,x); 017
printf(“%x”, x); 11
printf(“%#x”,x); 0x11
6、int x=12,y=34; 注意这种题型
char z=‘a’;
printf(“%d ”,x,y); 一个格式说明,两个输出变量,后面的y不输出
printf(“%c”,z); 结果为:12a
第三节 数据输入
1、scanf(“a=%d,b=%d”,&a,&b) 考试超级重点!
一定要记住是以第一部分的格式在终端输入数据。考试核心为:一模一样。
在黑色屏幕上面输入的为 a=12,b=34才可以把12和34正确给a和b 。有一点不同也不行。
2、scanf(“%d,%d”,x,y);这种写法绝对错误,scanf的第二个部分一定要是地址!
scanf(“%d,%d”,&x,&y);注意写成这样才可以!
3、特别注意指针在scanf的考察
例如: int x=2;int *p=&x;
scanf(“%d”,x); 错误 scanf(“%d”,p);正确
scanf(“%d”,&p); 错误 scanf(“%d”,*p)错误
4、指定输入的长度 (考试重点)
终端输入:1234567
scanf(“%2d%4d%d”,&x,&y,&z);x为12,y为3456,z为7
终端输入:1 234567 由于1和2中间有空格,所以只有1位给x
scanf(“%2d%4d%d”,&x,&y,&z);x为1,y为2345,z为67
5、字符和整型是近亲:
intx=97;
printf(“%d”,x); 结果为97
printf(“%c”,x); 结果为 a
6、输入时候字符和整数的区别(考试超级重点)
scanf(“%d”,&x);这个时候输入1,特别注意表示的是整数1
scanf(“%c”,&x);这个时候输入1,特别注意表示的是字符‘1’ASCII为整数48。
补充说明:
1)scanf函数的格式考察:
注意该函数的第二个部分是&a这样的地址,不是a;
scanf(“%d%d%*d%d”,&a,&b,&c); 跳过输入的第三个数据。
2)putchar ,getchar 函数的考查:
char a = getchar() 是没有参数的,从键盘得到你输入的一个字符给变量a。
putchar(‘y’)把字符y输出到屏幕中。
3)如何实现两个变量x ,y中数值的互换(要求背下来)
不可以把 x=y ,y=x; 要用中间变量 t=x;x=y;y=t。
4)如何实现保留三位小数,第四位四舍五入的程序,(要求背下来)
y=(int)(x*100+0.5)/100.0 这个保留两位,对第三位四舍五入
y=(int)(x*1000+0.5)/1000.0 这个保留三位,对第四位四舍五入
y=(int)(x*10000+0.5)/10000.0 这个保留四位,对第五位四舍五入
这个有推广的意义,注意 x = (int)x 这样是把小数部分去掉。
C语言基本知识点
一、C语言知识点归纳:
1、C语言程序是由多个函数构成的。
2、每个C语言程序中有且只有一个main函数。
3、C语言不使用行号,无程序行的概念。
4、程序中可使用空行和空格。
5、C语言程序格式常用锯齿形书写格式。
6、C语言程序中可加任意多的注释,注释形式/*……*/,并且注释形式不能嵌套,即不能注释里面又有另一个注释。//行注释是C++当中新增加的内容。
7、引用C语言标准库函数,一般要用文件包含预处理命令将其头文件包含进来。
8、用户自定义的函数,必须先定义后使用。
9、变量必须先定义后使用。
10、变量名,函数名必须是合法的标识符,标识符习惯用小写字母,C语言是字母大小写敏感的语言。
11、不能用关键字来命名变量和函数。
12、C语言的语句都是以分号结尾的。
13、计算机中使用的进制数是二进制数,而不是十进制数,因为二进制只有两个数码,运算简单便于硬件实现,同时二进制便于逻辑运算。将十进制数转换成二进制数应分为整数部分转换和小数部分转换,整数部分转换可采用基数除法来实现,小数部分转换可采用基数乘法来实现。八进制和十六进制也是C语言中经常表示数据的进制,因为它们与二进制之间的转换非常方便,但要注意他们不是计算机中使用的进制。
14、机器数的表示形式有原码、反码和补码几种形式,计算机中通常使用补码的形式来表示一个数,因为补码运算可以连同符号位一起参与运算,这便于运算器的设计与实现。
二、编程过程中初学者极易犯的错误:
1、书写标识符时,忽略了大小写字母的区别。例如把变量a写成A。
2、忽略了变量的类型,进行了不合法的运算。例如floata,b;printf(“%d”,a%b);,其中%运算只能是整形变量或常量。
3、将字符常量与字符串常量混淆。例如charc;c=”a”;,应该是c=’a’;
4、语句末尾忘记加分号。
5、容易多加不需要的分号,例如{inta,b;printf(“%d,%d”,a,b);};这里花括号外是不能加分号的。
6、将C语句写在{}的外面。
7、变量未定义就使用。
8、在执行部分定义变量。在TC下,函数由生命部分和执行部分组成,并且这两部分不能交叉,也就是说,不能在C语言中间定义变量。下面程序中,变量b的定义放到了执行部分。
voidmain()
{
inta;
a=10;
intb;
b=a;
}
但要记住VC6.0中没有这样的规定,只要变量定义在前,使用在后就行。
9、给变量赋值时忽视了变量的表示范围。例如charch=130;char类型的取值范围是-128~127,这里130超出了ch的表示范围。
10、定义变量时,变量名之间用了空格或分号分隔。例如:intab;应改为:inta,b;
11、输入字符常量时漏掉单引号,认为A、B就是’A’、’B’。例如charch=A;
12、C语句末尾的分号用了中文的分号(;)而不是英文的(;),导致编译错误。
13、误将字母o当成数字零0。
14、编程中经常漏掉}、)、’、”。
15、定义变量时数据类型名与变量名之间无空格。例如inta;
16、对于float型变量,使用%运算符。
17、对表达式进行强制类型转换时漏掉了(),例如:int(3.2+a),应该为:(int)(3.2+a)。
18、赋值运算符的左边使用表达式:例如:a+b=30;或者是30=a+b;
19、语序颠倒。例如下列程序中初学者会误认为程序的输出为a=21:
main()
{
inta,b;
a=b+1;
b=20;
printf(“a=%d”,a);
}
20、#include或#define命令用分号结束。
#开头的是预处理命令,而不是C语句,因此,不用用分号结尾。例如#include;就是错误的,多了个分号。
21、利用scanf函数输入变量值时漏掉取地址符&。
22、利用printf函数和scanf函数时,格式控制符与表达式类型不一致,或数量不相等。例如:
inta,b;
scanf(“%d”,&a,&b);//格式控制符与表达式的'数量不相等
printf(“a=%d,b=%f”,a,b);//%f应改为%d。
23、调用scanf函数输入浮点数时规定了精度。
例如:
floatf;
scanf(“%5.2f”,&f);//应改为scanf(“%5f”,&f);
24、对算数表达式取地址。
取地址运算符&只能用于变量。
下面做法是错误的:
inta,b;
scanf(“%d”,&(a+b));//错误
25、利用printf打印单引号、双引号、反斜杠时,没有在这些字符前利用反斜杠构成转义字符。
例如printf(”youshouldsay”bye”!”);
应改为:printf(”youshouldsay”bye”!”);
三、C语言编程习惯。
1、一行只放一条语句。尽管C语言允许在一行放置多条语句,但一行只放一条语句有助于程序的调试。
2、养成随时给程序加注释的习惯。一边别的程序员或自己日后对程序的快速理解。
3、程序的书写要有层次感,及锯齿形。
4、编写函数时,变量定义部分和函数的执行部分之间增加一空行,或者在程序的执行部分按照完成的功能块增加相应的空行,会增加程序的易读性。
5、为变量起有意义的名字,既可以帮助程序员读懂程序,也可以避免变量的重复乱用,导致程序的逻辑错误。
6、在运算符和赋值符号的两边加上一个空格会增加程序的易读性。
例如a=a+b;写成a=a+b;更好。
C语言基本算法
1.交换(两量交换借助第三者)
例1、任意读入两个整数,将二者的值交换后输出。
main()
{int a,b,t;
scanf("%d%d",&a,&b);
printf("%d,%d ",a,b);
t=a; a=b; b=t;
printf("%d,%d ",a,b);}
【解析】程序中加粗部分为算法的核心,如同交换两个杯子里的饮料,必须借助第三个空杯子。
假设输入的值分别为3、7,则第一行输出为3,7;第二行输出为7,3。
其中t为中间变量,起到“空杯子”的作用。
注意:三句赋值语句赋值号左右的各量之间的关系!
【应用】
例2、任意读入三个整数,然后按从小到大的`顺序输出。
main()
{int a,b,c,t;
scanf("%d%d%d",&a,&b,&c);
if(a>b){ t=a; a=b; b=t; }
if(a>c){ t=a; a=c; c=t; }
if(b>c) { t=b; b=c; c=t; }
printf("%d,%d,%d ",a,b,c);}
2.累加
累加算法的要领是形如“s=s+A”的累加式,此式必须出现在循环中才能被反复执行,从而实现累加功能。“A”通常是有规律变化的表达式,s在进入循环前必须获得合适的初值,通常为0。
例1、求1+2+3+……+100的和。
main()
{int i,s;
s=0; i=1;
while(i<=100)
{s=s+i;
i=i+1;
}
printf("1+2+3+...+100=%d ",s);}
【解析】程序中加粗部分为累加式的典型形式,赋值号左右都出现的变量称为累加器,其中“i = i + 1”为特殊的累加式,每次累加的值为1,这样的累加器又称为计数器。
3.累乘
累乘算法的要领是形如“s=s*A”的累乘式,此式必须出现在循环中才能被反复执行,从而实现累乘功能。“A”通常是有规律变化的表达式,s在进入循环前必须获得合适的初值,通常为1。
例1、求10!
[分析]10!=1×2×3×……×10
main()
{int i; long c;
c=1; i=1;
while(i<=10)
{c=c*i;
i=i+1;
}
printf("1*2*3*...*10=%ld ",c);}
齐齐哈尔工程学院在新疆高考招生计划人数专业代码(2024参考)
宁夏工商职业技术学院在河南高考招生计划人数专业代码(2024参考)
河北高考排名184970左右排位历史可以上哪些大学,具体能上什么大学
湖北高考排名174600左右排位物理可以上哪些大学,具体能上什么大学
考福州外语外贸学院要多少分宁夏考生 附2024录取名次和最低分
湖南师范大学在云南高考招生计划人数专业代码(2024参考)
广东高考排名247430左右排位物理可以上哪些大学,具体能上什么大学
陕西青年职业学院在宁夏高考历年录戎数线(2024届参考)
安徽文达信息工程学院的审计学专业排名怎么样 附历年录戎数线
安徽高考排名263910左右排位理科可以上哪些大学,具体能上什么大学
考安顺学院要多少分广东考生 附2024录取名次和最低分
广东高考排名94120左右排位物理可以上哪些大学,具体能上什么大学
四川高考排名6710左右排位理科可以上哪些大学,具体能上什么大学
考洛阳科技职业学院要多少分甘肃考生 附2024录取名次和最低分
福建高考排名46830左右排位物理可以上哪些大学,具体能上什么大学
重庆机电职业技术大学的数控技术专业排名怎么样 附历年录戎数线
郑州升达经贸管理学院和辽宁工业大学哪个好 附对比和区别排名
赣州职业技术学院和扬州工业职业技术学院哪个好 附对比和区别排名
江西外语外贸职业学院在内蒙古高考历年录戎数线(2024届参考)
四川高考排名14260左右排位理科可以上哪些大学,具体能上什么大学
中华鲟鱼知识大全最新
狗场养狗知识最新大全
养狗知识大全最新
鹦鹉知识的资料大全最新
貂皮基本知识大全最新
java语法基础知识有哪些
java基础常识有哪些
c语言基础常识有哪些
c语言冷知识有哪些
计算机组装维护知识有哪些
储粮科技基础知识有哪些
java面试基础知识有哪些
c语言的冷知识有哪些
c语言基础知识都有哪些
农业科技基础知识有哪些