一、选择题
1.CLR是一种()
A.程序设计语言 B.运行环境 C.开发环境 D. API编程接口
2.C#语言源代码文件的后缀名为()
A..c# B .cc C. .csp D. .cs
3.构建桌面应用程序需要.NET提供的类库是()
A.https://www.wendangku.net/doc/8019084561.html, B.Windows Form C.XML https://www.wendangku.net/doc/8019084561.html,
4.与C++等语言相比,C#的简单性主要体现在()
A.没有鼓励的全局函数 B.没有指针
C.不能使用未初始化的变量
D.解决了“DLL地狱”
5.C#中导入某一命名空间的关键字是()
A.using https://www.wendangku.net/doc/8019084561.html,e C.import D.include
6.C#中程序的入口方法名是()
A.Main B.main C.Begin https://www.wendangku.net/doc/8019084561.html,ing
二、简答题
1.C#语言的主要优势有哪些?
2.如何看待C#、CLR和.NET之间的关系?
3.VS2010平台如何有效地实现各类应用程序的管理?
4.最常见的C#项目有哪几类?简述创建他们的基本操作步骤?
第二章C#语言基础
一、选择题
1.C#中的值类型包括三种,它们是()
A.整型、浮点型、基本类型 B.数值类型、字符类型、字符串类型
C.简单类型、枚举类型、结构类型
D.数值类型、字符类型、枚举类型、
2.C#的引用类型包括类、接口、数组、委托、object和string。其中object()根类
A.只是引用类型的
B.只是值类型的
C.只是string类型的
D.是所有值类型和引用类型的
3.浮点常量有三种格式,下面()组的浮点常量都属于double类型。
A. 0.618034,0.618034D, 6.18034E-1
B.0.618034,0.618034F, 0.0618034E1
C.0.618034,0.618034f, 0.618034M
D.0.618034F, 0.618034D, 0.618034M
4.下面字符常量表示有错误的一组是()
A.’\\’ , ’\u0027’ , ’\x0027’
B. ‘\n’ , ’\t’ , ’\037’
C.’a’ , ’\u0061’ , (char)97
D.’\x0030’ , ’\0’ , ‘0’
5.下列标识符命名正确的是()
A. _int,Int,@int
https://www.wendangku.net/doc/8019084561.html,ing,_using,@using
C.NO1,NO_1,NO.1
D. A3,_A3,@A3
6.当表达式中混合了几种不同的数据类型时,C#会基于运算的顺序将他们自动转换成同一类型。但下面()类型和decimal类型混合在一个表达式中,不能自动提升为decimal.
A. float
B. int
C.uint
D. byte
7.设有说明语句int x=8;则下列表达式中,值为2的是()
A.X+=x-=x;
B.x%=x-2;
C.x>8?x=0:x++;
D.x/x=x+x;
8.C#数组主要有三种形式,它们是()
A.一维数组、二维数组、三维数组
B.整型数组、浮点型数组、字符型数组
C.一维数组、多维数组、不规则数组
D.一维数组、二维数组、多维数组
9.设有说明语句double[,,]tab=new double [2,3,4];那么下面叙述正确的是()
A. tab是一个三维数组,它的元素一共有24个
B. tab是一个有三个元素的一维数组,它的元素初始值分别是2,3,4
C. tab是一个维数不确定的数组,使用时可以任意调整
D. tab是一个不规则数组,数组元素的个数可以变化
10.C#的构造函数分为实例构造函数和静态构造函数,实例构造函数可以对()进行初始化,静态构造函数只能对()进行初始化。
A.静态成员
B.非静态成员
C.静态成员或非静态成员
D. 静态成员和非静态成员
11.C#实现了完全意义上的面向对象,所以它没有(),任何数据域和方法都必须封装在类体中。
A.全局变量
B.全局常数
C.全局方法
D.全局变量、全局常量和全局方法
12.方法中的值参数是()的参数。
A.按值传递
B.按引用传递
C.按地址传递
D.不传递任何值
13.下面对方法中的ref和out参数说明错误的是()
A.ref和out参数传递方法相同,都是把实在参数的内存地址传递给方法,实参与形参指
向同一个内存存储区域,但ref要求实参必须在调用之前明确赋过值
B.ref是将实参传入形参,out只能用于从方法中传出值,而不能从方法调用处接收实参数据
C.ref和out参数传递的是实参的地址,所以要求实参和形参的数据类型必须一致
D.ref和out参数要求实参和形参的数据类型或者一致,或者实参能被隐式地转化为形参的类型
14.下列叙述中,正确的是()
A.接口中科院有虚方法
B.一个类科院实现多个接口
C.接口能被实例化
D.接口中科院包含已实现的方法
二、简答题
1.判断下列标识符的合法性。
X.25 4foots exam-1 using main Who_an_I Large&Small _Years val(7) 2xy
2.下列常量是否合法?弱不合法,指出原因;若合法,指出它的数据类型。
32767 35u 1.25e3.4 3L 0.0086e-32 ‘\87’true “a”‘a’‘\96\45’.5 5UL
3.指出下列哪些表示字符?哪些表示字符串?哪些既不表示字符也不表示字符串?
‘0x66’China “中国”“8.42”‘\0x33’56.34 “\n\tox34”‘\r’‘\\’‘8.34’“\0x33”‘\0’“Computer System!\n”“\\\\doc\\share\\my1.doc”@”\\doc\share\my1.doc”@”Joe said””Hello””to me”“Joe said\”Hello\”to me”
4.将下列代数式写成C#的表达式。
(1)ax2+bx+c (2)(x+y)3(3)(a+b)/(a-b)
5.计算下列表达式的值。
(1)x+y%4*(int)(x+z)%3/2 其中,x=3.5,y=13,z=2.5
(2)(int)x%(int)y+(float)(z*w) 其中,x=2.5,y=3.5,z=3,w=4
6.写出下列表达式运算后a的值,设原来的a都是10。
(1)a+=a;(2)a%=(7%2);(3)a*=3+4;
(4)a/=a+a;(5)a-=a;(6)a+=a-=a*=a;
三、填空题
1.C#中可以把任何类型的值赋给object类型变量,当值类型赋给object类型变量时,系统要进行( )操作;而将object类型变量赋给一个值类型变量,系统要进行( )操作,并且必须加上( )类型转换。
2.C#特有的不规则数组是数组的数组,也就是说它的数组元素是( ),并且它的内部每个数组的长度( )。
3.数组在创建时可以根据需要进行初始化,需要注意的是,初始化时,不论数组的维数是多
少,都必须显式地初始化数组的( )元素。
四、程序分析
1.程序运行结果:______________
class Exe1
{
Static void Main(string[] args)
{
int x,y,z;
bool s;
x=y=z=0;
s=x++!=0||++y!=0&&++y!=0;
Console.WriteLine(“x={0},y={1},z={2},s={3}”,x,y,z,s);
Console.Read();
}
}
2.程序运行结果:_________________
class Exe2
{
Static void Main(string[] args)
{
int a,b;
a=b=1;
b+=a/b++;
Console.Write(“a={0},b={1},”,a,b);
b+=--a+(++b);
Console.WriteLine(“a={0},b={1}”,a,b);
Console.Read();
}
}
3.程序运行结果:________________
class Exe3
{
Static void Main(string[] args)
{
int Hb,Lb,x;
x=ox1af034;
Hb=(x>>16)&0xFFFF;
Lb=x&0x00ff;
Console.Write(“Hb is {0}\t”,Hb);
Console.WriteLine(“Lb is {0}”,Lb);
Console.Read();
}
}
4.程序运行结果:_________
class Exe4
{
Static void Main(string[] args)
{
int a=2,b=7,c=5;
switch(a>0)
{
case true:
switch(b<10)
{
case true: Console.Write(“^”);break;
case false: Console.Write(“!”);break;
}
break;
case false:
switch(c==5)
{
case false: Console.Write(“*”);break;
case true: Console.Write(“#”);break;
}
break;
}
Console.WriteLine();
Console.Read();
}
}
5.程序运行结果:___________
class Exe5
{
Static void Main(string[] args)
{
int[] x;
x=new int[10];
int[] y={1,2,3,4,5,6,7,8,9,10};
const int SIZE=10;
int[] z;
z=new int[SIZE];
for (int i=0; i { z[i]=i*2+1; Console.Write(“{0,4}”,z[i]); } Console.Read(); } } 6.下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数,请填空。class Exe6 { Static void Main(string[] args) { int i,j; for(i=0;________;i++) { j=i*10+6; if(_________) { continue; } Console.WriteLine(“{0}”,j); } Console.Read(); } } 7.程序运行结果:____________ public class Test { public void change1(string s) { s=s+”Change1”; } Public void change2(ref string s) { s=s+”Change2”; } public void change3(string s1,out string s2) { s1=s1+”Change3”; s2=s1; } } class Exe7 { static void Main(string[] args) { string s1,s2; s1=”Hello,”; Test t1=new Test(); t1.change1(s1); Console.WriteLine(“s1 after call to change1 is {0}”,s1); t1.change2(ref s1); Console.WriteLine(“s1 after call to change2 is {0}”,s1); t1.change3(s1,out s2); Console.WriteLine(“s1 after call to change3 is {0}”,s1); Console.WriteLine(“s2 after call to change3 is {0}”,s2); Console.Read(); } } 五、编程题 1.斐波那契数列中的前两个数是1和1,从第三个数开始,每个数等于前两个数的和,编程计算此数列的前30个数,且每行输出5个数。 2.从键盘上输入一个整数n的值,按下式求出y,并输出n和y的值(y用浮点数表示)。 y=1!+2!+3!+4!+……+n! 3.设计一个程序,输出所有水仙花数,所有水仙花数是一个三位整数,其各位数字的立方和等于该数本身,例如,153=13+53+33。 4.设计一个程序,输入一个四位整数,将各位数字分开,并按其反序输出。例如:输入1234,则输出4321。要求必须用循环语句实现。 5.求π/2的金是指的公式为:π/2=(2/1)*(2/3)*(3/4)*(4/5)*……*(2n/2n-1)*(2n/2n+1)*…… 其中,n=1,2,3,……。设计一个程序,求出当n=1000是π的近似值。 6.设计一个程序,输入一个十进制数,输出相应的十六进制数。 7.当x>1时,Hermite多项式定义为: 1 n=0 H n(x)= 2x n=1 2xH n-1-2(n-1)H n-2(x) n>1 当输入浮点数x和整数n后,求出Hermite多项式前n项的值。 8.找出数组a中最大值的下标,输出下标及最大值。 9.判断s所指的字符串是否是“回文”(即顺读和逆读是相同的字符)。 10.输入一组非0整数(以0作为结束标志)到一位数组中,求出这一组数的平均值,并统计出正数和负数的个数。 11.设计一个程序,求一个4*4矩阵两对角线元素之和。 12.输入一个字符串,串内有数字和非数字字符,例如,“abc2345 345fdf678 jdhfg945”,将其中连续的数字作为一个整数,依次存放到另一个整型数组b中。如将2345存放到b[0]。345存放到b[1],678放入b[2],……统计出字符串中的整数个数,并输出这些整数。 第三章C#面向对象编程 一、选择题 1.C#语言的核心是面向对象编程(OOP),所有OOP语言都应至少具有三个特性:() A.封装、继承和多态 B.类、对象和方法 C.封装、继承和派生 D.封装、继承和接口 2.以下有关属性的叙述正确的是:() A.要求与字段域一一对应 B.只包含get访问器的属性是只写属性 C.不能把它当变量使用 D.在静态属性访问器中可访问静态数据 3.假设class Mclass类的一个方法的签名为:public void Max(out int max,params int[]a),m1是Mclass类的一个对象,maxval是一个int型的值类型变量,arrayA是一个int型的数组对象, 则下列调用该方法有错的是() A. m1.Max(out maxval) B. m1.Max(out maxval,4,5,2) C. m1.Max(out maxval,ref arrayA) D. m1.Max(out maxval,3,3.5) 4.枚举类型是一组命名的常量集合,所有整型都可以作为枚举类型的基本类型,如果类型省略,则约定为() A.uint B.sbyte C.int D.ulong 二、简答题 1.举一个现实世界中继承的例子,用类的层次图表示出来。 2.什么是抽象类和密封类?它们有什么不同? 3.分别在什么情况下使用隐式数值转换和显式数值转换? 三、填空题 1.析构函数不能由程序显式地调用,而是由系统在_________时自动调用。如果这个对象是一个派生类对象,那么在调用析构函数时,除了执行派生类的析构函数,也会执行基类的析构函数,其执行顺序与构造函数__________. 2.C#实现了完全意义上的面向对象,所以它没有____,任何数据域、方法都必须封装在类中。 3.在类中,如果一个数据成员被声明为static的,则说明这个类的所有实例都共享这个static 数据成员。在类体外,static成员不能通过_______来访问,它必须通过________来访问。 四、程序分析 1.下面的程序,输入不同参数,如:5、hello、0、1212121212121212等,观察并分析运行结果。class Test { static void Main(string[] args) { while(true) { String s=Console.ReadLine(); if(s==”exit”) break; try { int i = 10/int32.Parse(s); Console.WriteLine(“结果是”+i); } catch(IndexOutOfRangeException e) { Console.WriteLine(e.Message); } catch(FormatException e) { Console.WriteLine(e.Message); } catch(DivideByZeroException e) { Console.WriteLine(e.Message); } catch(OverflowException e) { Console.WriteLine(e.Message); } } Console.Read(); } } 2.指出下面代码中错误的地方,并进行修改。 using System; …… namespace PavelTsekov { interface I1 { void MyFunction1(); } interface I2 { void MyFunction2(); } class Test:I1,I2 { public void I1.MyFunction() { Console.WreitLine("Now I can say this here is I1 implemented!"); } public void I2.MyFunction() { Console.WreitLine("Now I can say this here is I2 implemented!"); } } class AppClass { static void Main(string[] args) { Test t=new Test(); t.MyFunction1(); t.MyFunction2(); Console.Read(); } } } 3.分析下面的代码,指出Digit和byte直接的转换方式,并说明原因。 using System; …… namespace Digit { public class Digit { byte value; public Digit(byte value) { if(value<0||value>9) throw new ArgumentException(); this.value=value; } public static implicit operator byte(Digit d) { return d.value; } } class Program { static void Main(string[] args) { Digit dig=new Dight(7); byte num=dig; Console.WriteLine("num={0}",num); Console.ReadLine(); } } } 五、编程题 1.定义描述复数的类,并实现复数的输入和输出。设计三个方法分别完成复数的加、减和乘法运算。 2.定义全班学生成绩类,包括姓名、学号、C++成绩、英语成绩、数学成绩和平均成绩。设计下列4个方法。 (1)全班成绩的输入。 (2)求出每一个同学的平均成绩。 (3)按平均成绩的升序排序。 (4)输出全班成绩。 3.定义一个描述学生基本情况的类,数据成员包括姓名、学号以及C++和数学成绩,成员函数包括输出数据、设置姓名和学号、设置三门课的成绩,求出总成绩和平均成绩。 4.设有一个描述坐标点的CPoint类,其私有变量x和y代表一个点的x、y坐标值。编写程序实现以下功能:利用构造函数传递参数,并设其默认参数值为60和75,利用成员函数display()输出这一默认值;利用公有成员函数setpoint()将坐标值修改为(80.150),并利用 成员函数输出修改后的坐标值。 5.定义一个人员类CPerson,包括数据成员:姓名、编号、性别和用于输入/输出的成员函数。在此基础上派生出学生类CStudent(增加成绩)和教师类(增加教龄),并实现对学生和教师信息的输入/输出。 6.把定义平面直角坐标系上的一个点的类CPoint作为基类,派生出描述一条直线的类CLine,在派生出一个矩形类CRect。要求成员函数能求出两点间的距离、矩形的周长和面积等。设计一个测试程序,并构造完整的程序。 简答题 3.属性是类的数据成员吗?属性的作用是什么?get和set关键字的作用是什么/ 4.什么是方法?C#允许在类的外部声明方法吗? 5.简述值类型与引用类型的区别。 6.在方法调用中,参数按值传递与按引用传递的区别是什么?基本数据类型作为参数默认按什么方式传递,类对象作为参数默认按什么方式传递?类对象可以按值方式传递吗?基本数据类型参数按引用传递时,应该怎么做?关键字ref和out的区别是什么? 7.什么叫方法的重载?两个方法是重载关系时,应满足什么条件? 8.简述构造函数的作用? 实验步骤 1.设计一个简单的Windows应用程序,在文本框中输入两个点的坐标值,单击”确定”时显示两点之间的距离,如国所示. 要求定义一个Point类,包括: (1)两个私有字段表示两坐标值 (2)一个构造函数通过传入的参数对坐标值初始化 (3)两个只读属性对坐标值的读取 一个方法包含一个Point类对象作为形参该对象和自己的距离 2.自定义一个时间类.该类包含小时,分,秒字段与属性,具有将秒增加1秒的方法,如图所示. 要求定义一个Time类,包括: (1)三个私有字段表示时,分,秒 (2)两个构造函数,一个通过传入的对时间初始化,另一个获取系统当前的时间 (3)三个只读入属性实现对时,分,秒的读取 (4)一个于对秒增加1秒(注意60进位的问题). 图13 3.设计一个Windows应用程序,在该程序中定义一个学生类和班级类,以处理每个学生的学号、姓名,语文、数学和英语三门课程的期末考试成绩,要求: (1)能查询每个学生的总成绩。 (2)能显示全班前三名的名单。 (3)能显示单科成绩最高分和不及格的学生名单。 (4)能统计全班学生的平均成绩。 (5)能显示各科成绩在不同分数段的学生人数百分比。 设计提示: (1)定义一个Student学生类,包含字段(学号、姓名、语文成绩、数学成绩、英语成绩)和属性(总成绩)等。 (2)定义一个StudentList班级类,包含一个Student类型的数组(用来保存全班学生的信息)以及若干个实现上述要求的方法等。 (3)设计用户操作界面,首先让用户能输入一个学生的信息,当单击“添加”按钮时把这些信息添加到班级对象的学生数组中。当单击“完成”按钮时调用班级类的方法来显示索要来统计的统计结果。当用户在查询框中输入学生的名字后,并单击“查询”按钮时显示该学生的总成绩。 1.选择题 (1)面向对象的特点主要概括为() A.可分解性、可组合性和可分类性 B.继承性、封装性和多态性 C.封装性、易维护性、可扩展性和可重用性 D.抽象性、继承性、封装性 (2)要使某个类能被同一个命名空间中的其他类访问,但不能被这个命名空间以外的类访问,该类可以() A.不适用任何关键字 B.使用privat关键字 C.使用const关键字 D.使用protected关键字 (3)类的字段和方法的默认访问修饰符是() A.public B.private C.protected D.internal (4)下列关于构造函数的描述中,()选项是正确的。 A.构造函数名必须与类名相同 B.构造函数不可以重载 C.构造函数不能带参数 D.构造函数可以声明返回类型 (5)C#中TestClass为一自定义类,其中有以下属性定义: public void Property{……} 使用以下语句创建了该类的对象,并让变量obj引用该对象: TestClass obj=new TestClass(); 那么,可通过()方式访问类TestClass的Property属性。 A.MyClass.Property B.obj::Property C.obj.Property D.obj.Property() 2.思考题 (1)如何理解面向对象程序设计中的类和对象?二者是什么关系? (2)面向对象的主要特点有哪些? (3)类的声明格式中包含哪些部分?各有什么意思? (4)什么是实例方法?什么是静态方法? (5)类可以使用哪些修饰符?各代表什么含义? (6)简述new、this、static、ref、out、params、get、set、value这些关键字的作用。(7)简述构造函数和析构函数的作用。 3.上机练习题 (1)构造一个类,可以分别对任意多个整数、小数或字符串进行排序。 (2)自定义一个时间类,该类包含时、分、秒字段与属性,具有将时间增加1秒、1分和1小时的方法,具有分别显示时、分、秒和同事显示时分秒的方法。 (3)创建一个Windows应用程序,输入两个正整数,单击“计算”按钮,求出这两个数的最大公约数。 要求:将求最大公约数的算法声明为一个静态方法,由“计算”按钮调用。 (4)构造一个图书类book,能记录和访问书店图书信息,包括标题、作者、价格、库存等,同时能选择不同的构造函数来初始化类的实例。 1.选择题 (1)下面有关虚方法的描述中,正确的是() A.虚方法能在程序运行时,动态确定要调用的方法,因而比非虚方法更灵活 B.在定义虚方法时,基类和派生类的方法定义语句中都要带上virtual修饰符 C.重写基类的虚方法时,为消除隐藏基类成员的警告,需要带上new修饰符 D.在重写虚方法时,需要同时带上override和virtual修饰符 (2)下列方法中,()是抽象方法。 A. static void func(){} B.virtual void func(){} C.abstract void func(){} D.override void func(){} (3)下列关于接口的说法中,()是错误的。 A.一个类可以有多个基类和多个基接口 B.抽象类和接口都不能被实例化 C.抽象类自身可以定义成员而接口不可以 D.类不可以多重继承而接口可以 (4)已知类Base,Derived的定义如下: Class Base { Public void Hello() { System.Console.Write(“Hello in Base!”); } } Class Derived : Base { Public new void Hello() { System.Console.Write(“Hello in Derived!”); } } 则语句段”Derived x=new Derived();x.Hello();”在控制台中的输出结果为____ A.Hello in Base! B.Hello in Base!Hello in Derived! C.Hello in Derived! D.Hello in Derived!Hello in Base! 思考题 (1)什么是类的继承?怎样定义派生类? (2)简述创建派生类时,构造数的调用. (3)怎样定义基类虚方法,并在派生类中重写基类虚方法? (4)抽象方法与虚方法有什么异同? (5)什么是抽象类?它有什么特点?它和接口有何异同? (6)简述通过委托来调用对象方法的基本过程 上机练习题 (1)定义磁盘类Disk及派生类HardDisk(硬盘),Flash(闪盘)和CKROM(光盘)在其中定义记录磁盘容量的字段,并通过虚拟方法和重写方法来模拟对磁盘内容的写入和删除. (2)设计并编程实现规则平面几何图形(所谓规则是指各边相等,各个内角也相等的等边图形)的继承层次,要求定义一个抽象基类Shape,同它派生出4个派生类:等边三解开,下方形,等边五边形,等边六边形,并通过抽象方法的实现来计算各种图形的面积 (3)以委托对象作为方法的参数,对学生类对象分别按照姓名,年龄和年级来比较两个学生对象,实现程序以不同的排序方法来输出学生信息. (4)在第7章习题的设计题(4)的book类中,添加每卖出一份图书时,就触发一个事件.在订购者中处理该事件,输出销售数据信息. 第一章C语言概述1.1选择题 【题1.1】以下不是C语言的特点的是( B ) A.C语言简洁、紧凑 B.能够编制出功能复杂的程序 C. C语言可以直接对硬件进行操作 D.C语言移植性好 【题1.2】以下不正确的C语言标识符是( D )。A.ABC B.abc C.a_bc D.ab.c 【题1.3】以下正确的c语言标识符是( C )。 A.%x B.a十b C.a123 D.test! 【题1.4】一个c程序的执行是从( A ). A.main( )函数开始,直到main( )函数结束B.第一个函数开始,直到最后一个函数结束 C.第一个语句开始,直到最后一个语句结束 D.main( )函数开始,直到最后一个函数结束 【题1.5】一个C语言程序是由(B)。 A)一个主程序和若干子程序组成 B)函数组成 C)若干过程组成 D)若干子程序组成 【题1.6】一个c程序是由( B )。 A.一个主程序和若干子程序组成 B.一个或多个函数组成 C. 若干过程组成 D.若干子程序组成 【题1.7】C语言派程序的基本单位是( B )。 A.过程 B.函数 c子程序 D.标识符 【题1.8】编辑程序的功能是( A )。 A.建立并修改程序 B.将c源程序编译成目标程序C.调试程序 D.命令计算机执行指定的操作 1.2填空题 【题1.9】c语言符号集包括【英文字母、数字和一些有待定含义的标点符号】。 【题1.10】一个c程序有且仅有一个【main()】函数。 【题1.11】C程序的基本单位是【函数】。 【题1.12】一个c派程序有【1】个main( )函数和【若干】二个其他函数。【题1.13】在一个C源程序中,注释部分两侧的分界符分别是【/*】和【*/】。 【题1.14】结构化设计中的三种基本结构是【顺序结构、分支结构和循环结构】。 【题1.15】在C语言中,输入操作是由库函数【scanf】完成的,输出函数是由库函数【printf】完成的。 1.3编程题 【题1.16】编写一个程序,在屏幕上输出你的姓名。试着上机编辑、编译、运行你的程序。 #include 第一部分《C语言程序设计》专题复习资料一.选择题 1、C语言中字符型(char)数据在内存中的存储形式是:( ) A)原码 B)补码 C)反码 D)ASCII码 2、C语言中长整型(long)数据在内存中的存储形式是:( ) A)原码 B)补码 C)反码 D)ASCII码 3、C语言的运算符按运算对象的数目可以分为:() A)单目运算符 B)单目和双目运算符 C)单目、双目和三目运算符 D)单目、双目、三目和四目运算符 4、C语言中,int、char和short三种类型数据所占用的内存是() A)均为2个字节 B)由用户自己定义 C)由机器的字长决定 D)任意的 5、C语言中的简单数据类型包括() A)整型、实型、逻辑型 B) 整型、实型、字符型 C) 整型、逻辑型、字符型 D) 整型、实型、逻辑型、字符型 6、在C语言中,十进制的47可以等价的写成() A)2f B)02f C)57 D)057 7、将字符g赋值字符变量c,正确的表达式是() A)c=’g’ B)c=101 B)C)c=’\147’ D)c=’0147’ 8、已知:char a; int b; float c; double d;执行语句c=a+b+c+d;后变量c的类型是() A)int B)char C)float D)double 9、已知int j,i=1; 执行语句j=-i++后,j 的值是() A)1 B)2 C)-1 D)-2 10、已知int i, a; i=(a=2*3,a*5),a+6”后,变量i 的值是() A)6 B)12 C)30 D)36 11、已知 int i=5;执行语句i+=++i;后, i的值() A)10 B)11 C)12 D)无答案 12、字符串“\\\22a,0\n”的长度是() A)8 B)7 C)6 D)5 13、已知char a=’\70’;则变量a中包含的字符数为()个。 A)1 B)2 C)3 D)说明非法 14、已知:int x=1, y=-1;则执行语句“printf(“%d\n , (x--&++y)”);”的输出结果是:() A) 1 B) 0 C) -1 D) 2 15、已知: int a=b=c=1 且均为int 型变量,则执行以下语句: ++a||++b&&++c后变量a的值为(),变量b的值为() A) 不正确 B) 0 C) 2 D) 1 A) 1 B) 2 C) 不正确 D) 0 16、设a=2 ,b=3, 则执行表达式c=b*=a-1后,变量c的值是() A) 5 B) 3 C) 2 D) 4 17、要判断char型变量m是否为数字,可以使用以下表达式() A)0<=m&&m<=9 B) ‘0’<=m&&m<=’9’ C)“0”<=m&&m<=”9” D) 以上答案均错误 18、已知:#define N 3; 的宏定义,执行语句i=N*3后,i的值是() A) 3 B)6 C) 9 D) 以上答案均错误 19、若有以下宏定义: #define X 5 #define Y X+1 #define Z Y*X/2 则执行以下printf语句后,输出结果是() int a =Y; printf(“%d”,Z); printf(“%d\n”,--a); A) 7,6 B)12,6 C)12,5 D) 7,5 20、若有以下宏定义: #define N 2 #define Y(n) ((N+1)*n) 则执行以下”z=2*(N+Y(5))”,语句后,输出结果是() A)语句有错误 B)z=34 C) z= 70 D)z无定值 21、若int k; 且有下面的程序片段,则输出结果是() k=3; if(k<0) printf(“####”); else printf(“&&&&”); A) ####B) &&&& C) ####&&&& D)有语法错误 22、设有说明语句:int a=1 ,b=0 ;则执行以下语句后的输出为() switch(a) { case 1: switch(b) { case 0: printf(“**0**”);break; case1: printf(“**1**”);break; } case 2:printf(“**2**”);break; } A) **0** B) **0****2** C + + 复习资料 一、选择题 1.程序中的预处理命令是指以()字符开头的命令。 A.@ B.#C.$ D.% 2.空白符是()符的统称。 A.空格、制表、回车B.空格、制表、逗号 C.空格、回车、分号D.冒号、制表、回车 3.在#include 命令中不可以包含()。 A.头文件B.程序文件C.用户头文件D.目标文件4.一个程序中必须有并且只有一个命名为()的函数。 A.Main B.main C.void D.intmain 5.C + +程序的扩展名为()。 A..obj B..exe C..cpp D..c 6.在VC环境下,为运行一个程序而建立的工作区的扩展名为()。 A..obj B..exe C..dsw D..sp 7.数据类型int、char、float、double的类型长度之和为()。 A.10 B.12 C.16 D.17 8.常数120和-4.205的类型为()。 A.整型和双精度型B.短整型和单精度型 C.长整型和双精度型D.整型和单精度型 9.若x=25,则计算y=x + +表达式后,x和y的值分别为()。 A.26和25B.25和26 C.25和25 D.26和26 10.在switch语句中,每个语句标号中的关键字case后面的表达式必须是()。 A.变量B.常量C.一般表达式D.函数调用11.当在程序中执行到()语句时,只结束本层循环内语句或switch语句的执行。 A.continue B.break C.goto D.return 12.数组元素a[i]是该数组中的第()个元素。 A.i B.i+1C.i-1 D.2*i 13.在函数体中又调用自身函数则称为()调用。 A.非递归B.直接递归C.间接递归D.末尾递归14.在定义类对象的语句执行时,系统在建立每个对象的过程中将自动调用该类的()使其初始化。 A.构造函数B.析构函数C.复制函数D.赋值函数15.若需要把一个类AB定义为另一个类CD的友元类,则应在类CD的定义中加入一条语句声明为()。 A.friend AB; B.friend class AB;C语言复习资料
《C语言程序设计》专题复习资料
C + + 复习资料
c期末复习资料