计算机等级考试二级C语言常见知识点_第1页
计算机等级考试二级C语言常见知识点_第2页
计算机等级考试二级C语言常见知识点_第3页
计算机等级考试二级C语言常见知识点_第4页
计算机等级考试二级C语言常见知识点_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2012年计算机等级考试二级C语言常见知识点总体上必须清楚的:1)程序结构是三种:顺序结构,循环结构(if-goto、while、do_while以及for),选择结构(if和switch)2)用C语言编写的程序称为C语言源程序,源程序文件的后缀名为“.c”;源程序经编译后生成后缀名为“.obj”的目标文件;再把目标文件与各种库函数连接起来,生成“.exe”的可执行文件。3)函数是C程序的基本组成单位,任何一个C程序既可以由一个函数组成,也可以由多个函数组成,不管由多少个函数组成,都必须有且仅有一个主函数,即main()函数。无论main函数在整个程序中的位置如何,程序总是从main函数开始执行、也从main函数结束。读程序时应从main()函数开始,然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。4)计算机的数据在电脑中是以二进制的形式保存的.数据存放的位置就是它的地址(即指针)。5)编译预处理命令不是C语句,不占用运行时间,后面一定不能出现分号。在C程序中有三种情况不会执行,依次是编译预处理命令、解释语句和变量声明语句。6)bit是位是指为0或者1。byte是指字节,一个字节=八个位。7)一定要记住:二进制如何转换成十进制(口诀:按位权展开求和)。概念常考到的:1、编译预处理(如#include“stdio.h”)不是C语言的一部分,不占运行时间。C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。2、每个C语言程序中main函数是有且只有一个。3、在函数中不可以再定义函数,即函数可以嵌套调用,不可以嵌套定义。4、算法可以没有输入,但一定要有输出,也就因此编写任何一个C程序时必须有printf()等输出语句。5、break可用于循环结构和switch语句,但continue只能用于循环结构。6、逗号运算符的级别最低,赋值的级别倒数第二。7、任意合法的表达式一定有一个数值与它对应。第一章C语言基础知识1)C程序基本常识该考点主要从C程序书写规范、main函数及函数基础知识、C程序开发流程及各阶段产生的文件等方面进行考察。每条C语句的后面必须有一个分号,分号是语句的一部分;一行内可写多条语句,一个语句可以分成多行书写。C程序中对字母的大小写是敏感的,如A与a是不同的标识符。注释:是对程序的说明,目的是提高程序的可读性,可出现在程序中任意合适的地方,注释从“/*”开始到最近一个“*/”结束,其间任何内容都不会被计算机执行,不允许嵌套注释。下列叙述中正确的是()每个C程序文件中都必须要有一个main()函数在C程序中main()函数的位置是固定的C程序中所有函数之间都可以相互调用,与函数所在位置无关在C程序的函数中不能定义另一个函数以下叙述中错误的是()

A)C程序在运行过程中所有计算都以二进制方式进行

B)C程序在运行过程中所有计算都以十进制方式进行

C)所有C程序都需要编译链接无误后才能运行

