C语言程序设计知识点及示例.docx
- 文档编号:11797023
- 上传时间:2023-04-02
- 格式:DOCX
- 页数:28
- 大小:36.27KB
C语言程序设计知识点及示例.docx
《C语言程序设计知识点及示例.docx》由会员分享,可在线阅读,更多相关《C语言程序设计知识点及示例.docx(28页珍藏版)》请在冰豆网上搜索。
C语言程序设计知识点及示例
四川大学锦江学院
C语言程序设计知识点及示例
知识点1:
除了复合语句而外,C语言的语句都以分号结束。
示例1:
C语言的简单语句(非复合语句语句)必须以 结束。
参考答案:
分号
知识点2:
目标程序和可执行程序都属于机器代码程序(即二进制的机器指令程序.),
但只有可执行程序才能被计算机直接执行。
C语言中的每条可执行语句最终都将被转换成二进制的机器指令.
示例2:
可以被直接执行的程序是。
A)源代码程序B)目标代码程序C)word文档程序D)可执行程序
参考答案:
D
示例3:
下列叙述中正确的是。
A)计算机能直接执行C语言源程序
B)C程序经C编译后生成后缀为.obj的文件可以直接运行
C)C语言中的每条可执行语句最终都将被转换成二进制的机器指令.
D)C程序经C编译后生成后缀为.obj的文件不是二进制文件
参考答案:
C
知识点3:
可执行程序的扩展名是“.exe”,目标程序的扩展名是“.obj”,C语言源程序的扩展名是“.c”。
示例4:
可执行程序的扩展名是 。
参考答案:
.exe
示例5:
目标程序的扩展名是 。
参考答案:
.obj
知识点4:
C语言程序总含有main函数,程序执行时,总是从main函数开始,在main函数结束。
函数可以嵌套调用
但不能嵌套定义.函数可以单独编译,但除main()函数外不能单独运行.每个函数(不包括main函数)都可以被其他函数
调用.
示例6:
C语言程序一定包含 函数。
参考答案:
main
示例7:
C语言程序运行时第一个被执行的函数是 函数。
参考答案:
main
示例8:
C语言程序执行时,如下叙述中正确的是 。
A)总是从main函数开始,在main函数结束
B)从main函数开始,在程序的最后一个函数中结束
C)从程序的第一个函数开始,在main函数结束
D)C语言中的函数不可以单独进行编译.
参考答案:
A
知识点5:
C语言一个语句可以写在多行上,也可以一行写多个语句。
示例9:
以下叙述中正确的是。
A)C程序书写格式严格,要求一行内只能写一个语句
B)C程序一个语句可以写在多行上
C)用C语言编写的程序一行最多只能写一个语句
D)前面都是错误的
参考答案:
B
知识点6:
C语言的标识符由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。
示例10:
按照C语言规定的用户标识符命名规则,标识符中 包含正负号。
参考答案:
不能
示例11:
按照C语言规定的用户标识符命名规则,下面 是标识符。
A)1a B)a$ C)_for D)-for
参考答案:
C
示例12:
下列定义变量的语句中正确的。
A)int1x;B)doublex1;C)char-xD)floatUS$;
参考答案:
B
知识点6:
在C语言源程序中,整常数可用以下三种形式表示:
十进制整数;八进制整数;十六进制整数。
不能表示二进制整数。
以0开头的数是八进制数;以0x开头的数是16进制数。
示例13:
以下选项中可作为C语言合法的整数常量的是 。
A)0xabgB)-0819C)-819D)x9a
参考答案:
C
示例14:
在C语言中,八进制整常数以 开头。
参考答案:
0
示例15:
在C语言中,十六进制整常数以 开头。
参考答案:
0x
示例16:
在C语言源程序中, 直接使用二进制数表示十进制数。
参考答案:
不能
知识点7:
在C语言的实型常数的指数表示法中,字母e(或E)之前必须有数字,且e后面的指数必须为整数。
示例17:
在C语言的实型常数的指数表示法中,字母e(或E)之前必须有数字,且e后面的指数必须为 。
参考答案:
整数
示例18:
以下选项中 是合法的C语言常量。
A)-80B)-08C)-1e6.0D)1.68e
参考答案:
A
知识点8:
在C语言中,以l或L结束的常整数为长整型常数。
示例19:
在C语言中,合法的长整型常数是 。
A)0LB)6uC)-0823D)0x16g
参考答案:
A
知识点9:
在C语言中,任何非零的数值被认作“真”,零值表示“假”。
示例20:
设有定义:
“intm=1,n=6;”,则以下选项中值为0的表达式是 。
A)(!
m==1)&&(!
n==6)B)(m C)m&&nD)m||n 参考答案: A 示例21: 设有定义: “inta=1,b=6,c=8;”,则以下选项中值为0的表达式是 。 A)(! a==6)&&(! b==0)B)a%b||1 C)a||b+c&&b-cD)c||(a++)/(++b) 参考答案: A 知识点10: 在C语言中,定义变量时可以为变量赋初值,但其初值应是常量表达式,不能包含变量。 示例22: 以下能正确定义且赋初值的语句是 。 A)intx=y=16;B)charch=98; C)inta=a+6;D)doublex=1.68e-8.0 参考答案: B 知识点11: 正确的赋值语句是赋值运算符‘=’右端为一个数值或正确的表达式,其左端为一个变量 示例23: 若以下选项中的变量a1,a2,a3,a4已正确定义,则正确的赋值的语句是 。 A)a1=26.8%3 ;B)1+2=a2;C)a3=0x79c;D)a4=2+2=5 ; 参考答案: C 知识点12: 字符常量的界定符为一对单引号,表示一个单字节字符,可以表示普通字符和转义字符。 示例24: 以下选项中不属于字符常量的是。 A)'\n'B)"A"C)'\xAC'D)'\063' 参考答案: B 知识点13: C语言的逻辑运算符两侧运算对象可以是任意合法的表达式。 示例25: 以下关于逻辑运算符两侧运算对象的叙述中正确的是。 A)只能是整数0或1B)只能是整数 C)可以是任意合法的表达式D)前面都是错误的 参考答案: C 知识点14: break语句可用于switch语句和循环体中,continue只能用于循环体中,用于结束本次循环。 示例26: continue只能用于 中。 参考答案: 循环体 示例27: 下列叙述正确的是 。 A)break语句只能用于switch语句 B)continue语句只能用于switch语句 C)break语句必须与switch语句中的case配对 D)break可用于switch语句和循环体中 参考答案: D 知识点15: 在C语言switch语句中,一般break语句需要case配对使用,但不使用break语句在语法上 也是正确的。 而且在switch语句中并不一定必须使用default 示例28: 下列叙述正确的是。 A)break语句只能用于循环体中,而且一次能跳出多层循环, B)break语句必须与switch语句中的case配对 C)在switch语句中必须使用default D)从语法上讲,switch语句中不包含break语句也是正确的 参考答案: D 知识点16: 指针变量不能被赋值为整型值。 只能被赋值为地址值。 另外必须是同维同类的二个指针变量 才能进行赋值运算(例如: 有定义inta[3]={1,2,3},*p;则p=&a;就是错误的.)另外数组名代表了数组的首地址 具有指针的概念,. 示例29: 若有定义语句 inta[3][2]={1,2,3,4,5,6}; int(*p)[2]=a; 则*(*(p+1)+1)的值是 。 A)3B)5C)6D)4 参考答案: D 示例30: 设已有定义: “floatx;”,则以下对指针变量p进行定义且赋初值的语句中正确的是 。 A)float*p=0x1024;B)float*p=(int)x+1; C)floatp=&x;D)float*p=&x; 参考答案: D 知识点17: 如果指针变量p指向x,则可用*p间接访问x。 示例31: 若有定义: “intx=18,*p=&x;”,则*p的值是 。 参考答案: 18 知识点18: 在定义数组时可为其赋初值,但初值的个数不能超过数组长度。 而在程序执行时 并不对数组元素的下标是否超出所定义的下标范围作安全性检查. 示例32: 下面正确定义一维数组的选项是 。 A)inta[2][4]={0,1,2,3,4,5,6,7,8};B)inta[2][3]={1,2,3,4,5,6}; C)inta[3,2]={1,2,3,4,5,6};D)chara[3]="abc"; 参考答案: B 知识点19: 在定义数组时,若赋的是全部初值(即全赋值的情况,不是部分赋值的情况.),则对一维数组 而言可省略数组长度的定义,而对二维数组而言则只可省略列行下标的长度定义,而决不能省略列下标的长度定义。 下列数组定义中错误的是 示例33: A)intX[][3]={0,1,2,3}B)intX[]={1,2,3,4,5,6} C)intX[][3]={1,2,3,4,5,6}D)intX[2][]={1,2,3,4,5,6} 参考答案: D 知识点20: 用typedef只是声明一个新的类型名来代替已有的类型名。 不是增加新类型.(已有的类型名仍可使用) 这样做通常可以增加程序的可读性.注意: typedef不能用来为变量说明一个新名. 一般使用格式为 typedwf已有的类型名新类型名;。 例如typedwffloatreal; 示例34: 设有以下语句: typedefstructDateType { intmonth; intday; intyear; }DATE; 则下面叙述中正确的是 。 A)不能用structDateType定义结构体变量 B)DATE是DateType这种结构体类型的变量 C)可以用DATE定义结构体变量 D)DATE是structDateType类型的变量 参考答案: C 示例35: 设有如下说明: typedefstructST { longa; intb; }NEW; 则下面叙述中正确的是。 A)以上的说明形式非法B)ST是一个结构变量 C)NEW是一个结构类型D)NEW是一个结构变量 参考答案: C 示例36: 使用typedef增加新类型。 参考答案: 不能 知识点21: 宏定义和文件包含都属于预处理命令,它们是对源程序编译之前做一些预处理,生成扩展C源程序,在源程序的一行上只能写一条预处理命令,都不占用程序运行时间。 其中宏定义是在对C源程序进行预处理(即预编译)时用宏体替换宏名. 例如: 有宏定义”#defineN179“表示在对C源程序进行预处理时将对源程序中所有出现标识符为N的宏名用宏体179来替换.示例36: 宏替换命令 程序的运行时间。 参考答案: 不占用 示例37: 以下叙述中正确的是 。 A)在源文件的一行上只能有一条预处理命令 B)宏名必须用小写字母表示 C)宏替换要占用程序的运行时间 D)前面都是错语的 参考答案: A 示例38: 若有如下程序 #include #defineCUBE1(X)X*X*X #defineCUBE2(X)(X)*(X)*(X) voidmain() {intk=2,m=1; printf(“%d”,CUBE1(k+m)); printf(“%d\n”,CUBE2(k+m)); } 则此程序的运行结果是。 A)77B)2727C)277D)727 参考答案: D 知识点22: 如到文件末尾,则函数feof的函数值为真 (1),否则函数值为假(0)。 示例39: 设fp为指向一二进制文件的指针,且还未读到此文件末尾,则函数feof(fp)的返回值为 。 A)EOFB)1C)0D)NULL 参考答案: C 示例40: 设fp为指向一二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为 。 参考答案: 1 知识点23: 用于二进制文件操作的数据块读写函数(fread()和fwrite())的函数调用“fread(buffer,size,count,fp);” 与“fwrite(buffer,size,count,fp);”中的buffer是指针,对fread来说,它是读入数据的存放地址,对fwrite来说, 是要输出数据的地址(均指起始地址)。 而用于文本文件操作的格式输出输入函数(fprintf()和fscanf())的函数 调用fprintf(fp,”格式控制字符串”,输出表项);和fscanf(fp,”格式控制字符串”,输入表项);其函数调用功能 fprintf函数是将”输出表项”按”格式控制字符串”的格式要求输出到fp所指的文件中.而fscanf函数是将 fp所指的文件中的数据按”格式控制字符串”的格式要求输入到对应的输入表项中. 示例41: 读取二进制文件的函数调用形式为“fwrite(buffer,size,count,pt);”,其中buffer是 。 A)一个文件指针B)一个内存块的首地址,表示读入数据存放的地址 C)一个内存块的字节数D)一个内存块的首地址,表示输出数据存放的地址 参考答案: D 示例42: 按某格式要求向一个文本文件输出数据的函数调用形式,例如为: fprintf(fp,”%s%d\n”,”wang”,98); 假如fp所指的文件名字为”data.txt”则函数调用后在文件”data.txt”中,数据的存入格式如 所示那样. Awang98B)wang,98 C)wang98D)wang 98 参考答案: A 知识点24: 函数返回值类型取决于定义函数时的函数首部所说明的函数类型。 示例43: 函数返回值类型取决于定义函数时的函数首部所说明的 。 参考答案: 函数类型 示例44: 在C语言中,函数返回值的类型与 相同。 A)函数原型中的函数类型B)return语句中表达式的类型 C)函数的实参类型D)函数的形参类型 参考答案: A 知识点25: 函数的实参与形参变量的作用域不用,并且占用不同的存储单元。 示例45: 函数的形参和实参分别占用 的存储单元 参考答案: 不同 知识点26: 两个整数相除,结果它们之商是整数。 示例46: 表达式9/2+5.6的值为 。 参考答案: 9.6 知识点27: 对于逻辑表达式,并不是所有的逻辑运算符都要被执行。 例如a&&b,只有a为真时,才需要判断b的值,又如a||b,只要a为真,就不必判断b的值。 如: inta=2,b=7,c=3,d,e;则执行d=(a%b==2)||c++;e=(a%b<2)&&c++;后d为1,e为0,c为3. 示例47: 已有定义“floatx=6;intn=8,k;”,执行“k=x||n++”以后,n的值为 。 参考答案: 8 示例48: 已有定义“intm=6,n=8,k;”,执行“k=! m&&--n”以后,n的值为 。 参考答案: 8 示例49: 有以下程序: #include intmain(void) { inta,b,c; a=2;b=3; c=(a/b<1)||(a%b>1); printf("%d%d%d\n",a,b,c); return0; } 运行结果是: 参考答案: 231 点评: 由于“a/b<1”为真,所以“(a/b<1)||(a%b>1)”也为真(值为1),所以c=1。 知识点28: 在定义数组时为其赋初始,如果实初值的个数少于数组元素个数,则未被赋初值的元素的值都取默认值0。 示例50: 设有定义语句: “inta[16]={18};”,则数组元素a[1]的值为 。 参考答案: 0 示例49: 设有定义语句: “inta[][3]={{5},{1},{8}};”,则数组元素a[0][2]的值为 。 参考答案: 0 知识点29: 对于“intn,*p=&n;”,则*p为p所指向变量n的值,&n为n的地址.scanf()函数的各输入表项应为地址表项 示例50: 对于“intn=9,*p=&n;”,则*p的值为 。 参考答案: 9 示例51: 已有定义“inta=0x1024;”,a的地址为0x1026,则&a= 。 参考答案: 0x1026 示例52: 若有说明语句: “float*q,b;”则能通过scanf函数正确给输入项b读入数据的程序段是。 A)*q=&b;scanf(“%f”,q);B)q=&b;scanf(“%f”,q); C)q=&b;scanf(“%f”,*p);D)q=&b;scanf(“%f”,b); 参考答案: B 示例53: 若有定义语句”intb,charc[10];“则下面给b输入整数值,给c输入字符串的输入语句中正确的是。 A)scanf(“%d%s”,&b,&c);B)scanf(“%d%s”,&b,c); C)scanf(“%d%s”,b,c);D)scanf(“%d%s”,b,&c); 参考答案: B 知识点30: 打开文件语句“fopen(文件名,使用文件方式);”,使用文件方式为字符串,对于打开文本文件,“r”表示(只读)为输入打开一个文本文件,“w”表示(只写)为输出打开一个文本文件,“a”表示(追加)向文本文件尾增加数据。 示例54: 设有定义: “FILE*fp;”,将以下打开文件的语句补充完整,以便为输出打开一个文本文件。 fp=fopen("test.txt", ); 参考答案: "w" 示例55: 设有定义: “FILE*fp;”,请将以下打开文件的语句补充完整,以便可以从文本文件data.txt中读出内容。 fp=fopen(" "," "); 参考答案: data.txtr 示例56: 以下程序建立一个名为test.txt的字符文件(文本文件),将从键盘输入的一行字符存入文件中。 请填空。 #include #include voidmain() { FILE*fp; charch; if((fp=fopen("test.txt",[1]))==NULL) { printf("Cannotopen! \n"); exit(0); } printf("Enterdata\n"); while((ch=getchar())! ='\n')fputc(ch,fp); fclose(fp); } 参考答案: [1]"w" 点评: 文件操作方式是字符串,注意"w"应用双引号括起来。 知识点31: malloc的函数原型为“void*malloc(unsignedintsize);”,一般使用格式为 “(基类型*)malloc(sizeof(基类型))”。 示例57: 已有指针定义“float*p;”,请写出完整的语句,利用malloc函数使p指向一个单精度实型动态存储单元 。 参考答案: p=(float*)malloc(sizeof(float)) 知识点32: 定义静态变量的关键字是static。 定义外部变量的关键字是extern. 示例58: 用于定义静态变量。 参考答案: static 知识点33: 每个枚举类型都必须进行类型的定义,定义时必须将其所有的标识符一一列举,采用enum关键字定义枚举类型。 示例59: 用于定义枚举类型。 参考答案: enum 知识点34: 对于逗号表达式“表达式1,表达式2”,先求解表达式1,再求解表达式2。 整个逗号表达式的值是表达式2的值。 逗号运算符的优先级最低。 示例60: 有如下程序: #include intmain(void) { inta=5,b=9; a=a*2,a+13; b=(2*b,1+b); printf("%d%d\n",a,b); return0; } 运行结果是: 参考答案: 1019 点评: 对于“a=a*2,a+13;”先计算“a=a*2”,再计算“a+13”,a的值为10;对于“b=(2*b,1+b);”,先计算“2*b”,再计算“1+b”,b的值为19。 知识点35: if语句嵌套时,else子句与if的匹配原则是: else总是和之前与其最近的且没有配过对的if配对。 编程时最好采用恰当的缩进格式。 例如: 示例61: 有如下程序: #include voidmain() { intx=16,y=30,z=40,u=80,v; if(x if(y>u)v=1; elseif(y>u)v=3; elsev=3; elsev=4; printf("%d\n",v); } 运行结果是: 参考答案: 3 点评: 上面程序ifelse结构缩进格式恰当,容易看出else与if的匹配关系,由于关系表达式“x 知识点35: switch语句执行时,首先计算switch的判断表达式,并以此值去依次找与之相等的case标号值,找到后就将流程转到该标号处,执行后面各语句,直到遇到break语句或switch语句结束为止。 示例59: 有如下程序: #include voidmain() { charn1=1,n2=2; inta=1,b=2; switch(n1) { case1: switch(n2) { case1: a++;break; case2: b++;break; case3: a++;b++;break; } case2: a++,++b;break; case3: ++b;++a;break; default: a++,b++;break; } printf("%d%d\n",a,b); } 运行结果是: 参考答案: 24 点评: 由于n1=1,所以外层switch语句将执行外层“case1”后的语句,由于n2=2,所以内层switch语句将执行内层“case2”后的语句,执行“b++;”后执行“break;”退出内层
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 知识点 示例