一、选择题 1.以下不属于C#值类型的是( )。 A.内置值类型
B.数组 C.结构 D.枚举 2.C#语言程序从( )开始执行。
- A) 程序中第一条可执行语句
- B) 程序中第一个函数
- C) 程序中的main函数
- D) 包含文件中的第一个函数
3、以下说法中正确的是( )。 A、C#语言程序总是从第一个定义的函数开始执行 B、在C#语言程序中,要调用的函数必须在main( )函数中定义
C
、C#语言程序总是从main( )函数开始执行 D、C#语言程序中的main( )函数必须放在程序的开始部分 4.下列正确的标识符是( )。 A.-a1 B.a[i]
C.a2_i D.int t 5.小数类型(decimal)和浮点类型都可以表示小数,正确说法:( )
- 两者没有任何区别
- 小数类型比浮点类型取值范围大
C.小数类型比浮点类型精度高
- 小数类型比浮点类型精度低
6.可用作C#程序用户标识符的一组标识符是( )。
- void define +WORD B. a3_b3 _123 YN
- for -abc Case D. 2a DO sizeof
7.引用类型主要有4种:类类型、数组类型、接口类型和( )。 A.对象类型 B.字符串类型
C.委托类型 D.整数类型 8.将变量从字符串类型转换为数值类型可以使用的类型转换方法是( )。 A.Str() B.Cchar C.CStr()
D.int.Parse();
- C#是一种面向( )的语言。
- 机器 B.过程C.对象 D.事物
10.假定一个10行20列的二维整型数组,下列哪个定义语句是正确的( )。
- int[]arr = new int[10,20]
- int[]arr = int new[10,20]
- int[,]arr = new int[10,20]
- int[,]arr = new int[20;10]
11.属于C#语言的关键字( )。
- abstract B. camel
- Salary D. Employ
12.以下不属于.NET编程语言的是( )。
A
.Java B.C# C.VC.NET D.VB.NET 13.C#语言经编译后得到的是( )。 A.汇编指令 B.机器指令 C.本机指令
D
.Microsoft中间语言指令
- C#的引用类型包括类、接口、数组、委托、object和string。其中object( )的根类。
A.只是引用类型 B.只是string类型 C.只是值类型
D
.是所有值类型和引用类型 15.以下不属于C#简单值类型的是( )。 A.int类型 B.char类型
C.枚举类型 D.bool类型 16..浮点常量有三种格式,下面( )组的浮点常量都属于double类型。
A.3.1415,3.1415D,0.31415E+1 B.3.1415,3.1415d,3.1415m C.3.1415,3.1415F,3.1415D D.3.1415,31415E-4,3.1415M 17.当表达式中混合了几种不同的数据类型时,C#会基于运算的顺序将它们自动转换成同一类型。但下面( )类型和decimal类型混合在一个表达式中,不能自动提升为decimal。 A.int B.uint C.byte
D
.float 18.以下赋值语句中,正确的有( )。
A.ushort n1=60000 B.short n2=60000 C.long n=666;int m=n; D.decimal d1=60;double d2=d1; 19.在C#编制的财务程序中,需要创建一个存储流动资金金额的临时变量,则应使用语句( )。 A.int money; B.string money;
C.decimal money; D.dim money as double; 20.在C#中,新建一字符串变量str,并将字符串“Tom’s living room”保存到str中,则应使用语句( )。
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”); 21.以下数组声明中,不正确的有( )。 A.int[] a ; B.int[] a=new int[2]; C.int [] a={1,3}
D
.int [] a=int []{1,3} 22.以下可以为二维数组进行赋值的是( )。 A.int[,] a=new int[,]{1,2,3,4,5,6,7,8}; B.int[,] a=new int[2,3]{{1,2},{3,4}}; C.int[,] a=new int[2,3]{{1,2,3},{1,2}};
D.int[,] a=new int[,]{{1,2,3},{4,5,6}}; 23.设有数组声明语句int[, ,] arr=new int[2,3,4];则下面说法正确的是( )。 A.arr是一个有三个元素的一维数组,元素初始值分别是2,3,4。
B.arr是一个三维数组,它的元素一共有24个。 C.arr是一个维数不确定的数组,使用时可以任意调整。 D.arr是一个不规则数组,数组元素的个数可以变化。 24.设double型变量d1和d2的取值分别为12.5和5.0,那么表达式d1/d2+(int)( d1/d2)-(int) d1/d2的值为( )。 A.2.9 B.2.5
C
.2.1 D.2 25.设bool型变量b1和b2的取值分别为true和false,那么表达式b1&&(b1||!b2)和b1|(b1&!b2)的值分别为( )。
A
.true true B.true false C.false false D.false true 26.设int a=9, b=6; double c;执行语句c=a/b+0. 8;后c的值是( )。
- 1 B. 1. 8 C. 2 D. 2. 3
27.设int a=0, b=25, c=10, d; 则执行语句d=c<1?a+10:b;后d的值是( )。 A.0 B.1 C.10
D
.25 28.设int型变量x的值为4,那么表达式x << (x >> 2)的值是( )。 A.2 B.4
C
.8 D.10 29.下列语句执行后y的值为( )。 int x=0, y=0; while(x<10) {y+=(x+=2);} A.10 B.20
C
.30 D.55 30.要使用变量age来存储人的年龄,则将其声明为( )类型最为适合。 A.sbyte
B
.
byte C.int D.float 31.若多维数组a有4行3列,那么数组中第10个元素的写法为( )。 A.a[10] B.a[2,1]
C
.
a[3,0] D.a[4,1] 32.拆箱转换是指将一个( )的数据显式地转换成一个( )数据。 A.对象类型、对象类型
B.
对象类型、值类型 C.值类型、对象类型 D.值类型、值类型
- .NET框架类库的根命名空间是(),它包含所有基类型对象,所有其他类型都从基类型继承而来。
A.System B. Object C.Exception D.Console 34.枚举元素的默认基础类型为( )。默认情况下,第一个枚举数的值为( )。
- enum 1 B. enum 0 C. int 0 D. int 1
- C#中( )是所有异常类的基类,异常处理中将可能发生异常情况的程序代码放到( )语句块中。
A.System try
B. Exception try
- Exception catch D. Error try
36.为了简洁代码,C#语言中使用( )语句来导入名命空间。 A.Console B.System
C. using D.namespace
二、程序阅读
- 写出以下程序的运行结果。
using System; class Test { public static void Main() { int x = 5; int y = x++; Console.WriteLine(y); y=++x; Console.WriteLine(y); } }
5
7 2.写出下列函数的功能。 static int SA(int a,int b) { if (a>b) return 1; else if (a==b) return 0; else return -1; }
比较两个整数a和b的大小,若a>b则返回1,若a= =b则返回0,若a 3.写出下列函数的功能。 static float FH() { float y=0,n=0; int x = Convert.ToInt32(Console.ReadLine()); //从键盘读入整型数据赋给x while (x!=-1) { n++; y+=x; x = Convert.ToInt32(Console.ReadLine()); } if (n==0) return y; else return y/n; }
求出从键盘上输入的一批常数的平均值,以-1作为结束输入的标志。
- using System;
class Test { static int[] a = { 1, 2, 3, 4, 5, 6, 7, 8 }; public static void Main() { int s0, s1, s2; s0 = s1 = s2 = 0; for (int i = 0; i < 8; i++) { switch (a[i] % 3) { case 0: s0 += Test.a[i]; break; case 1: s1 += Test.a[i]; break; case 2: s2 += Test.a[i]; break; } } Console.WriteLine(s0 + " " + s1 + " " + s2); } }
9
12
15 5.写出以下程序运行结果。 using System; class Test { const int N=5; public static void Main (){ int a = 0; for(int i=1; i
5 8 11 14 6.写出以下程序的运行结果。 using System; class Test { public static void Main () { int[ ] a ={2,4,6,8,10,12,14,16,18}; for (int i=0; i<9; i++) { Console.write(“ ”+a[i]); if ((i+1)%3==0) Console.writeLine(); } } }
2 4 6
8 10 12
14 16 18 7.写出以下程序运行结果。 using System; class Test { public static void Main () { int s=0; for (int i=1; ; i++) { if (s>50) break; if (i%2==0) s+=i; } Console.writeLine ("i, s=" + i + "," + s); } }
i,s = 15, 56
- static void Main(string [ ] args)
{ string[] words = new string[ ] { “a”,”b”,”c”}; foreach ( string word in words) { Console.WriteLine(word); } }
a
b
c
三、程序设计
1
.打印出所有的
"
水仙花数
"
,所谓
"
水仙花数
"
是指一个三位数,其各位数字立方和等于该数本身。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _4_1 { class Program { static void Main(string[] args) { int a, b, c; for (int i=100; i<1000;i++) { a = (int)(i / 100); b = (int)((i / 10)%10); c = i % 10; if (a * a * a + b * b * b + c * c * c == i) { System.Console.WriteLine(i); } } System.Console.ReadLine(); } } }
2
.输入两个正整数
m
和
n
,求其最大公约数和最小公倍数。(辗转相除法) using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _4_2 { class Program { static void Main(string[] args) { int m, n, a, b, tmp; System.Console.Write("请输入第一个数:"); m = int.Parse(System.Console.ReadLine()); System.Console.Write("请输入第二个数:"); n = int.Parse(System.Console.ReadLine()); a = m; b = n; if (m < n) { tmp = m; m = n; n = tmp; } while (m % n!=0) { tmp = m % n; m = n; n = tmp; } System.Console.WriteLine("最大公约数是:{0}", n); System.Console.WriteLine("最小公倍数数是:{0}", a*b/n); System.Console.ReadLine(); } } }
3.
用数组来求
Fibonacci
数列问题。
Fibonacci
数列是
1
,
1
,
2
,
3
,
5
,
8
,
13
,
21
,
34
……要求程序每行输出
5
个
Fibonacci
数。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace P2_14 { class Program { static void Main(string[] args) { int i; int[] f = new int[20]; f[0] = 1;f[1] = 1; for (i = 2; i < 20; i++) f[i] = f[i - 2] + f[i - 1]; for (i=0;i<20;i++) { if (i % 5 == 0 && i != 0) Console.WriteLine(); Console.Write("{0,-8}", f[i]); } Console.ReadLine(); } } }
4
.输入一个学生若干门课的成绩,然后输出其总成绩、平均成绩、最好成绩、最差成绩,分析并给出评语。(平均成绩高于
90
(包括
90
)为
A
等;平均成绩低于
90
并高于
80
(包括
80
)为
B
等;平均成绩低于
80
并高于
60
(包括
60
)为
C
等;平均成绩低于
60
为
D
等;) using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _4_4 { class Program { static void Main(string[] args) { int i,tmp,num=0,avg,max,min; string grade; System.Console.Write("请输入科目数:"); i=int.Parse(System.Console.ReadLine()); int[] fenshu = new int[i]; for (int j = 0; j < i; j++) { System.Console.Write("请输入第{0}科成绩:",j+1); fenshu[j] = int.Parse(System.Console.ReadLine()); } max = fenshu[0]; min = fenshu[0]; for (int j = 0; j < i; j++) { num = num + fenshu[j]; if (fenshu[j] > max) max = fenshu[j]; if (fenshu[j] < min) min = fenshu[j]; } avg = num / i; switch (avg / 10) { case 10: case 9: grade = "A等"; break; case 8: grade = "B等"; break; case 7: case 6: grade = "C等"; break; default: grade = "D等"; break; } System.Console.WriteLine("总成绩为:{0}",num); System.Console.WriteLine("平均成绩为:{0}",avg); System.Console.WriteLine("最好成绩为:{0}",max); System.Console.WriteLine("最差成绩为:{0}",min); System.Console.WriteLine("评语为:{0}", grade); System.Console.ReadLine(); } } }