C#前3章练习题参考答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第1章
一.选择题
1.关于C#程序的书写,下列不正确的说法是【D】。
A) 区分大小写
B) 一行可以写多条语句
C) 一条语句可以写成多行
D) 一个类中只能有一个Main()方法,因此多个类中可以有多个Main()方法。
2.C#应用程序项目文件的扩展名是【A】。
A) csproj B) cs C) sln D) suo
3.运行C#程序可以通过按【C】键实现。
A)Shift+ F5B) Alt+F5 C) Ctrl+F5 D) Alt+Ctrl+F5
4.公共语言运行库可简写为(C )。
A) MSIL B) JIT C) CLR D) 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+F5
B. Ctrl+F9
C. Alt+F5
D. Alt+F
二.填空题
1.在C#中,进行注释有两种方法:使用“//”和使用“/* */”符号对,其中【// 】
只能进行单行注释。
2.在C#程序中,程序的执行总是从【Main( )】方法开始的。
第2章
一.选择题
1.在C#语言中,下列能够作为变量名的是【C 】。
A) if B) 3ab C) a_3b D) a-bc
2.表达式5/2+5%2-1的值是【 B 】。
A) 4 B) 2 C) 2.5 D) 3.5
3.下列数值类型的数据精度最高的是【C】。
A) int B) float C) decimal D) ulong
4.在C#语言中,下面的运算符中,优先级最高的是【B 】。
A) % B) ++ C) *= D) >
5.能正确表示逻辑关系“a≥10 或a≤0”的C#语言表达式是【 D 】。
A) a>=10 or a<=0 B) a>=10 and a<=0
C) a>=10 && a<=0 D) a>=10 || a<=0
6.以下程序的输出结果是【C 】。
using System;
class Program
{ public static void Main(string[] args)
{ int a=5,b=4,c=6,d;
Console.WriteLine(“{0}”,d=a>b?(a>c?a:c):b);
}
}
A) 5 B) 4 C) 6 D) 不确定
7.要使用变量score来存储学生某一门课程的成绩(百分制,可能出现小数部分),则最
好将其定义为【C 】类型的变量。
A) int B) decimal C) float D) long
8.已定义下列变量:
int n; float f; double df;
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/3 D) ‘a’>’b’
10.下面有关变量和常量的说法,正确的是【B 】。
A) 在程序运行过程中,变量的值是不能改变的,而常量是可以改变的
B) 常量定义必须使用关键字const
C) 在给常量赋值的表达式中不能出现变量
D) 常量在内存中的存储单元是固定的,变量则是变动的
11.下列类型转换中正确的是【 A 】
(A) int i=’A’(B) long L=1.1f (C) int i=(float)1.1 (D) int i=1.1
12.以下选项中,合法的赋值语句是(B )
(A) int a==1 (B) int i=1;int j=i++;
(C) int a=a+1=2; (D) int i=int (j);
13.下列运算符中属于关系运算符的是(A)
(A) == (B) = (C) += (D) -=
14.阅读下面的程序,程序的运行结果为(C)
int a=10,b=4,c=20,d=6;
label1.Text=a++*b+c*--d;
(A)144 (B)160 (C)140 (D)164
15.阅读下面的程序,程序的运行结果为(B)
int x=3,y=4,z=5;
String s = "xyz";
label1.Text=s+x+y+z;
(A)xyz12 (B)xyz345 (C)xyzxyz (D)12xyz
16.阅读下面的程序,程序的运行结果为(B)
int i=10,j=3;
float m=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.1
B.2
C.4
D.8
18.在C#中,表示一个字符串的变量应使用以下哪条语句定义? (B)
A.CString str;
B.string str;
C.Dim str as string
D.char * str;
19.C#中,新建一字符串变量str,并将字符串"Tom's Living Room"保存到串中,则应该使用下
列哪条语句? (B)
A.string str = "Tom\'s Living Room";
B.string str = "Tom's Living Room";
C.string str("Tom's Living Room");
D.string str("Tom"s Living Room");
20.设”int a=3,b=4,c=5;”表达式”(a+b)>c&&b==c”的值是( B )
A.true
B.false
C.3
D.7
21.设“int a=12;”则执行完语句“a++;a=a+3”后,a的值是(D )
A.12
B.15
C.13
D.16
22.以下数据中,属于int类型的是(A )
A.8
B.’8’
C.”8”
D.8.8
23.在C#以下哪个变量名是正确的 ( C )
A.$34
B.45b
C.a_3
D.int
24.以下哪句话是正确的? ( B )
A.C#是一种面向对象的开发语言,而JA V A不是。
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)
int a=5,b=10,c=15,max=0;
max = a>b?a:b; max = c<max?c:max;
A.0
B.5
C.10
D.15
28.在C#中,下列常量定义正确的是(B)。
A.const double PI 3.1415926;
B.const double Pi=2.7
C.define double PI 3.1415926
D.define double e=2.7
29.设a=6,b=4,则表达式b*a+3的值为( C )
A.3 B.18 C.27 D.36
30.标识符的名字不能使用c#语言中的关键字,如果要使用,则应使用(C)字符作为前缀:
A.’B.任意字符C.@ D./
31.在C#中,下列代码的运行结果是(A )。
float f = 123.56F;
object o = 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 )。
using System;
class Test
{
public enum WeekDays
{
Mon, Tue, Wed, Thur, Fri, Sta, Sun
}
static void Main()
{
WeekDays week = (WeekDays)2;
Console.WriteLine(week);
}
}
a) 2 b) Tue c) Wed d) 编译错误
33.以下代码段体现了C#中的( C )概念,该概念使得对象模型变得简单易懂。
int val = 10;
Object obj = 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) default B) anyelse
C) break D) goto
3.下列程序的输出结果是【C 】。
using System;
class Program
{ public static void Main(string[] args)
{ int x=1,a=0,b=0;
switch(x)
{ case 0: b++; break;
case 1: a++; break;
case 2: a++; b++; break;
}
Console.WriteLine(“a={0},b={1}”,a,b);
}
}
A) a=2,b=1 B) a=1,b=1 C) a=1,b=0 D) 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) return B) break C) continue D) goto
7.执行下列语句序列后,i和j的值分别是【 C 】
int i=3,j=5;
if(i-1>j) i--;else j--;
A) 2,4 B)2,5 C)3,4 D)3,5
8.下列语句序列执行后,j的值是【B 】
int j=5,i=6;
while(i-->3) --j;
A)1 B)2 C)3 D)4
9.以下for循环的执行次数是【B 】
for(int i=1;(i= =1)&(i>2);i++)
A)无限次B)一次也不执行C)执行1次D)执行2次
10.以下由do-while语句构成的循环执行次数是【C 】
int m=1;
do
{
++m;
}while(m<1);
A)有语法错误,不能执行B)一次也不执行C)执行1次D)执行2次
11.循环语句“for(int i=0;i<n;i++);”中循环体执行的次数为(C )
A.1
B.n-1
C.n
D.n+1
12.在下面循环语句中循环体执行的次数为(B )
for(int i=0;i<n;i++)
{if(i>n/2) break;}
A.n/2
B.n/2+1
C.n/2-1
D.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;
else else
y=x; y=-x;
C.while(x>=0) D.while(x>=0)
{ {
case true: y=x; case true: y=-x;
break; break;
case false: y=-x; case false: y=x;
break; break;
} }
15.以下关于C#代码的说法正确的是( A )。
using System;
class Test
{
static void Main()
{
for (int i = 1; i <= 3; i++)
{
switch (i)
{
case 1:
Console.Write(i.ToString());
case 2:
Console.Write((i * 2).ToString());
case 3:
Console.Write((i * 3).ToString());
}
}
}
}
A) 程序将报告编译错误,提示case标签不能贯穿到另一个标签,不能运行
B) 运行是输出149
C) 运行时输出123246369
D) 运行时在屏幕上没有输出
16.已知a,b,c的值分别是4,5,6,执行下面的程序段后,判断变量n的值为(C)
if(c<b) n=a+b+c;
else if(a+b<c) n=c-a-b;
else n=a+b;
A.3
B.-3
C.9
D.15
17.while语句循环结构和do…while 语句循环结构的区别在于(D)
A.while语句的执行效率较高
B.do…while语句编写程序较复杂
C.无论条件是否成立,while语句都要执行一次循环体
D.do…while循环是先执行循环体,后判断条件表达式是否成立,而while语句是先判断
条件表达式,再决定是否执行循环体.
18.下列代码输出正确的是(D)
namespace Answer
{
class Program
{
static void Main(string[] args)
{
int i,j;
for(i=1; i>=0; i--)
for(j=0; j<=i; j++)
Console.WriteLine(“i*j={0}”,i*j);
}
}
}
A.i*j=0 i*j=0 i*j=0
B.i*j=1 i*j=0 i*j=1
C.i*j=1 i*j=1 i*j=0
D.i*j=0 i*j=1 i*j=0
19.下面对i 值的输出结果说法正确的是(A)
namespace Answer
{
class Program
{
static void Main(string[] args)
{
int i =0;
do
{ i++;
} while(i<5);
Console.WriteLine(“i 值的为:{0}”,i) ;} } }
A.i 的值为: 5
B.i 的值为: 6
C.i 的值为: 7
D.i 的值为: 8
20.下面代码运行后,s 的值是(B)。
int s = 0;
for (int i = 1; i < 100;i++)
{
if (s > 10)
{
break;
}
if (i % 2 == 0)
{
s += i;
}
}
A. 20
B. 12
C. 10
D. 6
二、程序分析题
1.运行以下程序段,结果是(150 )
double k,t;
t=0;
for(int n=1;n<=10;n++)
{
for(k=1;k<=5;k++)
t=t+k;
}
Console.WriteLine(t);
运行以下程序段,结果是(总和为:25 )
using System;
class Sumw
{
static void Main( )
{
int i=1, sum=0;
while (i<=10)
{
sum+=i;
i+=2;
}
string s1="总和为:"+sum.ToString();
Console.WriteLine(s1);
}
}
2.以下程序运行后,变量a的值为( 10 )
int a=100;
for(int j=10;j>0;j-=2)
a-=j*3;
3.以下程序运行后,控件textBox1 显示内容为( 11 12 13 14 16 17 18 19 )
int i;
string s1="";
for(i=10;i<=20;i++)
{
if(i%5==0)
{
continue;
}
s1 += i.ToString() + " ";
}
Console.WriteLine(s1);
4.给出下列程序的运行结果:(1+2+3+…+100=5050)
using System
Class Dome
{
Static void Main()
{ int n=1,sum=0;
while (n<101)
{
sum+=n;
n++;
}
Console.WriteLine("1+2+3+…+100="+sum);
}
}。