C#编程习题.docx
- 文档编号:27608361
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:17
- 大小:37.09KB
C#编程习题.docx
《C#编程习题.docx》由会员分享,可在线阅读,更多相关《C#编程习题.docx(17页珍藏版)》请在冰豆网上搜索。
C#编程习题
以下有18道习题(当然,这并非全部的习题,最后应该会多增加2题,共20题),对于这20道题目,要求大家每道题目都能够做到看到题目,不看其他参考材料的情况下,能够实现出来。
期末考将会从中抽取三道题目(分数占60分),而期末考其实是要出三份试卷的。
所以总的需要从这份里面抽9道题目。
也就是这20题中有9题是肯定会出现在试卷中的。
对于本科目最后成绩的说明:
总评成绩=平时成绩*50%+期末成绩*50%
平时成绩与期末成绩都是100分制的。
平时成绩=出勤课堂纪律情况*40%+作业完成情况*60%对于作业完成情况的说明:
对于之前的作业,不管是否有提交,我都不再追究。
我只要求从发这份习题给你们开始,每周要按顺序完成如下的5道题目,把每道题目都自己理解完实现出来之后再交上来。
我知道要把这20题都弄懂,不是一件容易的事情,但不是不可能。
第一,我会提供一些材料,大家可以先把这些材料看一遍,大体有个印象,当遇到问题的时候,也要学会查找对应材料来解决问题。
第二,下面的每道题目,我都将会给出参考答案。
当然是以截图的方式。
也会在关键代码附上相应的注释。
还有一句话,希望能与大家共勉。
“学习,从来都是一个自觉的过程。
遇上一个好老师,会让你少走很多弯路,但不是替代你学习。
遇上一个不够好的老师,或许会多走些弯路,但不代表你就学不好。
事在人为,只要自己有心,外界条件再差也是可以攻克的;若是无心,外界条件再好,也会成为你的借口。
”
最后,再回到我们这门课的现实。
能否取得好成绩,能否不挂科,取决于你,而不取决于我。
规则我都已经说清楚了,最后结果如何我说了不算,你的实际行动和实际成绩说了算。
1、编写一个函数,函数名为Max,该函数用来获取给定三个整数的最大值。
在Main函数中
实现从屏幕中读取三个整数,然后输出这三个整数中最大的那个数的功能。
namespace_1
classProgram
{
staticvoidMain(string[]args)
{
("请输入3个数:
按回车结束");
inta,b,c,temp;
a=());最后在main函数中测试结果
代码:
namespaceConsoleApplication1
{
classProgram
{
staticvoidMain(string[]args)
{
inta,r;
("请输入一个正整数");
a=());
r=C105(a);
("该数是{0}位数",r);
int[]A=Db(a);
Shuzhu(A);
Cs(A);
}
staticintC105(inta)
{
inti=1;
while(a>10)
{
a=a/10;
returni;
}
staticint[]Db(inta)
{
intcount=C105(a);
int[]data=newint[count];
while(a>0)
{
data[--count]=a%10;
a=a/10;
}
returndata;
}
staticvoidShuzhu(int[]A)
{
for(inti=0;i<;i++)
{
("{0}",A[i]);
}
();
}
staticvoidCs(int[]A)
{
for(inti=0;i2;i++)
{
inttemp=A[i];
A[i]=A[-i-1];
A[-i-1]=temp;
}
("倒叙输出后的结果为");
for(inti=0;i<;i++)
}
();
}
}
}
2、请编写一个函数,计算出从m到n的数的和,比如m=3,n=300,则计算出从3一直加到
300的和。
并在Main函数中调用测试。
要求:
代码:
namespaceConsoleApplication1
{
classProgram
{
staticvoidMain(string[]args)
{
inta,b;
("请输入两个正整数分,别按回车结束");
a=());
b=());
For(a,b);
While(a,b);
Dowhile(a,b);
}
staticvoidFor(inta,intb)
for(inti=a;i<=b;i++)
{
sum=sum+i;
}
("从{0}到{1}的所有数的和={2}",a,b,sum);
}
3、在Main函数中测试。
4、代码:
namespace_1
{
classProgram
{
staticvoidMain(string[]args)
{
("请输入一个正整数,按回车键结束");
inta=());
("输入的数{0}被转化为二进制后的结果为{1}",a,Zhuanhua(a));
}
staticstringZhuanhua(inta)
{
StringBuilderresult=newStringBuilder();
while(a>0)
{
(0,a%2);
a=a/2;
}
}
}
5、编写一个函数,返回给定一个正整数m的n位二进制表示方法,若n小于实际给定数
的二进制位数,则返回其真实位数。
比如m=100,n=3,则返回1100100
比如m=100,n=8,则返回001100100
代码:
namespace_1
{
classProgram
{
staticvoidMain(string[]args)
{
("请输入一个正整数,按回车键结束");
inta=());
("请输入你想返回的二进制的位数");
intb=());
stringresult=Zhuanhua(a,b);
("输入的数{0}被转化为二进制后{1}位的结果为{2}",a,b,result);
}
staticstringZhuanhua(inta,intb)
{
StringBuilderresult=newStringBuilder();
intcount=0;
while(a>0)
(0,a%2);
a=a/2;
count++;
}
for(inti=count;i<=b;i++)
{
(0,0);
}
return();
}
}
}
6、写一个函数,实现对给定一个整型数组中的每个元素进行逆序重新存放。
例如,原来顺序为1,3,6,5,7,。
要求改为7,5,6,3,1。
并在Main函数中测试。
7、代码:
namespace_074
{
classProgram
{
staticvoidMain(string[]args)
{
("请输入一个整形数组中间用逗号隔开如\"10,11,12\"");
stringa=();
string[]tempData=(',');
int[]data=newint[];
for(inti=0;i<;i++)
{
data[i]=(tempData[i]);
data=Shuzhu(data);
("逆序输出后的数组如下");
Daying(data);
}
staticint[]Shuzhu(int[]data)
{
inttemp;
for(inti=0;i<2;i++)
{
temp=data[i];
data[i]=data[-i-1];
data[-i-1]=temp;
}
returndata;
}
staticvoidDaying(int[]data)
{
for(inti=0;i<;i++)
{
("{0},",data[i]);
}
}
8、写一个函数,给定一个数n,要求返回n行的杨辉三角形。
并在Main函数中测试。
9、代码:
namespace_074
{
classProgram
{
staticvoidMain(string[]args)
{
按回车结束!
");
intn)
("请输入要打印的杨辉三角的行数
intn=());
("{0}行的杨辉三角如下:
",n);
PrintYangaHuiTriangle(n);
}
staticvoidPrintYangaHuiTriangle(
{
int[,]data=newint[n,n];
for(inti=1;i<=n;i++)
{
data[i-1,0]=1;
data[i-1,i-1]=1;
}
for(inti=3;i<=n;i++)
{
for(intj=2;j
data[i-1,j-1]=data[i-2,j-2]+data[i-2,j-1];
}
for(inti=1;i<=n;i++)
{
for(intj=1;j<=i;j++)
{
("{0,-5:
D}",data[i-1,j-1]);
}
("\n");
}
}
}
}
10、编写一个函数,函数名为ReverseInt,实现逆序输出给定的一个整数。
比如,整
数为123,则输出321。
并在Main函数中调用测试。
11、代码:
namespace_074
{
classProgram
{
staticvoidMain(string[]args)
{
("请输入一个整数,并按回车结束!
");
intn=());
("{0}逆序之后的整数为{1}",n,ReverseInt(n));
oUpper();
}
12、猜数游戏
在这个实验中,我们将尝试编写一个猜数游戏程序,这个程序看上去有些难度,但是如果按下列要求循序渐进地编程实现,会发现其实这个程序是很容易实现的。
那么,现在就开始吧,先编写第1个程序,然后试着在第1个程序的基础上编写第2个程序,……
a)程序1编程先由计算机“想”一个1〜100之间的数请人猜,如果人猜对了,则计算机给出提示“Right!
”,否则提示“Wrong!
”,并告诉人所猜的数是大(Toohigh)还是小(Toolow),然后结束游戏。
要求每次运行程序时机器所“想”的数不能都一样。
b)程序2编程先由计算机“想”一个1〜100之间的数请人猜,如果人猜对了,则结
束游戏,并在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水
平;否则计算机给出提示,告诉人所猜的数是太大还是太小,直到人猜对为止。
c)程序3编程先由计算机“想”一个1〜100之间的数请人猜,如果人猜对了,则结
束游戏,并在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水
平;否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10次,
如果猜了10次仍未猜中的话,结束游戏。
d)程序4编程先由计算机“想”一个1〜100之间的数请人猜,如果人猜对了,在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平,则结束游戏;否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10次,如果
猜了10次仍未猜中的话,则停止本次猜数,然后继续猜下一个数。
每次运行程序可以反复猜多个数,直到操作者想停止时才结束。
a)写一个类Robot,该类包含三个实例变量:
name(string类型),age(ushort类
型),isOn(bool类型)。
初始化该三个变量的值为”unknown”,0和false。
(强调:
不能通过构造函数来初始化)。
给这三个实例变量分别添加获取值和设置值的方法。
在Main方法中测试该Robot类。
b)为允许该Robot类的使用者在创建机器人对象的时候指定该对象的name,age,isOn三个实例变量的值,请添加一个构造函数包括这三个参数,并添加一个默认构造函数。
c)添加一个静态变量robotsCreated用来记录机器人创建的个数。
更新构造函数里的代码,以使该robotsCreated变量是实时更新的。
namespace_074
{
classProgram
{
staticvoidMain(string[]args)
{
Robotr=newRobot();
="一";
true;
(
"机器人的名字为{0},年龄为{1},
开启状态为{2}"
(
"现在机器人有{0}个",;
Robotr2=newRobot("二",2,
false);
(
"机器人的名字为{0},年龄为{1},
开启状态为
{2}"
(
"现在机器人有{0}个",;
staticvoidMain(string[]args)
{
Robotr=newRobot();
=n“・
一j
=1;
=true;
("机器人的名字为{0},年龄为{1},开启状态为{2}",,,;
("现在机器人有{0}个",;
Robotr2=newRobot("二",2,false);
("机器人的名字为{0},年龄为{1},开启状态为{2}",,,;
("现在机器人有{0}个",;
}
}
a)一个方法SportsCheck方法为特定SportsCar对象的maxSpeed和horsePower检测其是否是跑车,是的话返回true,否则为false。
为maxSpeed,horsePower,maxSpeedRequirement和horsePowerRequirement封装属
性。
b)写另一个类,包含一个Main方法来证明SportsCar类。
如:
("Tom","Julie","Teddy","Mary")
或者调用
("Peter")
再写一个DriverCheck方法,当给其指定一个名字,该方法能够验证该名字是不是合法的驾驶员,如果是则返回true,否则返回false.
在另一个类的Main()函数中验证这两个方法。
c)现在其他类需要知道SportsCar类的最低时速要求和最小马达要求,请你为SportsCar类添加一个静态方法GetMinimumRequirements,该方法允许传入两个refint类型参数,目的是将SprtsCar类的maxSpeedRequirement和horsePowerRequirement两个静态变量传递出去。
d)添加一个测试类Calculator,该类包含一个静态方法NumberCruncher,在该方法中调用SportsCar的GetMinimumRequirements方法,将SprtsCar的最低时速要求和最低马达要求打印出来。
e)为SportsCart类再添加一个方法MostPowerful,该方法用来比较两辆车哪个马力更大,返回马力大的那辆车。
f)为SportsCar类再添加一个方法MostPowerful,利用函数重载,该方法用来比较三辆车那辆马力更大,返回最大马力的那辆车。
usingSystem;
using
usingnamespace_074
{
classProgram
{
staticvoidMain(string[]args)
{
SportsCarqq=newSportsCar();quals(driver))
{
result=true;
break;
}
}
returnresult;
}
a)ElectronicDevice成为另外三个类的基类,并包括如下三个成员。
1.一个私有的实例变量brandName(string类型)
2.一个公有的属性BrandName用来访问brandName
3.一个私有的变量isOn(bool类型)
还要包括两个方法SwitchOn(该方法必须打印出"On",并且将isOn设置为true)以及SwitchOff(该方法必须打印出"Off",并且将isOn设置为false)编写合适的测试代码用来测试基类以及子类所包括的成员和方法。
b)在三个子类中分别重写SwitchOn和SwitchOff方法。
在每个方法中除了实现基类
的功能外,还需要多输出brandName的值。
女口Radio类
的SwitchOn方法,应该输出以下内容:
On
Radio
并且将isOn设置为True.
c)给ElectronicDevice添上两个构造函数
一个默认构造设置brandName为"unknow",isOn设置为false.
一个包含两个参数的构造函数,分别用来初始化brandName和isOn的值
d)给Radio类添加应该double类型的currentFrequency,表示当前频率
给Computer添加一个int的internalMemory,表示内存大小
给MobilePhone添加一个uint的lastNumberDialed,表示最后一个拨的号码。
给Radio,Computer,MobilePhone类分别添加如下两个构造函数
1.一个默认构造函数,除了初始化基类所拥有的属性外,还要给子类所特有的属性设定默认值。
2.一个带两个参数的构造函数,一个参数为brandName,另一个参数为各个基类的
特殊属性(currentFrequency,internalMemory,lastNumberDialed)
e)写一个LaptopComputer类继承Computer类。
给该类定义一个uint类型的实例变量maxBatteriLife,用来表示电池使用寿命为该类写一个默认构造函数,初始化各个字段的默认值。
写一个带参数的构造函数,可以初始化该类的各个字段的值。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 编程 习题