C语言.docx
《C语言.docx》由会员分享,可在线阅读,更多相关《C语言.docx(39页珍藏版)》请在冰豆网上搜索。
C语言
一、单选,共40题/每题2.0分/共80.0分:
∙1、以下叙述正确的是( )。
∙∙A、在C程序中,main函数必须位于程序的最前面
∙B、本程序的main函数开始,到本程序文件的最后一个函数结束
∙C、在C程序的每一行只能写一条语句
∙D、C语言程序至少有一个main函数
得分:
0.0
∙2、凡是函数中未指定存储类别的局部变量,隐含的存储类别为( )。
∙∙A、static
∙B、extern
∙C、register
∙D、auto
得分:
0.0
∙3、执行intx=2;x*=x+5;后a的值为( )
∙∙A、7
∙B、9
∙C、5
∙D、14
得分:
0.0
∙4、以下关于运算符优先顺序的描述中正确的是( )。
∙∙A、逻辑运算符<关系运算符<算术运算符<赋值运算符
∙B、算术运算符<关系运算符<赋值运算符<逻辑运算符
∙C、赋值运算符<逻辑运算符<关系运算符<算术运算符
∙D、关系运算符<算术运算符<赋值运算符<逻辑运算符
得分:
0.0
∙5、一个C程序的执行是从( )。
∙∙A、本程序的main函数开始,到main函数结束
∙B、本程序的第一个函数开始,到本程序最后一个函数结束
∙C、本程序的第一个函数开始,到本程序main函数结束
∙D、本程序的main函数开始,到本程序文件的最后一个函数结束
得分:
2.0
∙6、以下叙述中错误的是( )
∙∙A、do_while循环语句和while循环语句的程序执行方式都是相同的
∙B、循环语句嵌套必须是同类型的语句
∙C、循环语句嵌套可以是同类型的语句,也可以不同类型
∙D、循环体中不能再有循环语句
得分:
0.0
∙7、假定inti=3,j=4;执行语句:
printf("%d,%d,%d\n",i+++j,i,j);之后,其输出结果为:
( )。
∙∙A、7,4,4
∙B、7,3,4
∙C、8,4,4
∙D、7,3,5
得分:
0.0
∙8、若有下列程序段
char x[80];
scanf(“%s”,x);
printf(“%s”,x);
从键盘上输入字符串“zhangsan”,则输出结果为( )。
∙∙A、zhang
∙B、zhangsan
∙C、zhangsan
∙D、san
得分:
2.0
∙9、C语言中转义字符“反斜杠线”的表示方法正确的是( )。
∙∙A、”\”
∙B、\\
∙C、\\\
∙D、’\’
得分:
0.0
∙10、对宏定义的不正确描述( )
∙∙A、宏定义是用宏名代替一个字符串。
∙B、#define的作用范围,是整个源文件有效。
∙C、宏名可以在其它宏定义中引用,可以层层替换。
∙D、用双引号扩起来的字符串,即使与宏名相同,也不进行置换。
得分:
0.0
∙11、在说明语句:
int*f( );中,标识符f代表的是( )
∙∙A、一个用于指向函数的指针变量
∙B、一个用于指向一维数组的行指针
∙C、一个用于指向整型数据的指针变量
∙D、一个返回值为指针型的函数名
得分:
0.0
∙12、下面浮点型常量中,哪些是错误的( )
∙∙A、constfloat=2E-1
∙B、constfloatc=2.1e3
∙C、constdoubled=32.1
∙D、constdoublef=2.1e0.5
得分:
0.0
∙13、正确描述文件包含预处理的含义( )
∙∙A、执行文件
∙B、C源文件
∙C、一条包含命令可以包含多个文件
∙D、目标文件
得分:
0.0
∙14、对break语句的正确描述( )。
∙∙A、break语句可以带参数,也可以不带
∙B、break语句不能用于循环语句之外的语句
∙C、break语句在while语句中,立即终止执行while语句
∙D、break语句与continue语句功能相同
得分:
0.0
∙15、如果输入信息为:
1234567则执行语句:
scanf("%2d%2d",&x,&y);之后,x,y的值为( )
∙∙A、x为1234567,y为0
∙B、x为2,y为3
∙C、x为12,y为67
∙D、x为12,y为34
得分:
0.0
∙16、以下说法正确的是( )。
∙∙A、(int)x+y?
和(int)(x+y)是完全等价的表达式
∙B、C语言不允许类型的混合运算
∙C、'x'+5是一个错误的表达式
∙D、强制类型转换时,类型说明符必须加括号
得分:
0.0
∙17、设:
intg=2; 下列表达式的值,哪一个等于1?
( )。
∙∙A、g^=g
∙B、~g&1
∙C、~g&g
∙D、g>g
得分:
0.0
∙18、以下描述正确的是( )。
∙∙A、只能用continue语句中来终止本次循环
∙B、goto语句只能用于退缩出多层循环。
∙C、在循环语句中break语句不独立出现
∙D、switch语句中不能出现continue语句
得分:
2.0
∙19、执行下面程序之后,m的值为( )。
#includemain(){static=""int=""a[2][3]="{{1,2,3},{4,5,6}};"m;=""m="*(*(a+1)+1);"printf("%d",m);=""return=""0;}<=""div=""style="margin:
0px;padding:
0px;font-size:
14px;font-family:
PingFangSC-Light,"helveticaneue","hiraginosansgb",arial,"microsoftyaheiui","microsoftyahei",simsun,sans-serif;">
∙∙A、5
∙B、25
∙C、1
∙D、4
得分:
0.0
∙20、使用宏定义时,对宏定义不正确概念的描述( )。
∙∙A、宏名就是变量
∙B、根据宏名来实现忠实的替换
∙C、宏名可以是大写或者小写
∙D、宏名常用大写字母表示
得分:
2.0
∙21、若运行时给变量输入12,则以下程序的运行结果是( )。
main()
{intx,y;
scanf("%d",&x);
y=x>12?
x+10:
x-12;
printf("%d\n",y);
}
∙∙A、22
∙B、10
∙C、12
∙D、0
得分:
0.0
∙22、下面的四个选项中,均不是合法的用户标识符的选项是()。
∙∙A、BM_0Do
∙B、_123tempINT
∙C、float2ab_A
∙D、b-agotoint
得分:
0.0
∙23、若有说明 int(*p)[3]; 则以下正确的描述( )
∙∙A、(*p)[3]与*p[3]等价。
∙B、p是一个指针数组。
∙C、p是一个指针,它只能指向一个包含3个int类型元素的数组。
∙D、p是一个指针,它可以指向一个一维数组中的任意元素。
得分:
0.0
∙24、假设 intx[]={1,3,5,7,9,11},*ptr;ptr=x;以下那些是对数组元素的正确引用( )
∙∙A、*(ptr--)
∙B、x[6]
∙C、*(ptr++)
∙D、*(--ptr)
得分:
0.0
∙25、移位运算符”<<”的含义( )
∙∙A、从一个变量移动到另一个变量
∙B、移位运算符”<<”可以适合任意类型的数据
∙C、按二进位移位运算,限定为整型数据和字符型数据
∙D、按二进位移位运算,限定为整型数据
得分:
0.0
∙26、在“文件包含”预处理语句的使用形式中,当#include后面的文件名用""括起时,寻找被包含文件的方式是( )。
∙∙A、仅仅搜索源程序所在目录
∙B、直接按照系统设定的标准方式搜索目录
∙C、先在源程序所在目录搜索,再按照系统设定的标准方式搜索
∙D、仅仅搜索当前目录
得分:
0.0
∙27、已知ch是字符型变量,下面不正确的赋值语句是( )。
∙∙A、ch='7'+'9';
∙B、ch='a+b';
∙C、ch=5+9
∙D、ch='\0';
得分:
0.0
∙28、定义一个结构体类型拟包含两个成员,其中成员变量info用来存放整型数据,成员变量link是指向自身结构体的指针。
则下面的定义正确的是( )。
∙∙A、structnode{intinfo;structnodelink;};
∙B、structnode{intinfo;node*link;};
∙C、structnode{intinfo;structnode*link;};
∙D、structnode{intinfo;struct*link;};
得分:
0.0
∙29、在C语言程序中,表达式5%2的结果是( )。
∙∙A、1
∙B、3
∙C、2.5
∙D、2
得分:
2.0
∙30、设i,j,k均为int型变量,k初值为0,执行完下面的for循环后,k的值为( )。
∙∙A、8
∙B、10
∙C、9
∙D、7
得分:
0.0
∙31、语句int(*ptr)();的含义是( )。
∙∙A、ptr是指向一维数组的指针变量
∙B、ptr是指向int型数据的指针变量
∙C、ptr是指向函数的指针,该函数返回一个int型数据
∙D、ptr是一个函数名,该函数的返回值是指向int型数据的指针
得分:
0.0
∙32、下面有关for循环的正确描述是( )。
∙∙A、for循环只能用于循环次数已经确定的情况
∙B、for循环是先执行循环体语句,后判断表达式
∙C、for循环的循环体可以包括多条语句,但必须用花括号括起来
∙D、在for循环中,不能用break语句跳出循环体
得分:
0.0
∙33、设intx=1,y=1;表达式(!
x++||y--)的值是( )。
∙∙A、0
∙B、1
∙C、-1
∙D、2
得分:
0.0
∙34、对于int*p;inta[];p=a;的合法运算( )
∙∙A、++p;相当于a[1];
∙B、a++;
∙C、p=a;p++;相当于a++;
∙D、若p中的地址为100则p++;运算后,则其值为100
得分:
2.0
∙35、有输入语句:
scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);为使变量a,b,c的值分别为1,3,2,从键盘上输入数据的正确形式应当是( )
∙∙A、1,3,2〈回车〉
∙B、a=1b=3c=a<回车>
∙C、a=1,b=3,c=2〈回车〉
∙D、132〈回车〉
得分:
0.0
∙36、对宏定义的不正确描述( )。
∙∙A、#define的作用范围,是整个源文件有效
∙B、用双引号扩起来的字符串,即使与宏名相同,也不进行置换。
∙C、宏定义是用宏名代替一个字符串
∙D、宏名可以在其它宏定义中引用,可以层层替换
得分:
2.0
∙37、若有定义:
int(*p)[4];则标识符p( )。
∙∙A、是一个指向整型变量的指针
∙B、定义不合法
∙C、是一个指针数组名
∙D、是一个指针,它指向一个含有四个整型元素的一维数组
得分:
0.0
∙38、执行语句"x=(a=3,b=a--)"后,x,a,b的值依次为( )。
∙∙A、3,3,2
∙B、3,2,3
∙C、3,2,2
∙D、2,3,2
得分:
0.0
∙39、宏定义#definePI3.1416中,定义PI为()。
∙∙A、单精度数
∙B、字符串
∙C、双精度数
∙D、常量
得分:
0.0
∙40、设fp为指向某二进制文件的指针,且已经读到此文件末尾,则函数feof(fp)的返回值为()。
∙∙A、非0值
∙B、NULL
∙C、0
∙D、EOF
得分:
2.0
41、下面四个选项中,均是合法的浮点数的选项是( )。
∙A、123e 1.2e-.4 +2e-1
∙B、-.60 12e-4 -8e5
∙C、+1e+1 5e-9.4 03e2
∙D、-e3 .8e-4 5.e-0
得分:
2.0
42、以下描述正确的是( )
∙A、break语句只能用于if语句。
∙B、continue语句只能用于switch语句。
∙C、switch语句中不能出现continue语句。
∙D、continue语句只结束本次循环。
43以下程序段的作用是( )。
inta[]={4,0,2,3,1},i,j,t;
for(i=1;i<5;i++)
{t=a[i];j=i-1;
while(j>=0&&t>a[j])
{a[j+1]=a[j];j--;}
a[j+1]=t;
}
∙A、对数组a进行选择排序(降序)
∙B、对数组a进行插入排序(升序)
∙C、对数组a进行插入排序(降序)
∙D、对数组a进行选择排序(升序)
二、判断,共10题/每题2.0分/共20.0分:
∙41、函数的实参传递到形参有两种方式值传递和地址传递。
( )
∙∙A、正确
∙B、错误
得分:
2.0
∙42、在多层循环中,一个break语句只向外跳一层。
( )
∙∙A、正确
∙B、错误
得分:
2.0
∙43、在对数组全部元素赋初值时,不可以省略行数,但能省略列数。
( )
∙∙A、正确
∙B、错误
得分:
0.0
∙44、在函数中,只有当实参和与其对应的形参同名时才共占用存储单元。
∙∙A、正确
∙B、错误
得分:
0.0
∙45、不允许把一个数值或字符赋予指针变量。
( )
∙∙A、正确
∙B、错误
得分:
2.0
∙46、程序中若要使用数学函数应该包含头文件”math.h”。
( )
∙∙A、正确
∙B、错误
得分:
2.0
∙47、直接访问就是直接利用变量的地址进行存取直接访问。
( )
∙∙A、错误
∙B、正确
得分:
0.0
∙48、C语言的三种循环不可以互相嵌套。
( )
∙∙A、正确
∙B、错误
得分:
0.0
∙49、语句int(*ptr)( );的含义是指向函数的指针,该函数返回一个int型数据。
∙∙A、正确
∙B、错误
得分:
2.0
∙50、for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来。
∙∙A、错误
∙B、正确
得分:
0.0
44、用字符串方式赋值比用字符逐个赋值要多占一个字节,用于存放字符串结束标志’\0’。
( )
∙A、正确
∙B、错误
46、一个C源程序可由一个或多个函数组成。
∙A、错误
∙B、正确
∙1、假设 intx[]={1,3,5,7,9,11},*ptr;ptr=x;以下那些是对数组元素的正确引用( )
∙∙A、*(ptr++)
∙B、x[6]
∙C、*(--ptr)
∙D、*(ptr--)
得分:
2.0
∙2、凡是函数中未指定存储类别的局部变量,其隐含的存储类别为( )。
∙∙A、static
∙B、register
∙C、auto
∙D、extern
得分:
2.0
∙3、对于int*p;inta[];p=a;的合法运算( )
∙∙A、++p;相当于a[1];
∙B、a++;
∙C、若p中的地址为100则p++;运算后,则其值为100
∙D、p=a;p++;相当于a++;
得分:
2.0
∙4、正确描述文件包含预处理的含义( )
∙∙A、C源文件
∙B、一条包含命令可以包含多个文件
∙C、执行文件
∙D、目标文件
得分:
2.0
∙5、以下描述正确的是( )
∙∙A、continue语句只能用于switch语句。
∙B、switch语句中不能出现continue语句。
∙C、continue语句只结束本次循环。
∙D、break语句只能用于if语句。
得分:
2.0
∙6、移位运算符”<<”的含义( )
∙∙A、按二进位移位运算,限定为整型数据
∙B、从一个变量移动到另一个变量
∙C、按二进位移位运算,限定为整型数据和字符型数据
∙D、移位运算符”<<”可以适合任意类型的数据
得分:
0.0
∙7、执行语句"x=(a=3,b=a--)"后,x,a,b的值依次为( )。
∙∙A、3,2,3
∙B、3,3,2
∙C、2,3,2
∙D、3,2,2
得分:
2.0
∙8、在“文件包含”预处理语句的使用形式中,当#include后面的文件名用""括起时,寻找被包含文件的方式是( )。
∙∙A、直接按照系统设定的标准方式搜索目录
∙B、仅仅搜索源程序所在目录
∙C、仅仅搜索当前目录
∙D、先在源程序所在目录搜索,再按照系统设定的标准方式搜索
得分:
2.0
∙9、下面有关for循环的正确描述是( )。
∙∙A、for循环的循环体可以包括多条语句,但必须用花括号括起来
∙B、for循环只能用于循环次数已经确定的情况
∙C、for循环是先执行循环体语句,后判断表达式
∙D、在for循环中,不能用break语句跳出循环体
得分:
2.0
∙10、执行下面程序之后,m的值为( )。
#includemain(){static=""int=""a[2][3]="{{1,2,3},{4,5,6}};"m;=""m="*(*(a+1)+1);"printf("%d",m);=""return=""0;}<=""div=""style="margin:
0px;padding:
0px;font-size:
14px;font-family:
PingFangSC-Light,"helveticaneue","hiraginosansgb",arial,"microsoftyaheiui","microsoftyahei",simsun,sans-serif;user-select:
text!
important;">
∙∙A、25
∙B、5
∙C、1
∙D、4
得分:
0.0
∙11、凡是函数中未指定存储类别的局部变量,隐含的存储类别为( )。
∙∙A、extern
∙B、static
∙C、auto
∙D、register
得分:
2.0
∙12、如果inta=0x3;intb=0x2;执行运算:
a<<=b;则x的结果是( )。
∙∙A、1
∙B、11
∙C、0
∙D、48
得分:
0.0
∙13、以下描述正确的是( )。
∙∙A、switch语句中不能出现continue语句
∙B、goto语句只能用于退缩出多层循环。
∙C、在循环语句中break语句不独立出现
∙D、只能用continue语句中来终止本次循环
得分:
0.0
∙14、若fp已正确定义为一个文件指针,d1.dat为二进制文件,为“读”而打开此文件的语句是()。
∙∙A、fp=fopen("d1.dat","rb");
∙B、fp=fopen("d1.dat","r+");
∙C、fp=fopen("d1.dat","w");
∙D、fp=fopen("d1.dat","r");
得分:
0.0
∙15、对宏定义的不正确描述( )
∙∙A、#define的作用范围,是整个源文件有效。
∙B、用双引号扩起来的字符串,即使与宏名相同,也不进行置换。
∙C、宏定义是用宏名代替一个字符串。
∙D、宏名可以在其它宏定义中引用,可以层层替换。
得分:
0.0
∙16、有输入语句:
scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);为使变量a,b,c的值分别为1,3,2,从键盘上输入数据的正确形式应当是( )
∙∙A、1,3,2〈回车〉
∙B、132〈回车〉
∙C、a=1,b=3,c=2〈回车〉
∙D、a=1b=3c=a<回车>
得分:
2.0
∙17、以下说法正确的是( )。
∙∙A、(int)x+y?
和(int)(x+y)是完全等价的表达式
∙B、强制类型转换时,类型说明符必须加括号
∙C、C语言不允许类型的混合运算
∙D、'x'+5是一个错误的表达式
得分:
0.0
∙18、若有定义:
int(*p)[4];则标识符p( )。
∙∙A、定义不合法
∙B、是一个指针,它指向一个含有四个整型元素的一维数组
∙C、是一个指向整型变量的指针
∙D、是一个指针数组名
得分:
2.0
∙19、若有说明 int(*p)[3]; 则以下正确的描述( )
∙∙A、(*p)[3]与*p[3]等价。
∙B、p是一个指针,它可以指向一个一维数组中的任意元素。
∙C、p是一个指针,它只能指向一个包含3个int类型元素的数组。
∙D、p是一个指针数组。
得分:
0.0
∙20、下面四个选项中,均是合法的浮点数的选项是( )。
∙∙A、123e 1.2e-.4 +2e-1
∙B、-e3 .8e-4 5.e-0
∙C、+1e+1 5e-9.4 03e2
∙D、-.60 12e-4 -8e5
得分:
2.0
∙21、一个C程序的执行是从( )。
∙∙A、本程序的main函数开始,到本程序文件的最后一个函数结束
∙B、本程序的main函数开始,到main函数结束
∙C、本程序的第一个函数开始,到本程序最后一个函数结束
∙D、本程序的第一个函数开始,到本程序main函数结束
得分:
0.0
∙22、如果输入信息为:
1234567则执行语句:
scanf("%2d%2d",&x,&y);之后,x,y的值为( )
∙∙A、x为1234567,y为0
∙B、x为12,y为34
∙C、x为12,y为67
∙D、x为2,y为3
得分:
2.0
∙23、定义一个结构体类型拟包含两个成员,其中成员变量info用来存放整型数据,成员变量link是指向自身结构体的指针。
则下面的定义正确的是( )。
∙∙A、structnode{intinf