C#基础试题附答案.docx
《C#基础试题附答案.docx》由会员分享,可在线阅读,更多相关《C#基础试题附答案.docx(20页珍藏版)》请在冰豆网上搜索。
![C#基础试题附答案.docx](https://file1.bdocx.com/fileroot1/2023-7/5/83d303d5-e4e8-4591-bd60-3ca3cbb6c6b8/83d303d5-e4e8-4591-bd60-3ca3cbb6c6b81.gif)
C#基础试题附答案
一、选择题
1、能作为C#程序的基本单位是()。
A.字符B.语句C.函数D.源程序文件
答案:
B
2、将变量从字符串类型转换为数值类型可以使用的类型转换方法是()。
()()答案:
D
3、数据类型转换的类是()。
C.ConstD.Single
答案:
B
4、字符串连接运算符包括&和()。
A.+B.-C.*D./
答案:
A
5、先判断条件的当循环语句是()。
A.do...whileB.whileC.while...doD.do...loop
答案:
B
6、下面几个函数,()是重载函数.
f1(int)f1(int)f1(int,int)k(int)
A.四个全和4和3和4
答案:
C
8、以下的C#代码:
staticvoidMain(string[]args)
{
("运行结果:
{0}",());
();
}
代码运行结果为()。
A.在控制台窗口显示“运行结果:
”
B.在控制台窗口显示“运行结果:
{0}”
C.在控制台窗口显示“运行结果:
,Console.ReadLine”
D.如果用户在控制台输入“A”,那么程序将在控制台显示“运行结果:
A”
答案:
D
9、在C#中定义一个数组,正确的代码为()。
arraya=newint[5];[]arraya=newint[5];
arraya=newint[];[5]arraya=newint;
答案:
B
10、在C#中,下列代码运行后,变量Max的值是()(选择一项)Inta=5,b=10,c=15,Max=0;
Max=a>ba:
b;
Max=cMax;
答案:
C
11、在C#中,关于continue和break,以下说法正确的是( )
Abreak是中断本次循环Bcontinue是中断本次循环,进入一下次的循环
Cbreak是中断本次循环,进入一下次的循环Dcontinue是中断整个循环
答案:
A
12、在C#中,关于while和do…while,以下说法正确的是( )
Awhile先执行然后判断条件是否成立Bwhile最少的循环次数是1次
Cdo…while先执行然后判断条件是否成立Ddo…while最少的循环次数是0次
答案:
C
13、在C#中,下列变量定义与赋值正确的是( )
Ainta=同学 Bfloata=老师Cdoublea=教室 Dchara=’学’
答案:
D
14、表达式“abcde”==”abcde”+”2006”的值为()
A.True2006B.trueC.falseD.0
答案:
C
15、在C#中定义类时,使用的关键字是()
A、interfaceB、intC、classD、overrides
答案:
C
二.写出下列程序的结果
1、
{
inty=1,x;
if(y!
=0)
{
x=5;
}
elseif(y<0)
{
x=4;
}
else
{
x=3;
}
("x={0}”,x);
}
答案:
5
2、
{
intx,y=0;
do
{
x=y++;
(x);
}while(y<6);
}
答案:
15
3、
classTest
{
staticvoidMain()
{
intx=5;
inty=x--;
("y={0}",y);
y=--x;
("y={0}",y);
}
}
答案:
5,5
4、
classTest
{
public staticvoidMain()
{
static int[]a={1,2,3,4,5,6,7,8};
int s0,s1,s2;
s0=s1=s2=0;
for (inti=0;i<8;i++)
{
switch (a[i]%3)
{
case 0:
s0+=[i];break;
case 1:
s1+=[i];break;
case 2:
s2+=[i];break;
}
}
(s0 +""+s1+""+s2);
}
}
答案:
9+12+13
5、
usingSystem;
classTest
{
public staticvoidMain()
{
ints=0,i=1;
for(; ;i++)
{
if(s>50) break;
if(i%2==0) s+=i;
}
("i,s="+i+","+s);
}
}
答案:
14,S=2+4+6...+14,56
6、写出下列函数的功能。
staticfloatFH()
{
floaty=0,n=0;
6、 intx=());.+99/100之和。
答案:
{
("sum=");
doublesum=1;
("{0}",Sum());
();
}
staticdoubleSum()
{
doublesum=1;
doublei=1;
while(i<=100)
{
sum+=i/(i+1);
i=i+1;
}
returnsum;
}
7、编写一个程序,用while语句,求出1+(1+2)+(1+2+3)+...+(1+2+3+...+10)之和。
答案:
{
intsum=0;
("和为:
");
("{0}",Sum());
();
}
staticintSum()
{
intsum=0;
inti=1;
inta=0;
while(i<=10)
{
a=a+i;
sum=sum+a;
i=i+1;
}
returnsum;
}
8、有关系式1*1+2*2+3*3+...+k*k<2000,编一个程序,求出满足此关系式的k的最大值。
答案:
{intsum=0;
("最大值为:
{0}",Max());
();
}
staticintMax()
{
intsum=0;
intk=1;
while(sum<2000)
{
sum+=k*k;
k++;
}
returnk-1;
}
9、编写一个程序,要求用while循环语句,打印1到100的正整数,每行打印5个数,每列右对齐。
答案:
{
Quee();
();
}
staticvoidQuee()
{
for(inti=1;i<=100;i++)
{
("{0}",i);
if(i%5==0)
{
();
i++;
}
}
return;
}
10、编一个程序,利用二重for循环语句,打印出九九乘法口诀表。
答案:
{
Chengfabiao();
();
}
staticvoidChengfabiao()
{
for(inti=1;i<=9;i++)
{
for(intj=1;j<=i;j++)
{
("{0}*{1}={2}",j,i,i*j);
}
();
}
return;
}
11、编一个程序,利用for循环语句,求出1!
+2!
+3!
+...+10!
的和。
答案:
{
intsum=0;
("{0}",Sum());
();
}
staticintSum()
{
intsum=0;
inta=1;
for(inti=1;i<=10;i++)
{
a=a*i;
sum=sum+a;
}
returnsum;
}
13、编一个程序,定义一个字符串变量,输入字符串,然后再输入一个字符,在字符串中查找该字符出现的次数。
答案:
{
("请输入字符串:
");
stringstr=();
("请输入字符:
");
charc=());
ints=Str(str,c);
("{0}",s);
();
}
staticintStr(stringstr,charc)
{
inta=0;
for(inti=0;i<;i++)
{
if(str[i]==c)
{
a++;
}
}
returna;
}
15、编一个程序,输入一个整数,判定它为几位数。
例如,99是2位数,-100是3位数。
答案:
{
("{0}",Math());
();
}
staticintMath()
{
inta=());
intb=0;
intc=1;
if(a<0)
{
b=-a;
}
if(a>0)
{
b=a;
}
while(b>=10)
{
b=b/10;
c++;
}
returnc;
}
四、面向对象
1、定义一个车辆(Vehicle)基类,具有Run、Stop等方法,具有Speed(速度)、
MaxSpeed(最大速度)、Weight(重量)等域。
然后以该类为基类,派生出Bicycle、Car等类。
并编程对该派生类的功能进行验证。
答案:
基类:
classVehicle
{
publicdoubleSpeed;
publicdoubleMaxspeed;
publicdoubleWeight;
publicvoidRun()
{
("我跑。
。
。
。
。
");
}
publicvoidStop()
{
("我停。
。
。
。
。
");
}
派生类:
classBicycle:
Vehicle
{
}
classCar:
Vehicle
{
}
对派生类功能的验证:
staticvoidMain(string[]args)
{
Bicyclep=newBicycle();
();
Carc=newCar();
();
();
}
2、写一个控制台应用程序,接收一个长度大于3的字符串,完成下列功能:
1)输出字符串的长度。
2)输出字符串中第一个出现字母a的位置。
3)在字符串的第3个字符后面插入子串“hello”,输出新字符串。
4)将字符串“hello”替换为“me”,输出新字符串。
5)以字符“m”为分隔符,将字符串分离,并输出分离后的字符串。
答案:
{
("输入字符:
");
stringstr=();
while<=3)
{
str=();
}
("字符串的个数:
");
("{0}",;
intindex=('a');
if(index>=0)
{
("出现字符a的位置:
");
("{0}",index);
}
else
{
("字符串中不含字符a");
}
stringstr1="hello"+(3);
("出现新字符串:
");
(str1);
str1=("hello","me");
("替换后的字符串:
");
(str1);
string[]str2=('m');
for(inti=0;i<;i++)
{
("分割后的字符串:
");
(str2[i]);
}
();
}
3、编写一个控制台应用程序,完成下列功能,并写出运行程序后输出的结果。
1)创建一个类A,在A中编写一个可以被重写的带int类型参数的方法MyMethod,
并在该方法中输出传递的整型值后加10后的结果。
2)再创建一个类B,使其继承自类A,然后重写A中的MyMethod方法,将A中接收的整型值加50,
}
3)在Main方法中分别创建A和类B的对象,并分别调用MyMethod方法。
答案:
并输出结果。
classA
{
publicvirtualvoidMyMethod(intnum)
{
num+=10;
("{0}",num);
}
classB:
A
{
publicoverridevoidMyMethod(intnum)
{
num+=50;
("{0}",num);
}
{
Aa=newA();
(3);
Bb=newB();
(8);
();
4编写一个类Calculate1,实现加、减两种运算,然后,编写另一个派生类Calculate2,实现乘、除两种运算。
classCalculate1
{
publicvirtualvoidMix(inta,intb)
{
("运算符为:
");
strings=();
intc;
if(s=="+")
{
c=a+b;
("{0}",c);
}
elseif(s=="-")
{
c=a-b;
("{0}",c);
}
}
publicoverridevoidMix(inta,intb)
{
("运算符为:
");
strings=();
intc;
if(s=="*")
{
c=a*b;
("{0}",c);
}
elseif(s=="/")
{
c=a/b;
("{0}",c);
}
}
{
Calculate1c=newCalculate1();
(3,4);
Calulate2d=newCalulate2();
(8,4);
();
}
5、编写出一个通用的人员类(Person),该类具有姓名(Name)、年龄(Age)、性别(Sex)等域。
然后对Person类的继承得到一个学生类(Student),该类能够存放学生的5门课的成绩,并能求出平均成绩。
最后在Main函数中对student类的功能进行验证。
classPerson
{
publicstringName;
publicintAge;
publicstringSex;
}
classStudent:
Person
{
publicdoubleAvg()
{
int[]Score=newint[5]{23,34,56,78,90};
inti=0;
intsum=0;
while(i<5)
{
sum+=Score[i];
i++;
}
return(double)sum/5;
}
{
Students=newStudent();
("姓名:
");
="张三";
("{0}",;
("年龄:
");
=19;
("{0}",;
("性别:
");
="男";
("{0}",;
("成绩:
");
("{0}",());
();
}