D)C程序中整型变量只能存放整数,实型变量只能存放浮点数2)合法的用户标识符考查:合法的要求是由字母,数字,下划线组成。有其它元素就错了。并且第一个必须为字母或者是下划线。第一个为数字就错了。关键字不可以作为用户标识符号。main、define、scanf和printf都不是关键字。迷惑你的地方If是可以作为用户标识符。因为C语言是大小写敏感的文法,If中的第一个字母大写了,所以不是关键字。注意:连接(-)符不能出现在标识符中;区分字母o与数字0;熟悉常见的关键字。3)判断常量是否合法常量是指在程序运行过程中,其值不能改变的量;分为整型常量、实型常量、字符常量、字符串常量、符号常量5种。整型常量:有十进制、八进制和十六进制三种表示形式,没有二进制形式;八进制整型常量加前导数字0,十六进制常量加前导0X,八进制常量中每个数位的数值不会大于7。例如:-080不是合法的整型常量。实型常量:有两种表示形式:小数形式和指数形式;掌握判定指数形式合法性。2.333e-1就是合法的,且数据是2.333×10-1考试口诀:e前e后必有数,e后必为整数。.字符数据的合法形式:'1'是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。'0'的ASCII数值表示为48,'a'的ASCII数值是97,'A'的ASCII数值是65。数字字符0的ASCII值为48,若有以下程序main(){chara='1',b='2';printf("%c,",b++);printf("%d\n",b-a);}程序运行后的输出结果是______。A)3,2B)50,2C)2,2D)2,50大小写字母的转换:大写字母转换成对应小写字母:ch+32如‘A’+32=’a’小写字母转换成对应大写字母:ch–32如‘y’–32=‘Y’数字字符与对应数字的转换:ch–48如’1’–48=1#include<stdio.h>main(){chara,b,c,d;scanf("%c%c",&a,&b);c=getchar();d=getchar();printf("%c%c%c%c\n",a,b,c,d);}当执行程序时,按下列方式输入数据(从第一列开始,<CR>代表回车,注意:回车是一个字符)12<CR>34<CR>则输出结果是:A、1234 B、12 C、12 D、12 334已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:B33<回车>,则输出结果是___________#include"stdio.h"voidmain(){chara,b;a=getchar();scanf("%d",&b);a=a-'A'+'0';b=b*2;printf("%c%c\n",a,b);}4)变量在程序运行过程中其值可以改变的量称为变量。整型变量可分为基本整型(int)、短整型(short)、长整型(long)、和无符号整型(unsigned);一个基本整型占4个字节,其它类型的整型占用字节数和取值范围详见教材,注意:变量在计算机中所占用存储空间的大小由C语言编译系统决定。实型变量分为单精度型(float)和双精度型(double),单精度型占四个字节。5)转义字符的考查:在程序中inta=0x6d,是把一个十六进制的数给变量a注意这里的0x必须存在。在程序中inta=06d,是一个八进制的形式。在转义字符中,’\x6d’才是合法的,0不能写,并且x是小写。‘\141’是合法的,0是不能写的。‘\108’是非法的,因为不可以出现8。6)算术运算符:算术运算符一共有+、—、*、/、%这五个;求余运算要求运算对象只能为整型,除法运算符两边运算对象都为整型时,运算结果也为整型,即舍掉小数部分。例如:18/10结果为1,而不是1.8;3.5%3是非法的表达式。7)强制类型转换:将一个运算对象转换成指定类型,格式为(类型名)表达式,注意小括号位置。一定是(int)a不是int(a),注意类型上一定有括号的。注意(int)(a+b)和(int)a+b的区别:前者是把a+b转换成整型,后者是把a转换成整型再与b相加。8)赋值运算及表达式的考查:赋值运算符为“=”,不同于关系等于“==”。赋值表达式格式为:变量名=表达式,赋值运算符左边必须为变量,赋值运算是把赋值运算符右边表达式的值赋给左边变量。复合赋值运算符是将算术运算符或位运算符与赋值运算符组合在一起组成的运算符,掌握复合赋值表达式转化为赋值表达式的方法。如n+=100可转化为n=n+100。注意赋值运算符和复合赋值运算符的优先级仅仅高于逗号运算符,结合性为从右到左例如:有语句inta=5;表达式a=6值为6,而表达式a==6结果为0是表达式就一定有数值。赋值表达式:表达式数值是最左边的数值,a=b=5;该表达式的值为5,常量不可以赋值。自加、自减表达式:假设a=5,++a(是为6),a++(为5);运行的机理:++a是先把变量的数值加上1,然后把得到的数值放到变量a中,然后再用这个++a表达式的数值为6,而a++是先用该表达式的数值为5,然后再把a的数值加上1为6,再放到变量a中。进行了++a和a++后在下面的程序中再用到a的话都是变量a中的6了。考试口诀:++在前先加后用,++在后先用后加。逗号表达式:优先级别最低;整个表达式的数值是逗号最右边的那个表达式的数值。例如:(2,3,4)的表达式的数值就是4。有以下程序main(){intx,y,z;x=y=1;z=x++,y++,++y;printf("%d,%d,%d\n",x,y,z);}程序运行后的输出结果是________。A)2,3,3B)2,3,2C)2,3,1D)2,2,19)位运算的考查:会有一到两题的考试题目。总的处理方法:几乎所有的位运算的题目都要按这个流程来处理(先把十进制变成二进制再变成十进制)。例1:chara=6,b;b=a<<2;这种题目的计算是先要把a的十进制6化成二进制,再做位运算。一定要记住,异或的位运算符号。0异或1得到1。0异或0得到0。两个女的生不出来。1异或1得到0。两个男的生不出来。考试记忆方法:一男(1)一女(0)才可以生个小孩(1)。一定要记住,在没有舍去数据的时候,<<左移一位表示乘以2;>>右移一位表示除以2。有以下程序

