二、C语言程序设计的高频考点特训
(一)C语言慨述
【考点1】C语言基础知识
1.C语言的构成
(1)源程序由函数构成,每个函数完成相对独立的功能。
(2)每个源程序中必须有且只能有一个主函数,可以放在任何位置,但程序总是从主函数开始执行。
(3)函数体:在函数后面用一对花括号括起来的部分。
(4)每个语句以分号结束,但预处理命令、函数头之后不能加分号。
(5)注释:括在“/*”与“*/”之间,没有空格,允许出现在程序的任何位置。
(6)预处理命令:以“#”开头的语句。
2.C程序的生成过程
(1)C程序是先由源文件经编译生成目标文件,然后经过连接生成可执行文件。
(2)源程序的扩展名为.c,目标程序的扩展名为.obj,可执行程序的扩展名为.exe。
【考点2】常量、变量和数据类型
1.标识符
(1)标识符的命名规则。
●只能由字母、数字或下划线组成。
●第一个字符必须是字母或下划线,不能是数字。
●区分字母的大小写。
(2)标识符的分类。
C语言的标识符可以分为3类。
①关键字:C语言规定的专用的标识符,它们有着固定的含义,不能更改。
②预定义标识符:和“关键字”一样也有特定的含义。
③用户标识符:由用户根据需要定义的标识符。
●命名应注意做到“见名知义”。
●不能与关键字相同。
2.常量
定义:在程序运行中,其值不能被改变的量。
常量的类型:整型常量、实型常量、字符常量、字符串常量和符号常量。
(1)整型常量。
①表示形式:十进制整型常量、八进制整型常量和十六进制整型常量。
②书写形式。
●十进制整型常量:基本数字范围为0~9。
●八进制整型常量:以0开头,基本数字范围为0~7。
●十六进制整型常量:以0x开头,基本数字范围为0~15,其中10~15写为A~F或a~f。
(2)实型常量。
①表示形式:小数形式和指数形式。
②书写形式。
●十进制小数形式:小数点两边必须有数字。
●指数形式:e前必须有数字,e后必须为整数。
(3)字符常量。
一个字符常量代表ASCII码字符集里的一个字符,在程序中用单撇号括起来,区分大小写。
特殊的字符常量:即转义字符。其中“\”是转义的意思,后面跟不同的字符表示不同的意思。
●\n:换行。
●\\:反斜杠字符“\”。
●\ddd:1~3位八进制数所代表的一个ASCII字符。
●\xhh:1~2位十六进制数所代表的一个ASCII字符。
(4)字符串常量。
字符串常量是用双撇号括起来的一个或一串字符。
(5)符号常量(无)。
符号常量是由预处理命令“#define”定义的常量,在C程序中可用标识符代表一个常量。
3.变量
定义:值可以改变的量。
●变量要有变量名,在使用前必须先定义。
●在内存中占据一定的存储单元,不同类型的变量其存储单元的大小不同。
●存储单元里存放的是该变量的值。
变量的类型:整型变量、实型变量、字符变量。
(1)整型变量。
①分类:基本型(int)、短整型(short int 或short)、长整型(long int 或 long)和无符号型(unsigned int,unsigned short,unsigned long)。
②数值范围。
整型[signed]int,占16位;短整型[signed]short[int],占16位;长整型[signed]long[int],占32位;无符号整型 unsigned[int],占16位;无符号短整型 unsigned short[int],占16位;无符号长整型unsigned long[int],占32位。
(2)实型变量。
①分类:单精度类型(float)和双精度类型(double)。
②定义方法:float a;,double m;。
③所占字节:float 型在内存中占4个字节(32位),double型占8个字节(64位)。单精度实数提供7位有效数字,双精度实数提供15~16位有效数字。
④实型常量:不分float型和double型,一个实型常量可以赋给一个float型或double型变量,但变量根据其自身类型截取实型常量中相应的有效数字。
(3)字符变量。
①作用:用来存放字符常量。
②定义:用关键字char定义,每个字符变量中只能存放一个字符。
③定义形式:char cr1,cr2;。
④赋值:cr1='m',cr2='n';。
⑤存储方法:存储字符对应的ASCII码到内存单元中。
●字符型数据与整型数据之间可以通用,一个字符能用字符的形式输出,也能用整数的形式输出。
●字符数据进行算术运算,相当于对它们的ASCII码进行运算。
4.类型的自动转换和强制转换
(1)类型的自动转换。
①当同一表达式中各数据的类型不同时,编译程序会自动把它们转变成同一类型后再进行计算。
②转换优先级为:char <int <float <double,即左边级别“低”的类型向右边转换。
③在做赋值运算时,若赋值号左右两边的类型不同,则赋值号右边的类型向左边的类型转换;当右边的类型高于左边的类型时,则在转换时对右边的数据进行截取。
(2)类型的强制转换。
表示形式:(类型)(表达式);
真题演练
(1)以下叙述中错误的是( )。
A)使用3种基本结构构成的程序只能解决简单问题
B)结构化程序由顺序、分支、循环3种基本结构组成
C)C语言是一种结构化程序设计语言
D)结构化程序设计提倡模块化的设计方法
(2)以下关于结构化程序设计的叙述中正确的是( )。
A)结构化程序使用GOTO语句会很便捷
B)在C语言中,程序的模块化是利用函数实现的
C)一个结构化程序必须同时由顺序、分支、循环3种结构组成
D)由3种基本结构构成的程序只能解决小规模的问题
(3)计算机能直接执行的程序是( )。
A)源程序
B)目标程序
C)汇编程序
D)可执行程序
(4)以下选项中关于程序模块化的叙述错误的是( )。
A)可采用自底向上、逐步细化的设计方法把若干独立模块组装成所要求的程序
B)把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块
C)把程序分成若干相对独立的模块,可便于编码和调试
D)可采用自顶向下、逐步细化的设计方法把若干独立模块组装成所要求的程序
(5)以下叙述中错误的是( )。
A)C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令
B)C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件
C)用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中
D)C语言源程序经编译后生成后缀为.obj的目标程序
(6)下列叙述中错误的是( )。
A)C程序可以由多个程序文件组成
B)一个C语言程序只能实现一种算法
C)C程序可以由一个或多个函数组成
D)一个C函数可以单独作为一个C程序文件存在
(7)以下4个程序中,完全正确的是( )。
A)#include <stdio.h>
main();
{/*/programming /*/printf("programming! \n");}
B)#include <stdio.h>
main()
{/* programming */printf("programming! \n");}
C)#include <stdio.h>
main()
{/*/*programming*/*/printf("programming! \n");}
D)include <stdio.h>
main()
{/* programming */printf("programming! \n");}
(8)对于一个正常运行的 C 程序,以下叙述中正确的是( )。
A)程序的执行总是从main函数开始,在程序的最后一个函数中结束
B)程序的执行总是从程序的第一个函数开始,在main函数结束
C)程序的执行总是从main函数开始
D)程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束
(9)以下叙述中正确的是( )。
A)C语言规定必须用main作为主函数名,程序将从此开始执行
B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行
C)C语言程序将从源程序中的第一个函数开始执行
D)main的各种大小写拼写形式都可以作为主函数名,如MAIN、Main等
(10)以下叙述中错误的是( )。
A)算法正确的程序可以有零个输入
B)算法正确的程序最终一定会结束
C)算法正确的程序可以有零个输出
D)算法正确的程序对于相同的输入一定有相同的结果
(11)以下叙述中正确的是( )。
A)C语句必须在一行内写完
B)C程序中的每一行只能写一条语句
C)C语言程序中的注释必须与语句写在同一行
D)简单C语句必须以分号结束
(12)以下叙述中正确的是( )。
A)用C语言编写的程序只能放在一个程序文件中
B)C程序书写格式严格,要求一行内只能写一个语句
C)C程序中的注释只能出现在程序的开始位置和语句的后面
D)C程序书写格式自由,一个语句可以写在多行上
(13)以下关于C语言的叙述中正确的是( )。
A)C语言的数值常量中夹带空格不影响常量值的正确表示
B)C语言中的变量可以在使用之前的任何位置进行定义
C)在C语言算术表达式的书写中,运算符两侧的运算数类型必须一致
D)C语言中的注释不可以夹在变量名或关键字的中间
(14)下列叙述中错误的是( )。
A)C程序可以由多个程序文件组成
B)一个C语言程序只能实现一种算法
C)C程序可以由一个或多个函数组成
D)一个C函数可以单独作为一个C程序文件存在
(15)C语言源程序名的后缀是( )。
A).C
B).exe
C).obj
D).cp
(16)下列叙述中正确的是( )。
A)C程序中所有函数之间都可以相互调用
B)C程序中main函数的位置是固定的
C)在C程序的函数中不能定义另一个函数
D)每个C程序文件中都必须要有一个main函数
(17)以下叙述中正确的是( )。
A)C语言函数可以嵌套调用,例如:fun(fun(x))
B)C语言程序是由过程和函数组成的
C)C语言函数不可以单独编译
D)C语言中除了main函数外,其他函数不可作为单独文件形式存在
(18)有以下程序:
#include <stdio.h>
main()
{
int a=0,b=0;
/* 给a赋值 a=10;b=20;给b赋值 */
printf("a+b=%d\n",a+b);
/* 输出计算结果 */
}
程序的运行结果是( )。
A)出错
B)a+b=30
C)a+b=10
D)a+b=0
(19)以下叙述中错误的是( )。
A)C程序在运行过程中的所有计算都以二进制方式进行
B)C程序在运行过程中的所有计算都以十进制方式进行
C)所有C程序都需要编译链接无误后才能运行
D)C程序中字符变量存放的是字符的ASCII码值
(20)以下选项中不合法的标识符是( )。
A)&a
B)FOR
C)print
D)_00
(21)按照C语言规定的用户标识符命名规则,不能出现在标识符中的是( )。
A)大写字母
B)下划线
C)数字字符
D)连接符
(22)以下选项中,能用作用户标识符的是( )。
A)_0_
B)8_8
C)void
D)unsigned
(23)下列定义变量的语句中错误的是( )。
A)int _int;
B)double int_;
C)char For;
D)float US$;
(24)以下选项中,不合法的C语言用户标识符是( )。
A)a_b
B)AaBc
C)a--b
D)_1
(25)阅读以下程序:
#include <stdio.h>
main()
{ int case ;
float printF;
printf("请输入2个数:");
scanf("%d %f",&case,&printF);
printf("%d %f\n",case,printF);
}
该程序在编译时产生错误,其出错原因是( )。
A)定义语句出错,case是关键字,不能用作用户自定义标识符
B)定义语句出错,printF不能用作用户自定义标识符
C)定义语句无错,scanf不能作为输入函数使用
D)定义语句无错,printf不能输出case的值
(26)以下选项中合法的标识符是( )。
A)1__
B)1-1
C)1_1
D)_11
(27)以下选项中能表示合法常量的是( )。
A)1,200
B)1.5E2.0
C)'\'
D)"\007"
(28)以下选项中不能作为C语言合法常量的是( )。
A)0.1e+6
B)'cd'
C)"\a"
D)'\011'
(29)以下选项中关于C语言常量的叙述错误的是( )。
A)经常被使用的变量可以定义成常量
B)常量分为整型常量、实型常量、字符常量和字符串常量
C)常量可分为数值型常量和非数值型常量
D)所谓常量,是指在程序运行过程中,其值不能被改变的量
(30)以下不合法的数值常量是( )。
A)8.0E0.5
B)1e1
C)011
D)0xabcd
(31)以下选项中不能用作C程序合法常量的是( )。
A)123
B)'\123'
C)1,234
D)"\x7D"
(32)以下选项中,值为1的表达式是( )。
A)1-'0'
B)1-'\0'
C)'1'-0
D)'\0'-'0'
(33)以下选项中,合法的一组C语言数值常量是( )。
A)12.0Xa23 4.5e0
B)028.5e-3-0xf
C).177 4e1.5 0abc
D)0x8A 10,000 3.e5
(34)以下选项中能用作数据常量的是( )。
A)115L
B)0118
C)1.5e1.5
D)o115
(35)C源程序中不能表示的数制是( )。
A)十六进制
B)八进制
C)十进制
D)二进制
(36)以下选项中可用作C程序合法实数的是( )。
A)3.0e0.2
B).1e0
C)E9
D)9.12E
(37)在下列定义语句中,编译时会出现编译错误的是( )。
A)char a='\x2d';
B)char a='\n';
C)char a='a';
D)char a="aa";
(38)以下不合法的字符常量是( )。
A)'\\'
B)'\"'
C)'\018'
D)'\xcc'
(39)已知大写字母 A 的 ASCII 码值是65,小写字母 a 的ASCII码值是97。下列不能将变量c中的大写字母转换为对应小写字母的语句是( )。
A)c=('A'+c)%26-'a'
B)c=c+32
C)c=c-'A'+'a'
D)c=(c-'A')%26+'a'
(40)以下能正确定义字符串的语句是( )。
A)char str="\x43";
B)char str[]="\0";
C)char str='';
D)char str[]={ '\064'};
(41)以下关于字符串的叙述中正确的是( )。
A)空串比空格打头的字符串小
B)两个字符串中的字符个数相同时才能进行字符串大小的比较
C)可以用关系运算符对字符串的大小进行比较
D)C语言中有字符串类型的常量和变量
(42)以下正确的字符串常量是( )。
A)"\\\"
B)'abc'
C)Olympic Games
D)""
(43)以下定义语句中正确的是( )。
A)int a=b=0;
B)char A=65+1,b='b';
C)float a=1,*b=&a,*c=&b;
D)double a=0.0; b=1.1;
(44)以下关于 C 语言数据类型使用的叙述中错误的是( )。
A)若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型
B)若要保存带有多位小数的数据,可使用双精度类型
C)若只处理“真”和“假”两种逻辑值,应使用逻辑类型
D)整数类型表示的自然数是准确无误差的
(45)有以下程序:
#include <stdio.h>
main()
{ int s,t,A=10; double B=6;
s=sizeof(A); t=sizeof(B);
printf("%d,%d\n",s,t);
}
在VC 6.0平台上编译运行,程序运行后的输出结果是( )。
A)10,6
B)4,4
C)2,4
D)4,8
(46)有以下程序:
#include <stdio.h>
int fun1(double a)
{
return(int)(a*=a);
}
int fun2(double x,double y)
{
double a=0,b=0;
a=fun1(x);
b=fun1(y);
return(int)(a+b);
}
main()
{
double w;
w=fun2(1.1,2.0);
printf("%4.2f",w);
}
程序执行后的输出结果是( )。
A)0.0
B)5
C)5.21
D)5.00