C语言理论基础考试习题.docx
《C语言理论基础考试习题.docx》由会员分享,可在线阅读,更多相关《C语言理论基础考试习题.docx(38页珍藏版)》请在冰豆网上搜索。
![C语言理论基础考试习题.docx](https://file1.bdocx.com/fileroot1/2023-7/12/ece1147d-63a2-4962-bd3e-9d920046a071/ece1147d-63a2-4962-bd3e-9d920046a0711.gif)
C语言理论基础考试习题
第一部分C语言理论基础
(4)结构化程序由三种基本结构组成,三种基本结构组成的算法
A)可以完成任何复杂的任务
B)只能完成部分复杂的任务
C)只能完成符合结构化的任务
D)只能完成一些简单的任务
(7)以下叙述中正确的是
A)C语言比其他语言高级
B)C语言可以不用编译就能被计算机识别执行
C)C语言以接近英语国家的自然语言和数学语言作为语言的表达形式
D)C语言出现的最晚,具有其他语言的一切优点
第二部分C语言基本语法知识
(2)以下叙述中错误的是
A)C语句必须以分号结束
B)复合语句在语法上被看作一条语句
C)空语句出现在任何位置都不会影响程序运行
D)赋值表达式末尾加分号就构成赋值语句
(4)以下能正确定义且赋初值的语句是
A)int n1=n2=10;
B)char c=32;
C)float f=f+1.1;
D)double x=12.3E2.5;
(5)设有定义:
int k=1,m=2; float f=7;,则以下选项中错误的表达式是
A)k=k>=k B)-k++ C)k%int(f) D)k>=f>=m
(6)有以下程序段
int k=0,a=1,b=2,c=3;
k=a
b:
a; k=k>c?
c:
k;
执行该程序段后,k的值是
A)3 B)2 C)1 D)0
(8).以下不能定义为用户标识符的是
A)Main
B)_0
C)_int
D)sizeof
(11)若整型变量a、b、c、d中的值依次为:
1、4、3、2。
则条件表达式a
a:
cc:
d的值
A)1 B)2 C)3 D)4
(15)以下4组用户定义标识符中,全部合法的一组是
A)_main B)If C)txt D)int
enclude -max REAL k_2
sin turbo 3COM _001
(24)下列关于单目运算符++、--的叙述中正确的是
A)它们的运算对象可以是任何变量和常量
B)它们的运算对象可以是char型变量和int型变量,但不能是float型变量
C)它们的运算对象可以是int型变量,但不能是double型变量和float型变量
D)它们的运算对象可以是char型变量、int型变量和float型变量
(26)以下选项中合法的用户标识符是
A)long B)_2Test C)3Dmax D)A.dat
(27)以下非法的赋值语句是
A)n=(i=2,++i); B)j++; C)++(i+1); D)x=j>0;
(28)设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是
A)6.500000
B)6
C)5.500000
D)6.000000
(33)以下选项中不属于C语言的类型的是
A)signed short int
B)unsigned longint
C)unsigned int
D)long short
(34)以下叙述正确的是
A)可以把define和if定义为用户标识符
B)可以把define定义为用户标识符,但不能把if定义为用户标识符
C)可以把if定义为用户标识符,但不能把define定义为用户标识符
D)define和if都不能定义为用户标识符
(35)在C语言中,合法的长整型常数是
A)0L
B)4962710
C)324562&
D)216D
(37)假定x和y为double型,则表达式x=2,y=x+3/2的值是
A)3.500000
B)3
C)2.000000
D)3.000000
(38)以下合法的赋值语句是
A) x=y=100
B)d--;
C)x+y;
D)c=int(a+b);
(40)以下程序的输出结果是
main()
{ int a=3;
printf(“%d\n”,(a+a-=a*a));
}
A)–6
B)12
C)0
D)–12
(41)以下所列的C语言常量中,错误的是
A)0xFF
B)1.2e0.5
C)2L
D)‘\72’
(42)下列选项中,合法的C语言关键字是
A)VAR
B)cher
C)integer
D)default
(47)若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是
A)1 B)2 C)2.0 D)2.5
(48)若变量a、iI已正确定义,且i已正确赋值,合法的语句是
A)a==1 B)++i; C)a=a++=5; D)a=int(i);
(49)若有以下程序段,
int c1=1,c2=2,c3;
c3=1.0/c2*c1;
则执行后,c3中的值是
A)0 B)0.5 C)1 D)2
(50)设有intx=11;则表达式(x++*1/3)的值是
A)3 B)4 C)11 D)12
(51)下列程序的输出结果是
A)3 B)3.2 C)0 D)3.07
main()
{doubled=3.2;intx,y;
x=1.2;y=(x+3.8)/5.0;
printf("%d\n",d*y);
}
(52)下列变量定义中合法的是
A)short_a=1-.le-1;
B)double b=1+5e2.5;
C)long do=0xfdaL;
D)float 2_and=1-e-3;
(53)以下选项中属于C语言的数据类型是
A)复数型
B)逻辑型
C)双精度型
D)集合型
(62)C语言提供的合法的数据类型关键字是
A)Double B)short C)integer D)Char
(73)C语言程序的基本单位是
A)程序行 B)语句 C)函数 D)字符
(5)设a、b、c为整型数,且a=2、b=3、c=4,则执行完以下语句:
a*=16+(b++)-(++c);
后,a的值是【5】。
第三部分顺序结构:
输入与输出
(1)有以下程序
main()
{ int m,n,p;
scanf("m=%dn=%dp=%d",&m,&n,&p);
printf("%d%d%d\n",m,n,p);
}
若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是
A)m=123n=456p=789
B)m=123 n=456 p=789
C)m=123,n=456,p=789
D)123 456 789
(2)有以下程序
main()
{intm=0256,n=256;
printf("%o%o\n",m,n);
}
程序运行后的输出结果是
A)02560400
B)0256256
C)256400
D)400400
(5)有以下程序
main()
{int a; char c=10;
float f=100.0; double x;
a=f/=c*=(x=6.5);
printf("%d %d %3.1f %3.1f\n",a,c,f,x);
}
程序运行后的输出结果是
A)1 65 1 6.5
B)1 65 1.5 6.5
C)1 65 1.0 6.5
D)2 65 1.5 6.5
(6)有定义语句:
int x,y;,若要通过scanf("%d,%d",&x,&y);语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是
A)11 12<回车>
B)11,12<回车>
C=11,12<回车>
D=11,<回车>
12<回车>
(8)若有以下程序段(n所赋的是八进制数)
intm=32767,n=032767
printf("%d,%o/n",m,n);
执行后输出结果是
A)32767,32767 B)32767,032767
C)32767,77777 D)32767,077777
(9)若有以下程序段
intm=0xabc,n=0xabc;
m-=n;
printf("%X\n",m);
执行后输出结果是
A)0X0
B)0x0
C)0
D)0XABC
(11)设有定义:
longx=-123456L;,则以下能够正确输出变量x值的语句是
A)printf(“x=%d\n”,x);
B)printf(“x=%ld\n”,x);
C)printf(“x=%8dL\n”,x);
D)printf(“x=%LD\n”,x);
(12)以下程序段的输出结果是
int a=1234;
printf("%2d\n",a);
A)12
B)34
C)1234
D)提示出错、无结果
(18)以下程序的输出结果是
A)17,021,0x11 B)17,17,17
B)17,0x11,021 D)17,21,11
main( )
{ int k=17;
printf("%d,%o,%x\n",k,k,k);
}
(23)请读程序:
#include
main()
{inta;floatb,c;
scanf("%2d%3f%4f",&a,&b,&c);
printf("\na=%d,b=%f,c=%f\n",a,b,c);
}
若运行时从键盘上输入9876543210(表示回车),则上面程序的输出结果是
A)a=98,b=765,c=4321
B)a=10,b=432,c=8765
C)a=98,b=765.000000,c=4321.000000
D)a=98,b=765.0,c=4321.0
(25)以下程序的输出结果是 【25】。
#include
main()
{ inta=2,c=5;
printf("a=%%d,b=%%d\n",a,c); }
A)a=%2,b=%5
B)a=2,b=5
C)a=%%d,b=%%d
D)a=%d,b=%d
(8)若有程序
main()
{ int i,j;
scanf("i=%d,j=%d";&i,&j);
printf("i=%d,j=%d\n",i,j);
}
要求给i赋10,给j赋20,则应该从键盘输入 【8】 。
(14)若想通过以下输入语句使a=5.0,b=4,c=3,则输入数据的形式应该是【14】 。
int b,c; floata;
scanf("%f,%d,c=%d",&a,&b,&c);
(15)若想通过以下输入语句给a赋于1,给b赋于2,则输入数据的形式应该是【15】。
inta,b;
scanf("a=%d,b=%d",&a,&b);
第四部分选择结构
(3)设有定义:
int a=2,b=3,c=4;,则以下选项中值为0的表达式是
A)(!
a==1)&&(!
b==0)
B)(a
c||1
C)a&&b
D)a||(b+b)&&(c-a)
(4)设变量a、b、c、d和y都已正确定义并赋值。
若有以下if语句
if(a
if(c==d) y=0;
else y=1;
该语句所表示的含义是
(6)有以下程序
main()
{ int i=1,j=2,k=3;
if(i++==1&&(++j==3||k++==3))
printf("%d %d %d\n",i,j,k);
}
程序运行后的输出结果是
A)1 2 3
B)2 3 4
C)2 2 3
D)2 3 3
(8)有以下程序
main()
{
inta=3,b=4,c=5,d=2;
if(a>b)
if(b>c)
printf("%d",d+++1);
else
printf("%d",++d+1);
printf("%d\n",d);
}
程序运行后的输出结果是
A)2
B)3
C)43
D)44
(10)以下4个选项中,不能看作一条语句的是
A){;}
B)a=0,b=0,c=0;
C)if(a>0);
D)if(b==0)m=1;n=2;
(11)以下程序段中与语句k=a>b?
(b>c?
1:
0):
0;功能等价的是
A)if((a>B)&&(b>C))k=1; B) if((a>B)||(b>C)) k=1
else k=0;
C)if(a<=B) k=0; D)if(a>B) k=1;
elseif(b<=C) k=1; elseif(b>C) k=1;
elsek=0;
(12)有以下程序
main()
{int a=1,b=2,m=0,n=0,k;
k=(n=b>a)||(m=a
printf("%d,%d\n",k,m);
}
程序运行后的输出结果是
A)0,0
B)0,1
C)1,0
D)1,1
(15)有以下程序
main()
{ int a=5,b=4,c=3,d=2;
if(a>b>c)
printf("%d\n",d);
elseif((c-1>=d)==1)
printf("%d\n",d+1);
else
printf("%d\n",d+2)
}
执行后输出结果是
A)2 B)3 C)4 D)编译时有错,无结果
(16)已有定义:
intx=3,y=4,z=5;,则表达式!
(x+y)+z-1&&y+z/2的值是
A)6 B)0 C)2 D)1
(17)有一函数, ,以下程序段中不能根据x值正确计算出y值的是
A)if(x>0)y=1; B)y=0;
elseif(x==0)y=0; if(x>0)y=1;
elsey=-1; elseif(x<0)y=-1;
C)y=0; D)if(x>=0)
if(x>=0); if(x>0)y=1;
if(x>0)y=1 ; elsey=0;
elsey=-1; elsey=-1;
(18)有以下程序
main()
{ inta=15,b=21,m=0;
switch(a%3)
{case0:
m++;break;
case1:
m++;
switch(b%2)
{default:
m++;
case0:
m++;break;
}
}
printf(“%d\n”,m);
}
程序运行后的输出结果是
A)1 B)2 C)3 D)4
(24)设x、y、t均为int型变量,则执行语句:
x=y=3;t=++x||++y;后,y的值为
A)不定值 B)4 C)3 D)1
(46)在下列选项中,不正确的赋值语句是
A)++t;
B)n1=(n2=(n3=0));
C)k=i==j;
D)a=b+c=1;
(47)能正确表示a≥10或a≤0的关系表达式是
A)a>=10ora<=0
B)a>=10│a<=0
C)a>=10││a<=0
D)a>=10││a<=0
(2)以下程序运行后的输出结果是
main()
{
int a=3,b=4,c=5,t=99;
if(b if(a printf("%d%d%d\n",a,b,c);
}
(3)以下程序运行后的输出结果是
main()
{
int a,b,c
a=10;b=20;c=(a%b<1)||(a/b>1);
printf("%d%d%d\n",a,b,c);
}
(5)有以下程序
main()
{ intn=0,m=1,x=2;
if(!
n) x-=1;
if(m) x-=2;
if(x) x-=3;
printf(“%d\n”,x);
}
执行后输出结果是【5】。
(6)以下程序运行后的输出结果是 【6】 。
main()
{int p=30;
printf(“%d\n”,(p/3>0?
p/10 :
p%3));
}
(9)若有以下程序
main()
{ int a=4,b=3,c=5,t=0;
if(a
if(a printf("%d%d%d\n",a,b,c);
}
执行后输出结果是【9】。
(10)以下程序运行后的输出结果是 [10] 。
main()
{intx=10,y=20,t=0;
if(x==y)t=x;x=y;y=t;
printf(“%d,%d\n”,x,y);
}
(15)若x为int类型,请以最简单的形式写出与逻辑表达式!
x等价的C语言关系表达式 [15]。
第五部分:
循环结构
(3)有以下程序
main()
{int k=5,n=0;
while(k>0)
{ switch(k)
{ default :
break;
case 1 :
n+=k;
case 2 :
case 3 :
n+=k;
}
k--;
}
printf("%d\n",n);
}
程序运行后的输出结果是
A)0
B)4
C)6
D)7
(4)有以下程序
main()
{
int a=1,b;
for(b=1;b<=10;b++)
{
if(a>=8) break;
if(a%2==1) { a+=5; continue;}
a-=3;
}
printf("%d\n",b);
}
程序运行后的输出结果是
A)3
B)4
C)5
D)6
(12)有以下程序段
intn=0,p;
do{scanf(“%d”,&p);n++;}while(p!
=12345&&n<3);
此处do—while循环的结束条件是
A)P的值不等于12345并且n的值小于3
B)P的值等于12345并且n的值大于等于3
C)P的值不等于12345或者n的值小于3
D)P的值等于12345或者n的值大于等于3
(17)以下程序的输出结果是
main()
{ int num=0;
while(num<=2)
{ num++; printf(“%d\n”,num);
}
A}1 B}1 C}1 D}l
2 2 2
3 3
4
(18)以下程序