#include<stdio.h>

main()

{shortc=124;

c=c_______;

printf(“%d\n”、C);

若要使程序的运行结果为248,应在下划线处填入的是

A)>>2

B)|248

C)&0248

D)<<110)三种取整丢小数的情况:1、inta=1.6;2、(int)a;3、3/211)字符型和整数是近亲chara=65;printf(“%c”,a);得到的输出结果:aprintf(“%d”,a);得到的输出结果:65第二章数据的输入输出 1)printf函数的格式考查:%d对应整型;%c对应字符型;%f对应单精度等等。宽度的,左对齐等修饰。%ld对应longint;%lf对应double。2)scanf函数的格式考察:注意该函数的第二个部分是&a这样的地址,不是a,除指针变量名和数组变量名外;scanf(“%d%d%*d%d”,&a,&b,&c);跳过输入的第三个数据。3)putchar,getchar函数的考查:chara=getchar()是没有参数的,从键盘得到你输入的一个字符给变量a。putchar(‘y’)把字符y输出到屏幕中。4)如何实现两个变量x,y中数值的互换(要求背下来)不可以是x=y,y=x;要用中间变量t=x;x=y;y=t。5)如何实现保留三位小数,第四位四舍五入的程序,(要求背下来)这个有推广的意义,注意x=(int)x这样是把小数部分去掉。第三章选择结构特别要注意:c语言中是用非0表示逻辑真的,用0表示逻辑假的。1)关系表达式:表达式的数值只能为1(表示为真),或0(表示假)当关系的表达是为真的时候得到1。如9>8这个是真的,所以表达式的数值就是1;2)逻辑表达式:只能为1(表示为真),或0(表示假)a)共有&&||!三种逻辑运算符号。b)!>&&>||优先的级别。c)注意短路现象。考试比较喜欢考到。d)要表示x是比0大,比10小的方法。03)if语句可以单独出现,也可以与else匹配出现。if语句可以嵌套,这时else总是与位于其上面的离他最近的且没有与else配对的if匹配使用,else不能单独出现。在执行以下程序时,为了使输出结果为t=4,给a和b输入的值应该满足的条件是()voidmain(){ints,t,a,b;scanf("%d,%d",&a,&b);s=1;t=1;if(a<0)s=s+1;if(a>0)t=s+1;elseif(a==b)t=5;elset=2*s;printf("t=%d\n",t);}a>bB.a<b<0C.0<a<bD.0>a>b有以下程序:voidmain(){inta=0,b=0,c=0,d=0;if(a=1)b=1,c=2;elsed=3;printf("%d,%d,%d,%d\n",a,b,c,d);}程序输出结果为()A.0,1,2,0B.0,0,0,3C.1,1,2,0D.编译有错4)条件运算符:是唯一的三目运算符,格式为:表达式1?表达式2:表达式3注意是当非0时候是表达式2的数值,当为0时就是表达式3的数值。考试口诀:真前假后。5)switch语句:a)一定要注意有break和没有break的差别:没有break时候,只要有一个case匹配了,剩下的都要执行,有break则是直接跳出了switch语句。b)switch只可以和break一起用,不可以和continue用。第四章循环结构1)三种循环结构:a)for();while();do-while()三种。b)for循环当中必须是两个分号,千万不要忘记。c)写程序的时候一定要注意,循环一定要有结束的条件,否则成了死循环。d)do-while()循环的最后一个while();的分号一定不能够丢。(当心上机改错),do-while循环是至少执行一次循环。2)break和continue的差别记忆方法:break:是打破的意思,(破了整个循环)所以看见break就退出整个一层循环。continue:是继续的意思,(继续循环运算),但是要结束本次循环,就是循环体内剩下的语句不再执行,跳到循环开始,然后判断循环条件,进行新一轮的循环;即:结束本次循环,继续下一次循环。以下叙述中正确的是。A)break语句只能用于switch语句题中B)continue语句的作用是:使程序的执行流程跳出包含它的所有循环C)break语句只能用在循环体内和switch语句体内D)在循环体内使用break语句和continue语句的作用相同3)嵌套循环就是循环里面还有循环,这种比较复杂,要一层一层一步一步耐心的计算,一般记住两层是处理二维数组的。有以下程序:voidmain(){inti,n=0;for(i=2;i<5;i++){do{if(i%4+1)continue;n++;}while(!i);n++;}printf("n=%d\n",n);}程序执行后的输出结果是()A.n=5B.n=2C.n=3D.n=4【12】执行下面的程序后,a的值为().main(){inta,b;for(a=1,b=1;a<=100;a++){if(b>=20)break;if(b%3==1){b+=3;continue;}b-=5;}}A.7B.8C.9D.104)循环结构的复习循环结构是重点,笔试所占分值一般在13分左右,在上机考试中也是必考点,应用性很强。要求学员重点理解并多加练习,领会掌握。5)while((c=getchar())!=’\n’)和while(c=getchar()!=’\n’)的差别先看a=3!=2和(a=3)!=2的区别:(!=号的级别高于=号所以第一个先计算3!=2)第一个a的数值是得到的1;第二个a的数值是3。考试注意点:括号在这里的重要性。第五章函数函数:是具有一定功能的一个程序块;是C语言的基本组成单位。1)函数的定义、参数、调用和返回值(示意图):main(){inta=5,b=6,c;c=add(a,b);printf(“%d”,c);}调用函数:a,b是实参,整个函数得到一个数值就是,add函数的返回数值。intadd(intx,inty){intz;z=x+y;returnz;}被调用函数:x,y是形式参数函数返回数值是整型z就是这个add函数计算后得到的结果,就是函数返回给主程序的返回数值。程序是在从上往下顺序执行,当碰到了函数add后,把a,b的数值穿给调用函数,程序暂时中断等待返回数值。当得到了返回数值后,再顺序的往下执行2)一定要注意参数之间的传递实参和形参之间传数值,和传地址的差别。(考试的重点)传数值的话,形参的变化不会改变实参的变化。传地址的话,形参的变化就会有可能改变实参的变化。3)函数声明的考查:函数要“先定义后调用”,或“先声明再调用后定义”。函数的声明一定要有:函数名,函数的返回类型,函数的参数类型。不一定要有:形参的名称。4)函数的递归调用函数直接或间接地调用自己称为函数的递归调用。递归调用必须有一个明确的结束递归的条件。在做递归题时可把递归的步骤一步步写下来,不要弄颠倒了,会做简单递归题目即可。有以下程序#include<stdio.h>fun(intx){if(x/2>0)fun(x/2);printf(“%d”,x);}main(){fun(9);printf(“\n”);}程序运行后的输出结果是【12】5)要求掌握的库函数sqrt()算术平方根函数,fabs()绝对值函数,pow()幂函数,sin()正弦函数。第六章指针1)指针变量指针变量的本质是用来放地址,而一般的变量是放数值的。指针变量可指向任意一种数据类型,但不管它指向的数据占用多少字节,一个指针变量占用四个字节。2)指针变量的定义及初始化格式:类型名*指针变量名。指针变量在使用前必须要初始化,把一个具体的地址赋给它,否则引用时会有副作用,如果不指向任何数据就赋“空值”NULL。两种初始化方式:方法一:inta=2,*p=&a; (定义的同时初始化)方法二:inta=2,*p; (定义之后初始化)p=&a;&是取地址符,*是间接访问(取内容)运算符,它们是互逆的两个运算符。在指针变量名前加间接访问运算符就等价它所指向的量。指针变量是存放地址的。并且指向哪个就等价哪个,所有出现*p的地方都可以用它等价的代替。例如:inta=2,*p=&a;*p=*p+2;(由于*p指向变量a,所以指向哪个就等价哪个,这里*p等价于a,可以相当于是a=a+2)4)指针的运算*p++和(*p)++之间的差别:*p++是地址变化,(*p)++是指针变量所指的数据变化。一个指针变量加一个整数不是简单的数学相加,而是连续移动若干地址。当两个指针指向同一数组时,它们可以比较大小进行减法运算。若有语句:char*line[5];,以下叙述中正确的是()A.定义line是一个数组,每个数组元素是一个基类型为char的指针变量B.定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组C.定义line是一个指针数组,该句中*号称为间址运算符D.定义line是一个指向字符型函数的指针已定义以下函数intfun(int*p){ return*p;}fun函数的返回值是()A不确定的值 B.一个整数 C.形参p中存放值 D.形参p的地址值有以下程序voidswap(char*x,char*y){ chart; t=*x; *x=*y; *y=t;}main(){ char*s1=”abc”,*s2=”123”; swap(s1,s2); printf(“%s,%s\n”,s1,s2);}程序执行后的输出结果是()A.123,ABC B.ABC,123 C.1bc,a23 D.321,cba有以下程序main(){ inta=1,b=3,c=5; int*p1=&a,*p2=&b,*p=&c; *p=*p1**p2; printf(“%d\n”,c);}执行后的输出结果为()A.1 B.2 C.3 D.4第七章数组1一维数组的重要概念:对a[10]这个数组的讨论。1、a表示数组名,是第一个元素的地址,也就是元素a[0]的地址。2、a是地址常量,所以只要出现a++,或者是a=a+2赋值的都是错误的。3、a是一维数组名,所以它是列指针,也就是说a+1是跳一列。对a[3][3]的讨论。1、a表示数组名,是第一个元素的地址,也就是元素a[0][0]的地址。2、a是地址常量,所以只要出现a++,或者是a=a+2赋值的都是错误的。3、a是二维数组名,所以它是行指针,也就是说a+1是跳一行。4、a[0]、a[1]、a[2]也都是地址常量,不可以对它进行赋值操作,同时它们都是列指针,a[0]+1,a[1]+1,a[2]+1都是跳一列。5、注意a和a[0]、a[1]、a[2]是不同的,它们的基类型是不同的。前者是一行元素,后三者是一列元素。2、二维数组做题目的技巧:如果有a[3][3]={1,2,3,4,5,6,7,8,9}这样的题目。步骤一:把他们写成:第一列第二列第三列a[0]123—>第一行a[1]456—>第二行a[2]789—>第三行步骤二:按照以下方式理解:*(a[0]+1)我们就知道是第一行的第一个元素往后面跳一列,那么这里就是a[0][1]元素,所以是1。*(a[1]+2)我们就知道是第二行的第一个元素往后面跳二列。那么这里就是a[1][2]元素,所以是6。一定记住:只要是二维数组的题目,一定是写成如上的格式,再去做题目,这样会比较简单。3、数组的初始化,一维和二维的,一维可以不写,二维第二个一定要写inta[]={1,2}合法。inta[][4]={2,3,4}合法。但inta[4][]={2,3,4}非法。4、数组元素的引用数组元素的下标从0开始,到数组长度减1结束。所以inta[5];中数组最后一个元素是a[4]。要把数组元素看作一个整体,可以把a[4]当作一个整型变量。5、二维数组中的行指针inta[1][2];其中a现在就是一个行指针,a+1跳一行数组元素。搭配(*)p[2]指针a[0],a[1]现在就是一个列指针。a[0]+1跳一个数组元素。搭配*p[2]指针数组使用还有记住脱衣服法则:a[2]变成*(a+2),a[2][3]变成*(a+2)[3]再可以变成*(*(a+2)+3)这个思想很重要!若有定义语句:inta[3][6];,按在内存中存放顺序,a数组的第10个元素是()A.[0][4] B.a[1][3] C.a[0][3] D.a[1][4]若有定义语句:intm[]={5,4,3,2,1},i=4;,则下面对m数组元素的引用中错误的是()A.m[--i] B.m[2*2] C.m[m[0]] D.m[m[i]]第八章字符串【考点1】字符串常量及表示字符串常量是由双引号括起来的一串字符,如”ABC”。在存储字符串时,系统会自动在其尾部加上一个空值’\0’,空值也要占用一个字节,也就是字符串”ABC”需要占四个字节。【考点2】字符数组C语言没有字符串变量,只能采用字符数组来存储字符串。数组的大小应该比它将要实际存放的最长字符串多一个元素,从而存放’\0’。【考点3】字符串赋值可以用下面的形式进行赋值:charstr[]=”Hello!”;或char*p;p=”Hello!”;,但不能用下面的形式:charstr[10];str=”Hello”;因为str是一个地址常量,不能进行赋值操作。【考点4】字符串的输入与输出可以用scanf和printf函数,如scanf(”%s”,str);,也可用专门处理字符串的两个函数gets和puts函数,还可以对字符数组逐个元素进行赋值,但一定要在最后赋一个’\0’。使用gets函数可以接收空格,使用puts函数在最后输出一个换行。【考点5】字符串函数要掌握的四个字符串函数:字符串拷贝函数strcpy(),求字符串长度函数strlen(),字符串链接函数strcat(),字符串比较函数strcmp()。使用这些函数需在预处理部分包含头文件”string.h”。【考点6】strlen()函数和关键字sizeof例1:charstr[10]=”Hello”;sizeof(str)的值为10(数组长度),而strlen(str)的值为5(字符串长度)。例2:chara[]={‘a’,’b’,’c’};数组长度sizeof(a)为3,字符串长度不定。chara[5]={‘a’,’b’,’c’}数组长度sizeof(a)为5,字符串长度为3。【考点7】scanf函数和gets函数接收字符串的差异如果输入的是goodgoodstudy!那么scanf(“%s”,a);只接收good考点:不可以接收空格。gets(a);会接收goodgoodstudy!考点:可以接收空格。有以下程序#include<stdio.h>#include<string.h>main(){ charstr[][20]={“One*World”,”One*Dream!”},*p=str[1]; printf(“%d,”,strlen(p)); printf(“%s\n”,p);}程序运行后的输出结果是()A.9,One*World B.9,One*Dream C.10,One*Dream!D.10,One*World有以下函数intfun(char*s){ char*t=s; while(*t++); return(t-s);}该函数的功能是A.比较两个字符串的大小B.计算s所指字符串占用内存字节的个数C.计算s所指字符串的长度D.将s所指字符串复制到字符串t中有以下程序main(){ chars[]={”aeiou”},*ps; ps=s; printf(“%c\n”,*ps+4);}程序运行后的输出结果为()A.a B.e C.u D.元素s[4]的地址第九章文件【考点1】文件的基本知识文件由数据流构成,可以组成文本文件(也叫ASCII码文件)和二进制文件;对于同一数据而言,二进制格式的文件所需的存储空间比文本文件所需存储空间更小,且二进制文件访问速度快于文本文件。【考点2】文件的打开与关闭文件指针是一个指向结构体类型的指针,定义格式为:FILE*指针变量名(FILE*fp);在使用文件时,都需要先定义文件指针。文件的打开形式如下:FILE*fp;fp=fopen(“c:\\lab.c”,”rb”);fopen函数的前面一部分为文件名,后面一部分为文件的打开方式;识记常见的打开方式,其中r代表读,w代表写,a代表添加,b代表二进制方式。fclose(fp)将文件指针fp所指向的文件关闭。【考点3】文件函数判断文件结束feof函数,移动文件指针位置fseek函数,获得文件位置ftell函数,文件位置移到开头rewind函数,文件字符输入输出fgetc函数和fputc函数,文件输入输出fscanf函数和fprintf函数,文件字符串输入输出fgets函数和fputs函数,读写二进制文件fread函数和fwrite函数。以上函数要求知道格式会用,清楚是用于二进制文件还是文本文件,要把教材文件这章仔细复习下,不要在考试的时候把这些文件函数搞混了。下列关于文件的叙述中正确的是()A.文件由一系列数据依次排列,只能构成二进制文件B.文件由结构序列组成,可以构成二进制文件或文本文件C.文件由数据序列组成,可以构成二进制文件或文本文件D.文件由字符序列组成,其类型只能是文本文件有以下程序#include<stdio.h>main(){ FILE*fp; intk,n,a[6]={1,2,3,4,5,6}; fp=fopen(“d2.dat”,”w”); fprintf(fp,”%d%d%d\n”,a[0],a[1],a[2]); fprintf(fp,”%d%d%d\n”,a[3],a[4],a[5]); fclose(fp); fp=fopen(“d2.dat”,”r”); fscanf(fp,”%d%d”,&k,&n); printf(“%d%d\n”,k,n); fclose(fp);}程序运行后的输出结果是()A.12 B.14 C.1234 D.123456第十章对C语言的深入讨论【考点1】编译预处理凡以#开头的这一行,都是编译预处理命令行,编译预处理不加分号,不占运行时间。宏替换仅是简单的文本替换,如#definef(x)(x)*(x)和#definef(x)x*x替换f(2+2)时就有区别,前者展开为(2+2)*(2+2),后者为2+2*2+2。如果源文件f2.c中有#include”f1.c”可以理解为把源文件f1.c原样包含到f2.c中,使f1.c和f2.c融合到一起成为一个C程序编译。所以一个C程序必有主函数,但一个C源文件未必有主函数。【考点2】标识符作用域局部变量是在函数内或复合语句内定义的变量,作用域为定义它的函数内。局部变量有三种类型:自动auto,寄存器register和静态static。自动变量随着函数的使用与否创建消失;寄存器变量分配在cpu中,没有内存地址;静态变量占用固定存储单元,在程序执行过程不释放,直到程序运行结束。全局变量是在函数外定义的变量,作用域从定义它的位置到整个源文件结束为止,生存期为整个程序运行期间。全局变量都是静态变量。【考点3】动态存储分配malloc(size)用来创建连续size个字节存储区,返回值类型为void*型。malloc函数常用于动态创建链表结点,如int*p;p=(int*)malloc(sizeof(int));。calloc(n,size)创建n个同一类型的存储空间,可以理解为n个malloc。free(p)释放动态分配的存储单元。【考点4】main函数的参数和函数指针对于main(intargc,char**argv){}而言,只要掌握两个参数含义即可,即第一个参数是表示输入的字符串的数目,第二个参数是指向存放的字符串。函数指针知识点,会做书本140页的习题1、2、3即可。有以下程序main(){ intn=0,i; for(i=1;i<argc;i++) n=n*10+*argv[i]-‘0’; printf(“%d\n”,n);}编译链接生成可执行文件tt.exe。若运行时输入以下命令行tt12345678程序运行后的输出结果是()A.12 B.12345 C.12345678 D.136设有宏定义:#defineIsDIV(k,n)((k%n==1)?1:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论