2065 438+2002年9月二级C语言真题
一、多项选择题
1的执行。c语言程序总是以。
a)程序中的第一个可执行语句
程序中的第一个函数
c)主要功能
d)在文件中包含第一个函数。
解析:在一个C语言源程序中,无论主函数是写在程序的前面还是后面,程序的执行总是从主函数开始,到主函数结束。
这个问题的正确答案是c。
2.下面的陈述是正确的。
A) C程序编写,不区分大小写字母。
b)写C程序时,一行只能写一条语句。
C)写C程序时,一条语句可以写几行。
d)写C程序时,每行必须有行号。
解析:C语言严格区分大小写字母,如“A1”和“a1”,认为是两种不同的标识符。C程序的编写非常灵活,可以是一行多句,一句多行,每行不加行号。
这个问题的正确答案是c。
3.以下对C语言特点的描述不正确。
A) C语言具有高级语言和低级语言的双重特点,执行效率高。
B) C语言既可以用来编写应用程序,也可以用来编写系统软件。
C)C语言的可移植性差。
C语言是一种结构化的模块化编程语言。
分析:C语言是介于汇编语言和高级语言之间的一种语言。由于可以直接访问物理地址和操作硬件,C语言不仅可以编写应用程序,还可以开发系统软件。而且C程序比汇编语言可移植性强,程序清晰,模块化。
这个问题的正确答案是c。
4.C语言源程序的最小单位是。
a)程序行b)语句c)函数d)字符
解析:程序行、语句、函数都是由字符组成的,字符是C语言的最小单位。
这个问题的正确答案是d。
5.下列四项中,属于C语言的关键字是。
a)字符B)定义C)无符号D)返回
解析:C语言有32个关键字(或保留字),都有特定的含义,由小写字母组成,所以选项A是错的,选项B不是保留字,选项D是return的拼写错误。
这个问题的正确答案是c。
6.十进制数2403被转换成十六进制数。
A) 963 B) 369 C) 953 D) 359
解析:十进制数转化为十六进制数的方法是:除以16直到商0,将余数向后取。
这个问题的正确答案是a。
7.二进制数00110101转换成八进制数。
A) 055 B) 065 C) 056 D) 152
解析:二进制数转化为八进制数的方法是:从右向左除,将每3位二进制数写成1位八进制数。
这个问题的正确答案是b。
8.将二进制数101011.011转换成十进制数是。
a)91.75 B)91.375 C)91.125D)91.25
解析:二进制数转化为十进制数的方法是:将每个数乘以重量,然后相加。问题的整数部分是:(101111)2 = 1×26+1×24+1×23+65438。小数部分为:(0.011)2 = 0×2-1×2-2+1×2-3 = 0.25+0.125 = 0.375。
这个问题的正确答案是b。
9.计算机内部操作中使用的数字是。
a)十进制数b)十六进制数c)二进制数d)八进制数
解析:现实生活中,我们找不到有十个稳定态的物理分量,但有两个稳定态的分量却随处可见。比如,一个开关有通电和断电两种稳定状态,计算机内部的元件通电用“1”,断电用“0”,所以计算机内部运算用的数都是二进制数。至于八进制数和十六进制数,是二进制数的人工缩写。
这个问题的正确答案是c。
10.一个字的二进制位数是。
A) 2个字节,即16位B) 3个字节,即24位C) 4个字节,即32位D)因计算机系统不同而异。
解析:1个二进制位也叫1位,8个二进制位叫1字节,即字节与位之间有固定的转换关系,但在计算机中字长与字节BYTE之间没有固定的转换关系,字长随CPU型号而变化。
这个问题的正确答案是d。
11.在C语言系统中,假设int类型的数据占用2字节,那么double、long、unsigned int、char类型的数据占用多少字节?
A) 8,2,4,1 B) 2,8,4,1 C) 4,2,8,1 D)
解析:从上面的问题可知,CPU字长决定了给各类变量分配多少字节。当int的类型占2字节时,double、long、unsigned int和char的字节分别占8、4、2和1字节。
这个问题的正确答案是d。
12.以下程序段的执行结果是。
int i=5,k;
k =(++ I)+(++ I)+(i++);
printf("%d,%d ",k,I);
a)24.8 B)21.8 C)21.7D)24.7
解析:在表达式k=(++i)+(++i)+(i++)中,I前面有两个“++”号,所以在计算K之前,要将I增加两次,即I会变成7,再加上三个7就成了K 21,表达式中的“++”号后面是I。
这个问题的正确答案是b。
13.以下程序段的执行结果是。
int I = 5;
printf("%d,%d,%d ",I,(++i)+(++i)+(i++),I);
A) 8,20,5 B) 8,21,5 C) 5,20,8 D) 5,21,8
解析:此题不能视为将12题中的k=(++i)+(++i)+(i++)代入printf函数,因为函数处理参数的顺序是从右向左,所以表达式(++i)+(i++)的值不再是7+7。
这个问题的正确答案是a。
14.以下程序段的输出是。
int i = 32769
printf("%d\\n ",I);
A) 32769 B) 32767 C) -32767 D)输出不是一个确定的数字。
解析:int变量表示数据范围为-32768~+32767,赋值时小于-32768或大于+32767,会发生溢出。溢出后存储的值是:正向溢出时减去模数65536,负向溢出时加上模数65536,所以这个问题的输出是32769-。
这个问题的正确答案是c。
15.以下程序的输出是。
主( )
{ int a =-32769;
ptintf("%8U\\n ",a);
}
A) 32769 B) %8U C) 32767 D) -32767
分析:格式字符必须小写。标题中的“%8U”不会用作格式控制器,但会按原样输出。变量A将没有相应的格式描述,不会被发送。
这个问题的正确答案是b。
第二,填空
1.如果下面程序的输出结果是13,请填空。
主( )
{ int x = 016;
printf("%d\\n ",1);}
解析:在C语言中,以0开头的数是八进制数,016相当于十进制数14。执行printf语句时,输出项应该是X减去1的值。
这个问题的正确答案是1 - x或者x-=1。
2.以下程序段的输出是2。
int k = 10;
float a=3.5,b=6.7,c;
c = a+k % 3 *(int)(a+b)% 2/4;
解析:本题考察的是运算符的优先级概念。公式中要先计算(a+b)的值,再计算强制类型转换。*、/和%是一级的,要从左到右算,最后算加法和赋值。
这个问题的正确答案是2 3.500000。
3.如果执行以下程序段后的输出是:3,4,5,请填空。
int a,b=3,c = 5;
a = b & ltc?3:c++;
printf("%d,%d,%d ",a,b,c);
解析:本题考查条件运算符和增量运算符的概念,其中B
这个问题的正确答案是3 b++。
4.在C语言中,运算符的最低优先级是4。
分析:与其他高级语言相比,赋值号在C语言中并不是优先级最低的,逗号运算符在C语言中是优先级最低的运算符。
这个问题的正确答案是4逗号运算符。
5.如果下面程序的输出是4,请填空。
主( )
{ int i,j,k;
k = 0;I = j =-2;
k+=-I-5;
printf("%d\\n ",k);
}
C语言中三个加号或三个减号连在一起时,中间的符号属于左边的变量,即-i-j等价于-(i-)-j。
这个问题的正确答案是5-j . & lt;/c?3:c++;
测试2
一、多项选择题
1.下列说法不正确。
a)c语句的末尾必须有分号。
b)整数和实数都可以用C语言精确表达。
c)运算符“%”只能用于整数运算。
d)乘法和除法运算符的优先级高于加法和减法运算符。
2.以下说法是正确的。
a)c语句前面必须有一个行号。
b)C程序中每行只能写一条语句。
C) C语言本身没有输入输出语句。
d)注释必须跟随一行语句。
3.复合语句应该括起来。
a)大括号b)方括号c)大括号d)尖括号
4.将二进制数101110111转换为十六进制数是。
A) 5557 B) B6F C) 7555 D) F6B
5.将十进制数0.625转换成二进制数是。
a)0.111 B)0.101 C)0.5d)0。A
6.如果你不会写一行C语言语句,你可以。
a)用逗号换行b)用分号换行c)用回车换行d)在任意空格换行。
7.c语言允许一个语句写两行,下面的语句不正确。
A) int a,B) int a C) int D) int a,B
b;,b;甲、乙;;
8.以下程序的输出是。(“□”表示空格)
int a = 3366
printf("|%-08d| ",a);
a)|-0003366 | b)| 00003366 | c)| 3366□□□□□| d)输出格式非法。
9.如果有语句:int a;浮动b;下面的输入语句是正确的。
A) scanf("%f%f ",& amp一,& ampb);
B) scanf("%f%d ",& amp一,& ampb);
C) scanf("%d,%f ",& amp一,& ampb);
D) scanf("%6.2f%6.2f ",& amp一,& ampb);
10.以下程序的输出是。
主( )
{ int x=11,y = 11;
printf("%d%d\\n ",x -,-y);
}
A) 11,11 B) 10,10 C) 10,11 D) 11
11.将八进制数307转换成二进制数是。
a)100110011 B)11000111 C)1100001165438
12.当执行下面的程序段并给X和Y赋值时,不能用作数据分隔符的是。
int x,y;
scanf("%d%d ",& ampx & amp;y);
a)空格B) Tab键c)回车d)逗号
13.下面的法律声明是。
A) int a=8,b;
b = ++ a++;
printf("%d,%d ",a,b++);
b)int a;
printf("\\"%d\\ " ",scanf("%d ",& ampa));
c)char a;
scanf("%c ",& ampa);
char b=scanf("b=%c ",& ampb);
d)char c = getchar();
putchar((int)c);
14.当执行下面的程序时,要把25和2.5分别赋给A和B,正确的输入法是。
int a;
浮动b;
scanf("a=%d,b=%f ",& amp一,& ampb);
A) 25□2.5
25,2.5
C) a=25,b=5.5
D) a=25□b=2.5
15.还有数学公式a?b x?y不等价的说法是。
A) a*b/x*y
B) a*b/x/y
C) a*b/(x*y)
D) a/(x*y)*b
第二,填空
1.表达式5%(-3)的值是1,表达式-5%(-3)的值是2。
2.C语言中,格式输入库函数为3,格式输出库函数为4。
3.以下程序的输出是5。
int x =-32769;
printf("%d ",x);
4.以下程序的输出是6。
主( )
{
float a=1,b;
b = ++ a * ++ a;
printf("%f\\n ",b);
}
5.以下程序的输出是7。
主( )
{
int x=5,y;
y = ++ x * ++ x;
printf("y=%d\\n ",y);
}
参加考试并回答问题
一、选择题(1)B(2)C(3)C(4)B(5)B(6)D(7)D(8)C(9)C(10)D(11)
二、填空122-23扫描4打印5 32767 66.00000007 49
测试3
一、多项选择题
1.以下不属于C语言的数据类型有。
a)整数类型B)实数类型C)逻辑类型D)双精度实数类型
分析:与其他高级语言相比,C语言既没有逻辑数据,也没有逻辑变量。
这个问题的正确答案是c。
2.在C语言中,下列属于构造类型。
a)整型b)实型c)指针型d)结构型
解析:C语言中的结构化数据有三种类型:数组、结构和* * *对象。数组是同一类型数据的集合,结构是不同类型数据的集合。
这个问题的正确答案是d。
3.以下字符串不符合标识符的要求。
a)总和B)总和C) 3cd D)结束
解析:标识符只能由26个英文字母(大小写)、数字0~9和下划线组成,不能以数字开头。题目中的3cd不符合要求。
这个问题的正确答案是c。
4.下面可以正确表示八进制数。
a)0x 16 B)029 C)-114D)033
解析:选项a)以0x开头为十六进制数,选项b)以0开头,但出现数字9,选项c)为十进制数。
这个问题的正确答案是d。
5.以下四个选项中,为合法实数的选项是。
A) 2e-4.2 B)-0.50 C) 0.2e-.5 D)-e5
解析:实数有两种表示形式:小数形式和指数形式。十进制形式,必须有小数点;在指数形式中,字母E前面必须有一个数字,后面必须有一个整数。选项a中的“2e-4.2”、选项c中的“0.2e-.5”、选项d中的“-e5”都是非法的。
这个问题的正确答案是b。
6.在C语言中,字符数据在内存中的存储形式是。
a)原码b)补码c)补码D) ASCII码
解析:在C语言中,int数据以补码的形式存储,字符数据以ASCII码的形式存储。
这个问题的正确答案是d。
7.以下是正确的字符常量。
a)" a " B)′\ \ \ \′C)" \ \ r " D)277
解析:字符常量的定义是用单引号括起来的字符,A和C的分隔符错误,D超出了char数据的表示范围,' \ \ \ '是转义字符。
这个问题的正确答案是b。
8.如果有语句char ch 1 = ' \ \ x 41 ';Ch1。
a)包含4个字符b)包含3个字符c)包含2个字符d)包含1个字符。
解析“\\x41”中的“41”是十六进制数,即十进制的65,存储在ch1中的65是字母“A”的ASCII码。
这个问题的正确答案是d。
9.下面的程序段输出的字符串长度是。
printf(" \ \ \ \ AAA \ \′CCC \ \ bddd \ \ " ");
a)11 B)12 C)13D)17
解析:\ \ \,\ ',\\b和\ "为转义符,程序输出结果为:\ \ aaa 'ccddd "。
这个问题的正确答案是a。
10.在以下运算符中,要求操作数必须是整数。
A) / B) * C) % D)!
分析:“/”、“*”、“!”的操作数可以是整数,也可以是实数。只有余数运算符“%”要求操作数必须是整数。
这个问题的正确答案是c。
11.下面的法律转让声明是。
a)x+y = 2002;B) ch= "绿色";c)x =(a+b)++;d)x = y = 0316;
解析:赋值号左端不能是表达式,选项a)错误;赋值号不能给变量赋值字符串,选项b)也是错误的;增量运算符“++”不能用于表达式,选项c)错误。
这个问题的正确答案是d。
12.假设A是int类型,B是double类型,C是float类型,D是char类型,则表达式a+b*c-d/a的结果类型为。
A) int类型B) float类型C) double类型D) char类型
分析:不同类型数据混合运算的转换规则是,运算前,float数据会自动转换为double类型,char数据会自动转换为int类型。在运算过程中,int数据和double数据要转换成相同的类型,即double类型,运算结果也是double类型。
这个问题的正确答案是c。
13.执行以下程序段后的输出是。
int x = 0xcde
printf("M,%4o,%4x\\n ",x,x,x);
A) 3294,6336,cde B) 3294,6336,xcde C) 3294,06336,0xcde D) 3294,6336,0cde
解析:0xcde是一个十六进制数,写成二进制数的形式:110010111165438。用八进制发送时,从右到左写成三位二进制数。
这个问题的正确答案是a。
14.以下程序的输出是。
#包括
#包括
主( )
{ int a,b;
浮动c;
b = 5;c = 6;c = b+ 7;b = c+1;
a = sqrt((double)b+ c);
printf("%d,%f,%d ",a+6,c,b);
}
A) 11.000000,12.000000,13.000000
B) 11.000000,12.000000,13
C) 11.000000,12,13
D) 11,12.000000,13
解析:C语言允许将一种类型的数据赋给另一种类型的变量,但变量的类型不会因为赋值而改变。比如本题中,b+7即12赋给浮点变量C,C的值应该是12.0000000而不是整数12。同理,A = sqrt ((double) B+C。
这个问题的正确答案是d。
15.x的值是。
无符号int x = 65535
printf("%d\\n ",x);
A) 65535 B) 1 C)错误D) -1
解析:问题中X定义为无符号整数,已经初始化为:1111111165438。然后取1的最高位作为符号,1111111165438+。
这个问题的正确答案是d。
第二,填空
1.下面这个程序段的作用是输出对应大写字母的小写字母的ASCII码。请填空。
char ch
scanf("%c ",& ampch);
ch =(ch & gt;=′A′& amp;& ampch & lt=′Z′)?(1):ch
printf("2\\n ",ch);
解析:题目中的条件运算是判断输入的字母是否大写,当ch & gt=′A′& amp;& ampch & lt当='Z '为真时,要转换成相应的小写字母,ASCII码值要加32。已知题目的意思是输出小写字母对应大写字母的ASCII值,所以printf语句中的输出格式应该是十进制格式。
这个问题的正确答案是1 ch+32,2% d。
2.下面这个程序段的执行结果是x = 3,y = 4。
inta=3,b=5,x,y;
x=a+1,b+6;
y=(a+1,b+6);
printf("x=%d,y=%d ",x,y);
解析:本题考查逗号表达式的概念。因为逗号运算符的优先级低于赋值号,所以当执行X = a+1和B+6时,X得到a+1的值。
这个问题的正确答案是34411。
3.执行以下程序后,k的值为5。
int a=1,b=2,c=3,d=4,k;
k = a & gtb?答:c & gtd?丙:丁
分析:a & gtb的值为假,求解表达式k = a >;b?答:c & gtd?C:d等价于求k = a & gtb?答:(c & gtd?丙:丁).
这个问题的正确答案是5 4。
4.已知int a = 5;然后执行a+= a-= a * a;语句中,a的值是6。
解析:a+=a-=a*a的运算顺序是从右到左,相当于求a+=(a-=a*a),其中括号内的运算得到a=5-5*5,表示a=-20,下一步是求a+=a,表示a=a+a,将-20代入a。
这个问题的正确答案是6 -40。
5.下面这个程序的运行结果是x = 7,y = 8。
主( )
{ float x = 4.9int y;
y =(int)x;
printf("x=%f,y=%d ",x,y);}
分析:强制类型转换不改变X的初始值,X仍然是4.9,但是转换得到的是中间结果。本题将中间结果赋给Y,舍弃小数部分,不取整。
这个问题的正确答案是74.9000084。
测试4
一、多项选择题
1.对于if语句中的表达式类型,以下是正确的描述。
a)必须是关系表达式。
b)它必须是关系表达式或逻辑表达式。
c)必须是关系表达式或算术表达式。
d)可以是任何表达式。
解析:C语言中if语句的表达式可以是任意类型,只要表达式的值不为0,则为真,0为假。
这个问题的正确答案是d。
2.当多个if_else语句嵌套时,与else匹配的if方法为。
a)如果具有相同的缩进位置
b)在它上面的最近的if
c)最接近的if低于
d)如果在对等体上
分析:当多个if_else嵌套时,else总是与它上面最近的if成对出现。
这个问题的正确答案是b。
3.以下错误的if语句是。
a)如果(x & gty)z = x;
b)如果(x = = y)z = 0;
C) if(x!=y) printf("%d ",x) else printf("%d ",y);
d)如果(x
解析:选项c)中的第一条printf语句是错误的,因为后面丢失了一个分号。
这个问题的正确答案是c。
4.下面是判断两个字符串相等的正确方法。
a)如果(str1=str2)
b)如果(str1==str2)
C) if(strcpy(str1,str2)=0)
D) if(strcmp(str1,str2)==0)
解析:选项a)中使用了赋值号,明显错误。选项c)中的字符串复制函数strcpy不能比较大小,选项b)中的“= =”号没有字符串比较函数。字符串比较函数用于比较两个字符串的大小。
这个问题的正确答案是d。
5.执行以下过程的正确结果是。
主( )
{ float a = 1.9;
开关(a)
{ case 0:printf(" 0000 ");
案例1:printf(" 1111 ");
案例二:printf(" 2222 ");
}
printf("%f ",a);
}
A) 1.900000
b)11112221.900000
C) 22221.900000
d)0000111122221.900000
解析:问题中定义了单精度实数A,所以底部printf语句的输出有6位小数位。另外,在判断switch表达式的值时,C语言将其作为整数数据处理(但不将4除以5),所以程序从case 1开始,由于没有break语句,接下来执行case 2。
这个问题的正确答案是b。
6.以下程序的输出是。
主( )
{ int a=20,b=30,c = 40
如果(a & gtb) a=b,
b = c;c = a;
printf("a=%d,b=%d,c=%d ",a,b,c);
希望对你有帮助!!!也希望能拿点分!!!谢谢你