C前3章练习题集参考答案解析.docx
《C前3章练习题集参考答案解析.docx》由会员分享,可在线阅读,更多相关《C前3章练习题集参考答案解析.docx(12页珍藏版)》请在冰豆网上搜索。
C前3章练习题集参考答案解析
第1章
一.选择题
1.关于C#程序的书写,下列不正确的说法是【D】。
A)区分大小写
B)一行可以写多条语句
C)一条语句可以写成多行
D)一个类中只能有一个Main()方法,因此多个类中可以有多个Main()方法。
2.C#应用程序项目文件的扩展名是【A】。
A)csprojB)csC)slnD)suo
3.运行C#程序可以通过按【C】键实现。
A)Shift+F5B)Alt+F5C)Ctrl+F5D)Alt+Ctrl+F5
4.公共语言运行库可简写为(C)。
A)MSILB)JITC)CLRD)MSDN
5.下面对Write()和WriteLine()方法的描述,不正确的是(C)。
A.WriteLine()方法在输出字符串的后面添加换行符
B.使用Write()输出字符串时,光标将会位于字符串的后面
C.使用Write()和WriteLine()方法输出数值变量时,必须要先把数值变量转换成字符串
D.使用不带参数的WriteLine()方法时,将会产生一个空行
6.以下哪句话是正确的?
( D )
A.命名空间应该包含在类中
B.每个类都是为了完成一个独立的功能
C.一个资源解决方案只能包含一个项目
D.C#源程序的扩展名是.cs
7.要看到程序运行的结果,必须按下列哪个组合键(A)。
A.Ctrl+F5B.Ctrl+F9C.Alt+F5D.Alt+F
二.填空题
1.在C#中,进行注释有两种方法:
使用“//”和使用“/**/”符号对,其中【//】只能进行单行注释。
2.在C#程序中,程序的执行总是从【Main()】方法开始的。
第2章
一.选择题
1.在C#语言中,下列能够作为变量名的是【C】。
A)ifB)3abC)a_3bD)a-bc
2.表达式5/2+5%2-1的值是【B】。
A)4B)2C)2.5D)3.5
3.下列数值类型的数据精度最高的是【C】。
A)intB)floatC)decimalD)ulong
4.在C#语言中,下面的运算符中,优先级最高的是【B】。
A)%B)++C)*=D)>
5.能正确表示逻辑关系“a≥10或a≤0”的C#语言表达式是【D】。
A)a>=10ora<=0B)a>=10anda<=0
C)a>=10&&a<=0D)a>=10||a<=0
6.以下程序的输出结果是【C】。
usingSystem;
classProgram
{publicstaticvoidMain(string[]args)
{inta=5,b=4,c=6,d;
Console.WriteLine(“{0}”,d=a>b?
(a>c?
a:
c):
b);
}
}
A)5B)4C)6D)不确定
7.要使用变量score来存储学生某一门课程的成绩(百分制,可能出现小数部分),则最好将其定义为【C】类型的变量。
A)intB)decimalC)floatD)long
8.已定义下列变量:
intn;floatf;doubledf;
df=10;n=2;
下列语句正确的是【C】。
A)f=12.3;B)n=df;C)df=n=100;D)f=df;
9.下列表达式或语句中,有语法错误的是【A】。
A)n=12%3.0;(n为int型)B)12/3.0
C)12/3D)‘a’>’b’
10.下面有关变量和常量的说法,正确的是【B】。
A)在程序运行过程中,变量的值是不能改变的,而常量是可以改变的
B)常量定义必须使用关键字const
C)在给常量赋值的表达式中不能出现变量
D)常量在内存中的存储单元是固定的,变量则是变动的
11.下列类型转换中正确的是【A】
(A)inti=’A’(B)longL=1.1f(C)inti=(float)1.1(D)inti=1.1
12.以下选项中,合法的赋值语句是(B)
(A)inta==1(B)inti=1;intj=i++;
(C)inta=a+1=2;(D)inti=int(j);
13.下列运算符中属于关系运算符的是(A)
(A)==(B)=(C)+=(D)-=
14.阅读下面的程序,程序的运行结果为(C)
inta=10,b=4,c=20,d=6;
label1.Text=a++*b+c*--d;
(A)144(B)160(C)140(D)164
15.阅读下面的程序,程序的运行结果为(B)
intx=3,y=4,z=5;
Strings="xyz";
label1.Text=s+x+y+z;
(A)xyz12(B)xyz345(C)xyzxyz(D)12xyz
16.阅读下面的程序,程序的运行结果为(B)
inti=10,j=3;
floatm=213.5f,n=4.0f;
label1.Text=i%j+””;
label2.Text=m%n+””;
(A)1.0和1.5(B)1和1.5(C)1.0和2.5(D)1和2.5
17.C#中每个int类型的变量占用(C)个字节的内存。
A.1B.2C.4D.8
18.在C#中,表示一个字符串的变量应使用以下哪条语句定义?
(B)
A.CStringstr;B.stringstr;C.DimstrasstringD.char*str;
19.C#中,新建一字符串变量str,并将字符串"Tom'sLivingRoom"保存到串中,则应该使用下列哪条语句?
(B)
A.stringstr="Tom\'sLivingRoom";B.stringstr="Tom'sLivingRoom";
C.stringstr("Tom'sLivingRoom");D.stringstr("Tom"sLivingRoom");
20.设”inta=3,b=4,c=5;”表达式”(a+b)>c&&b==c”的值是(B)
A.trueB.falseC.3D.7
21.设“inta=12;”则执行完语句“a++;a=a+3”后,a的值是(D)
A.12B.15C.13D.16
22.以下数据中,属于int类型的是(A)
A.8B.’8’C.”8”D.8.8
23.在C#以下哪个变量名是正确的 ( C )
A.$34 B.45b C.a_3 D.int
24.以下哪句话是正确的?
( B )
A.C#是一种面向对象的开发语言,而JAVA不是。
B.C#项目编译后的可执行文件扩展名为.exe
C.C#中Main()方法中的M首字母不一定要大写
D.基本数据类型的变量,其内容为引用,即地址。
25.下列选项中,(c)是引用类型。
a)enum类型b)struct类型c)string类型d)int类型
26.C#的数据类型有(b)
a)值类型和调用类型;b)值类型和引用类型;
c)引用类型和关系类型;d)关系类型和调用类型;
27.在C#中,下列代码运行后,变量max的值是(C)
inta=5,b=10,c=15,max=0;
max=a>b?
a:
b; max=cc:
max;
A.0B.5C.10D.15
28.在C#中,下列常量定义正确的是(B)。
A.constdoublePI3.1415926;B.constdoublePi=2.7
C.definedoublePI3.1415926D.definedoublee=2.7
29.设a=6,b=4,则表达式b*a+3的值为(C)
A.3B.18C.27D.36
30.标识符的名字不能使用c#语言中的关键字,如果要使用,则应使用(C)字符作为前缀:
A.’B.任意字符C.@D./
31.在C#中,下列代码的运行结果是(A)。
floatf=123.56F;
objecto=f;
f=789.123F;
Console.WriteLine("f={0}",f);
Console.WriteLine("o={0}",o);
a)f=789.123
o=123.56
b)f=123.56
o=789.123
c)f=789.123
o=789.123
d)f=123.56
o=123.56
32.在C#中,下列代码的输出结果是(C)。
usingSystem;
classTest
{
publicenumWeekDays
{
Mon,Tue,Wed,Thur,Fri,Sta,Sun
}
staticvoidMain()
{
WeekDaysweek=(WeekDays)2;
Console.WriteLine(week);
}
}
a)2b)Tuec)Wedd)编译错误
33.以下代码段体现了C#中的(C)概念,该概念使得对象模型变得简单易懂。
intval=10;
Objectobj=val;
a)继承b)重载c)装箱d)委托
34.下面关于C#中值类型和引用类型的描述正确的是(D)。
a)结构属于引用类型
b)字符串属于值类型
c)所有内置的数据类型都是值类型,所有用户定义的数据类型都是引用类型
d)值类型变量直接存放真正的数据,引用类型变量存放的是指向真正的数据的存放地址
二.填空题
1.8/3的结果是:
【2】。
2.C#中,所有类型(包括所有的值类型和所有的引用类型)的基类是【object类】。
3.当整数b赋值给一个object对象时,这个过程称为【装箱】。
4.设x为int型变量,请写出描述“x是奇数”的C#语言表达式【x%2!
=0】。
5.设x为int型变量,请写出描述“-10<=x<=10”的C#语言表达式【-10<=x&&x<=10】。
6.在C#中,bool类型只有两种值,分别是【true】和【false】。
第3章
一.选择题
1.在C#语言中,if语句后面的表达式,不能是【B】。
A)逻辑表达式B)算术表达式
C)关系表达式D)布尔类型的表达式
2.在C#语言中,switch语句用【A】来处理不匹配case语句的值。
A)defaultB)anyelse
C)breakD)goto
3.下列程序的输出结果是【C】。
usingSystem;
classProgram
{publicstaticvoidMain(string[]args)
{intx=1,a=0,b=0;
switch(x)
{case0:
b++;break;
case1:
a++;break;
case2:
a++;b++;break;
}
Console.WriteLine(“a={0},b={1}”,a,b);
}
}
A)a=2,b=1B)a=1,b=1C)a=1,b=0D)a=2,b=2
4.以下叙述正确的是【D】。
A)do……while语句构成的循环不能用其他语句构成的循环来代替
B)do……while语句构成的循环只能用break语句结束循环
C)用do……while语句构成的循环,在while后的表达式为true时结束循环
D)用do……while语句构成的循环,在while后的表达式应为关系表达式或逻辑表达式
5.以下关于for循环的说法不正确的是【A】。
A)for循环只能用于循环次数已经确定的情况
B)for循环是先判定表达式,后执行循环体
C)在for循环中,可以用break语句跳出循环体
D)for循环体语句中,可以包含多条语句,但要用花括号括起来
6.C#提供的4种跳转语句中,不推荐使用的是【D】。
A)returnB)breakC)continueD)goto
7.执行下列语句序列后,i和j的值分别是【C】
inti=3,j=5;
if(i-1>j)i--;elsej--;
A)2,4B)2,5C)3,4D)3,5
8.下列语句序列执行后,j的值是【B】
intj=5,i=6;
while(i-->3)--j;
A)1B)2C)3D)4
9.以下for循环的执行次数是【B】
for(inti=1;(i==1)&(i>2);i++)
A)无限次B)一次也不执行C)执行1次D)执行2次
10.以下由do-while语句构成的循环执行次数是【C】
intm=1;
do
{
++m;
}while(m<1);
A)有语法错误,不能执行B)一次也不执行C)执行1次D)执行2次
11.循环语句“for(inti=0;iA.1B.n-1C.nD.n+1
12.在下面循环语句中循环体执行的次数为(B)
for(inti=0;i{if(i>n/2)break;}
A.n/2B.n/2+1C.n/2-1D.n-1
13.下面有关for语句的描述有错误的是(A)。
A.使用for语句时,可以省略其中的某个或多个表达式,但不能同时省略全部3个表达式
B.在省略for语句的某个表达式时,如果该表达式后面原来带有分号,则一定要保留它所带的分号
C.在for语句表达式中,可以直接定义循环变量,以简化代码
D.for语句的表达式可以全部省略
14.以下哪段代码,最合理地实现了以下结构图描述的流程(B)
A.if(x>=0)B.if(x>=0)
y=-x;y=x;
elseelse
y=x;y=-x;
C.while(x>=0)D.while(x>=0)
{{
casetrue:
y=x;casetrue:
y=-x;
break;break;
casefalse:
y=-x;casefalse:
y=x;
break;break;
}}
15.以下关于C#代码的说法正确的是(A)。
usingSystem;
classTest
{
staticvoidMain()
{
for(inti=1;i<=3;i++)
{
switch(i)
{
case1:
Console.Write(i.ToString());
case2:
Console.Write((i*2).ToString());
case3:
Console.Write((i*3).ToString());
}
}
}
}
A)程序将报告编译错误,提示case标签不能贯穿到另一个标签,不能运行
B)运行是输出149
C)运行时输出123246369
D)运行时在屏幕上没有输出
16.已知a,b,c的值分别是4,5,6,执行下面的程序段后,判断变量n的值为(C)
if(c
elseif(a+belsen=a+b;
A.3B.-3C.9D.15
17.while语句循环结构和do…while语句循环结构的区别在于(D)
A.while语句的执行效率较高
B.do…while语句编写程序较复杂
C.无论条件是否成立,while语句都要执行一次循环体
D.do…while循环是先执行循环体,后判断条件表达式是否成立,而while语句是先判断条件表达式,再决定是否执行循环体.
18.下列代码输出正确的是(D)
namespaceAnswer
{
classProgram
{
staticvoidMain(string[]args)
{
inti,j;
for(i=1;i>=0;i--)
for(j=0;j<=i;j++)
Console.WriteLine(“i*j={0}”,i*j);
}
}
}
A.i*j=0i*j=0i*j=0B.i*j=1i*j=0i*j=1
C.i*j=1i*j=1i*j=0D.i*j=0i*j=1i*j=0
19.下面对i值的输出结果说法正确的是(A)
namespaceAnswer
{
classProgram
{
staticvoidMain(string[]args)
{
inti=0;
do
{i++;
}while(i<5);
Console.WriteLine(“i值的为:
{0}”,i);}}}
A.i的值为:
5B.i的值为:
6
C.i的值为:
7D.i的值为:
8
20.下面代码运行后,s的值是(B)。
ints=0;
for(inti=1;i<100;i++)
{
if(s>10)
{
break;
}
if(i%2==0)
{
s+=i;
}
}
A.20B.12C.10D.6
二、程序分析题
1.运行以下程序段,结果是(150)
doublek,t;
t=0;
for(intn=1;n<=10;n++)
{
for(k=1;k<=5;k++)
t=t+k;
}
Console.WriteLine(t);
运行以下程序段,结果是(总和为:
25)
usingSystem;
classSumw
{
staticvoidMain()
{
inti=1,sum=0;
while(i<=10)
{
sum+=i;
i+=2;
}
strings1="总和为:
"+sum.ToString();
Console.WriteLine(s1);
}
}
2.以下程序运行后,变量a的值为(10)
inta=100;
for(intj=10;j>0;j-=2)
a-=j*3;
3.以下程序运行后,控件textBox1显示内容为(1112131416171819)
inti;
strings1="";
for(i=10;i<=20;i++)
{
if(i%5==0)
{
continue;
}
s1+=i.ToString()+"";
}
Console.WriteLine(s1);
4.给出下列程序的运行结果:
(1+2+3+…+100=5050)
usingSystem
ClassDome
{
StaticvoidMain()
{intn=1,sum=0;
while(n<101)
{
sum+=n;
n++;
}
Console.WriteLine("1+2+3+…+100="+sum);
}
}