C#编程题 考试题库.docx
- 文档编号:11155962
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:25
- 大小:29.79KB
C#编程题 考试题库.docx
《C#编程题 考试题库.docx》由会员分享,可在线阅读,更多相关《C#编程题 考试题库.docx(25页珍藏版)》请在冰豆网上搜索。
C#编程题考试题库
C#编程题考试题库
1.编写一个控制台应用程序,允许用户输入一个长英文字符串,然后统计并输出其中大写
字母的个数,小写字母的个数,数字的个数,符号的个数。
2.编写一个控制台应用程序,允许用输入一个字符串,然后在程序中判断该字符串是否为
回文数,如果是回文数,则输出:
“您输入的(用户输入的字符串)是回文数。
”,否则则
输出“您输入的(用户输入的字符串)不是回文数。
”
3.编写一个控制台应用程序,允许用户输入一个字符串,然后将该字符串逆序输出。
4.编写一个名为Complex的类,用来实现复数的运算。
所谓复数是形如:
RealPart+
ImaginaryPart*i形式的数,其中i表示-1平方根。
使用私有的float类型来保存得数的
实部与虚部,提供以下公共方法:
Plus,用来实现两个复数的相加,复数的加法是分别将
实部与虚部相加。
Subtract,用来实现两个复数的减法,复数的减法是分别将实部与虚部
相减。
重写ToString方法,用来输出该复数的字符串表示形式。
字符串的格式形如:
a+
bi
5.编写一个控制台应用程序,允许用户指定源文件路径,目标文件路径及一个不大于255
的正整数。
然后以二进制方式读出该文件的内容,并使用用户输入的整数对文件内容进
行异或运算后写入到用户给定的目标路径中。
6.编写一个控制台应用程序,首先在应用程序内部生成一个不大于指定数字的随机正整数
(如2048),然后要求用户猜测该数,每次可以让用户从控制台中输入一个整数,如果用
户输入的整数大于程序内部的数字,则提示用户该数字过大,否则则提示数字过小,直
到猜中为止,也可以在程序中指定最大猜测次数。
7.要求一任意长度字符串中不同的字符以及它的个数。
8.把一段字符串用“右起竖排”的古文格式输出。
9.已知数组int[]max={6,5,2,9,7,4,0};用快速排序算法按降序对其进行排列,并返回数组。
10.随即生成一个0~100范围内的数字,然后对其进行猜测~
11.从键盘输入一个正整数,按数字的相反顺序输出。
12.从键盘上输入两个整数,由用户回答它们的和,差,积,商和取余运算结果,并统计出
正确答案的个数。
13.键盘输入正整数n,求出n与其反序数之和并输出。
例如,输入2038,输出应为
2038+8302=10340。
14.利用迭代公式:
计算实数x的立方根,当,yn,1,yn,?
ε时,yn,1为的近似值。
15.输入正整数i和n,由程序负责从i开始找起,连续找出n个素数并显示在屏幕上。
如
输入10和8后,输出的8个素数应为:
11,13,17,19,23,29,31,37。
16.求下述三个序列的累加和(每一序列各累加n项,正整数n通过cin从键盘输入)。
s1=1/5+1/4+3/11+2/7+5/17+3/10+7/23+…
s2=2/1+3/2+5/3+8/5+13/8+21/13+34/21+…
s3=1/1-3/(1+4)+5/(1+4+7)-7/(1+4+7+10)+9/(1+4+7+10+13)-…
17.对于n=2,5,8,11,„,20,23,分别求出E(n)=1/1!
+1/2!
+„+1/n!
之值并
输出它们。
要求按如下三种方式来进行求解,并对它们的运行速度及优劣性进行比较。
(1)使用如下轮廓的三重循环来实现:
for(intn=2;n<=23;n+=3)//求出多个不同的E
for(inti=1;i<=n;i++)//共累加n个项
for(intj=1;j<=i;j++)//每个项中用到j的阶乘
…
(2)去掉最内层用来求阶乘的循环,而改为使用二重循环的实现方法:
for(intn=2;n<=23;n+=3)//求出多个不同的E
for(inti=1;i<=n;i++)//共累加n个项
…
(3)改写成使用一重循环的实现方法:
除了去掉用来求阶乘的最内层循环外,还要在求E(5)时接着使用(而不再重新计算)已算出的E
(2)值,求E(8)时接着使用已算出的E(5)值,如此等等。
for(intn=1;n<=23;n++)//从第1项开始,一共(最多)累加23项
„//当累加到2,5,8,„,20,23项时,输出当时的累加结果E值
18.求满足下述两个条件的最小自然数n:
(1)n的个位数字为8;
(2)将n的个位数字8移到其它各位数字之前(如205128移过后为820512),所得的新数恰为n的4倍。
点评:
若将n的个位数字改为6时(如153846移过后为615384),求解方法完全类似。
思考:
可否任意指定个位数(的数值),以求解相同性质的更具有一般性的问题,
19.任意输入10个正整数,求出其中互不相同的数的个数num,以及此num个数中哪一
个数的出现次数最多,共出现了几次。
#include
usingnamespacestd;
intmain()
{
ints[],num=10,times,max=0,i,t;
cout<<"请输入10个正整数:
"< for(inti=0;i<10;i++) { cin>>s[i]; } fori=0;i<10;i++) { times=1; for(intj=0;j<10;j++) if(s[i]==s[j]) { num--; times++; } if(times>max) { max=times; t=s[i]; } } cout<<"互不相同的数的个数为: "< cout< } 20.编程序,输入字符串s,而后统计出s中各数字字符的出现次数并输出结果。 #include { intx=0,num[10]; chars[]; cout<<"请输入一个字符串: "< cin>>s[]; for(inti=0;i { switch(s[i]) { case'0': {num[0]++; x++; break;} case'1': {num[1]++; x++; break;} case'2': {num[2]++; x++; break;} case'3': {num[3]++; x++; break;} case'4': {num[4]++; x++; break;} case'5': {num[5]++; x++; break;} case'6': {num[6]++; x++; break;} case'7': {num[7]++; x++; break;} case'8': {num[8]++; x++; break;} case'9': {num[9]++; x++; break;} } } cout<<"字符串中出现了"< cout<<"数字: "; for(inti=0;i<10;i++) { cout< } cout< cout<<"次数: "; for(inti=0;i<10;i++) { cout< } cout< 21.编程序,输入任意一个字符串s1,而后由s1形成另两个字符串s2和s3并显示在屏幕上。 其中s2是s1甩掉其尾部的所有非字母字符后得到的字符串,而s3则由s2甩掉其前导 的所有非字母字符后形成的字符串。 例如,程序执行后的屏幕显示结果可为: Inputs1: 36262/x+y*z-aD007END! %%%60++=--! s2=36262/x+y*z-aD007END s3=x+y*z-aD007END 22.将输入的2进制数(一个非“0”即“1”的字符串)化为10进制数。 提示: 用字符数组a盛放所输入的二进制数;而后从后往前逐一计算每一位的“位权”w(2的0次方、2的1次方、...),再计算“位权”乘以“位值”并累加到一个初值为0的变量value上,最后输出该value。 思考: 如何把8进制数或16进制数化为10进制数。 更进一步,如何把某一个k进制的数化为10进制数呢, 23.将输入的罗马数据化为10进制数。 假设罗马数据中只使用如下7个“基值”字母: M、D、C、L、X、V、I,分别用来表示1000、500、100、50、10、5、1。 如,罗马数 据LXXXVII表示10进制的87。 24.将输入的10进制正整数化为2进制数。 提示: 可采用“逐次除以2,倒者排余数”的方法实现。 即是说,使用一个int型数组a盛放逐次得到的各余数,最后将数组a中的各余数倒着输出来。 思考: 如何把10进制正整数化为8进制数或16进制数。 更进一步,如何把10进制正整数化为某一个k进制的数呢, 25.将输入的10进制正整数转换为罗马数据。 假设罗马数据中只使用“基值”字母: M、D、 C、L、X、V、I,分别用来表示1000、500、100、50、10、5、1。 26.由20个正整数排成一圈,编一个程序找出连续的四个数,其和是最大的(不小于圈 上任何其它连续的四个数之和)。 提示: 说明一个int型数组来存放那20个正整数,而后通过循环,从累加出的20个不同和数中找出其中的最大者。 注意,由于将数组看成是“圈状”的,最后一个数的“后继”应是第一个数,所以要用到取模的运算。 27.对于整型数组a,10,和b,10,,编制程序完成下列任务: (1)由用户从键盘为两个数组输入值; (2)求出两个数组的最大元和最小元; (3)把数组a和b中的整数分别从小到大和从大到小排序; (4)把两个有序的数组a和b组成一个长度为20的有序数组c,20,。 28.用折半查找方法,在元素呈升序排列的具有15个元素的数组a中查找值为key的那 一元素的序号即下标号并输出(其中的key值通过键盘输入)。 若数组中没有值为key 的元素,则提示信息“Nosuchelement! ”。 所谓的折半查找方法如下: 先用key值与处于15个元素之“中间”的那一元素进行比较,若恰好相等,则那一“中间”元素的序号即为所求;若key值大于那一“中间”元素,则将查找范围缩小到数组的后一半去继续查找,否则将查找范围缩小到前一半去继续查找。 29.设计一个程序,它可以把最近的20天的气温值以柱形图的形式显示出来,假设气温在 22,35度之间(取整),温度的高低以由“*”组成的“柱”的高低来表示。 提示: 在“文本模式”的“字符屏幕”上“画图”时,通常将“字符屏幕”与程序中的一个二维字符数组建立对应关系,而后按某种计算方法(或计算公式)算出应该在“字符屏幕” 的哪些位置处“画点”,最后将已准备好的当前字符数组各元素的值显示到“字符屏幕”上。 30.设有4行4列的数组b,其元素b[i][j]=3*i+2*j-6(i、j=0,1,2,3)。 编程序,实 现: (1)求第二行4元素的累加和; (2)求第四列4元素之平均值; (3)求主对角线4元素中负数的个数。 31.设有二维字符数组dig[10][10],其元素值均为数字字符('0','1',„,'9'),编程 序,首先通过使用rand函数来为数组dig设置初值,而后统计出其中10个数字字符各 自出现的次数。 提示: 通过“rand()%10+48”可生成一个随机数字字符值。 32.说明5个行列数有关系的二维数组用于表示矩阵A、B、C、D、E。 首先给A、B二 矩阵赋初值,而后计算A、B的和矩阵C,乘积矩阵D,以及A的转置矩阵E,并显示 出各运算结果。 33.用户从键盘输入任意一个正整数n,程序负责将该正整数转换为如下形式的“混英表 示字符串”并显示出来: 如输入n为302时,输出: three(100)-zero(10)-two (1);输入n 为14895时,相应的输出应为: one(10000)-four(1000)-eight(100)-nine(10)-five (1)。 提示: 说明如下一个二维数组eng并在转换过程中使用。 chareng[10][6]={"zero","one","two","three","four","five","six","seven","eight","nine"}; 34.写一条for语句,计数条件为n从100~200,步长为2;然后再用while语句实现同样的 循环。 35.编写一段程序,运行时向用户提问“你考了多少分,(0~100)”,接受输入后判断其等 级并显示出来。 判断依据如下: 等级={优(90~100分);良(80~89分);中(60~69分);差(0~59分);}36.输入一个整数,将各位数字反转输出。 37.使用穷举法并分别用for、while、do…while循环语句求出1~100之间的质数。 38.求出1~1000之间的所有能被7整除的树,并计算和输出每5个的和。 39.编写一个控制台程序,分别输出1~100之间的平方、平方根、自然对数、e指数的数学 用表。 40.设计一个包含多个构造函数的类,并分别用这些构造函数实例化对象。 41.编写一个矩形类,私有数据成员为举行的长(len)和宽(wid),无参构造函数将len和 wid设置为0,有参构造函数设置和的值,另外,类还包括矩形的周长、求面积、取举 行的长度、取矩形的长度、取矩形的宽度、修改矩形的长度和宽度为对应的形参值等公 用方法。 42.编写一个类,要求带有一个索引器可以存储100个整型变量。 43.编写一个类Cal1,实现加、减两种运算,然后,编写另一个派生类Cal2,实现乘、除两 种运算。 44.建立三个类: 具名、成人、官员。 居民包含身份证号、姓名、出生日期,而成人继承自 居民,多包含学历、职业两项数据;官员则继承自成人,多包含党派、职务两项数据。 要求每个类中都提供数据输入输出的功能。 45.编写一个类,其中包含一个排序的方法Sort(),当传入的是一串整数,就按照从小到大的 顺序输出,如果传入的是一个字符串,就将字符串反序输出。 46.设计一个类,要求用事件每10秒报告机器的当前时间。 47.编写一个窗体程序,用菜单命令实现简单的加、减、乘、除四则运算,并将结果输出到 对话框。 48.编写一个具有主菜单和快捷菜单的程序,实现文本文件的打开、修改和保存。 49.在label控件中随机输入20个1~1000之间的整数,求出其中所有的素数的和。 50.编写一个程序,通过使用主菜单和工具栏按钮实现与Window记事本间的文本数据拷贝。 51.仿照word中的“文件打开”对话框界面,编制一个自己的文件打开模式对话框。 52.自己编写一个控件,使得该控件放置在窗体上之后,可以通过拖动四个顶点随意地改变 控件的形状。 (提示: 在控件的Paint事件过程中编写外观绘制代码)53.、编写一个程序,将一幅位图显示在一个图片框中,对位图惊醒45度旋转后,将图中 所有的红色替换为黑色,然后存盘。 54.、编写一个控制台程序,分别将字符串“hello,myfriend”写入文件f1.txt,然后,将数 据分别以整型、布尔型、双精度型、字符型读出并显示。 55.编写一个程序,模拟DOS系统中的COPYCON命令功能。 56.分别用Socket类和TCPListener/TCPClient类建立一个通过TCP协议进行文件传输的 程序。 57.利用网络流实现一个利用UDP协议进行聊天的程序,并使一端采用UTF-8编码,另一 端则采用Unicode解码。 58.创建一个带有3个子线程的程序,第一个线程序启动10毫秒后,第二个线程再启动, 然后再等10毫秒后第三个线程启动,每一个线程从1~1000循环输出线程的名称和计数, 当3个线程结束时要输出各自的结束信息,然后,主线程结束。 59.制作一个程序模拟图书馆中的书籍借阅操作,有两个人几乎同时查阅某一本书是否还有 (用两个线程访问同一个变量),如果有,就将书的数量减1,如果没有输出“书籍已经 全部借出”。 用3个线程同步的方法分别实现程序。 编写一个自定义类Employee,要求: A.该类包含连接到access的Northwind数据库的公用方法。 B.该类包含若干个字段用来存储从“雇员表”中读取的若干字段的值。 C.该类包含在表中移动记录指针的方法。 D.该类包含修改字段值的方法。 E.该类包含将字段值显示出来的方法。 60.编写一个程序,从键盘上输入3个数,输出这3个数的积及它们的和。 要求编写成控制 台应用程序。 61.编写一个程序,输入梯形的上底,下底和高,输出梯形的面积。 要求编写成Window应 用程序。 62.编写一个进行加减乘除四则运算的程序,要求: 输入两个单精度数,然后输入一个运 算符号,输出两个单精度数进行运算后的结果。 要求编写为控制台程序。 63.兔子繁殖问题。 设有一对新生的兔子,从第三个月开始他们每个月都生一对兔子,新 生的兔子从第三个月开始又每个月生一对兔子。 按此规律,并假定兔子没有死亡,20 个月后共有多少个兔子,要求编写为控制台程序。 64.编写程序,把由10个元素组成的一维数组逆序存放再输出。 65.编写程序,统计4X5二维数组中奇数的个数和偶数的个数。 66.写一个求整数任意位数字的过程,过程的调用形式为: digit(n,k),其功能是取出数n从右 边起的第K位数字,例如: digit(1234,3)=2,digit(1234,4)=1,digit(1234,6)=0。 67.写一个应用程序用来输入的字符串进行加密,对于字母字符串加密规则如下: „ad? „be? „wz? ……„xa? „yb? „zc? „AB? „BE? „WZ? ……„XA? „YB? „ZC? 对于其他字符,不进行加密。 68.定义一个车辆(Vehicle)基类,具有Run、Stop等方法,具有Speed(速度)、MaxSpeed (最大速度)、Weight(重量)等域。 然后以该类为基类,派生出bicycle、car等类。 并 编程对该派生类的功能进行验证。 69.编写出一个通用的人员类(Person),该类具有姓名(Name)、年龄(Age)、性别(Sex) 等域。 然后对Person类的继承得到一个学生类(Student),该类能够存放学生的5门课 的成绩,并能求出平均成绩,要求对该类的构造函数进行重载,至少给出三个形式。 最 后编程对student类的功能进行验证。 70.编写一个冒泡法排序程序,要求在程序中能够捕获到数组下标越界的异常。 71.编写一个计算器程序,要求在程序中能够捕获到被0除的异常与算术运算溢出的异常。 72.制作一个简单计算器程序。 程序运行时通过按钮输入运算公式,单击【计算】按钮得到 计算结果。 73.编写一个能够浏览文本文件和图象文件查看程序。 74.编写一个能同时播放视频文件和背景音乐的程序,要求背景音乐和视频文件都能循环播 放。 用MMControl控件设计一个能够播放音乐、MIDI文件的播放器,要求具有自动重 播和显示进度的功能。 75.编程输出1~100中能被3整除但不能被5整除的数,并统计有多少个这样的数。 76.编程输出1000以内的所有素数。 77.编写一个程序,对输入的4个整数,求出其中最大值和最小值。 78.分别用for,while,do…while语句编写程序,实现求前n个自然数之和。 79.编程输出九九乘法表。 80.定义一个行数和列数相等的二维数组,并执行初始化,然后计算该数级两条对角线上的 元素值之和。 81.建立一个一维数组,使用该数组列出所学习的课程名称。 82.编写一个包含学生基本资料的结构类型数据(要求包括姓名,性别,年龄,身高,体重等)。 83.编写程序,将一年中12个月,建立一个枚举类型数据,并对其进行调用。 84.在窗体上建立一个标签,一个文本框,一个命令按钮,标签的text属性设置为“VC#程 序设计”,设计一个程序,单击命令按钮,将标签上的信息显示在文本框中。 85.设计一个简单的计算器,在文本框中,显示输入值和计算结果,用命令按钮做为数字键和 功能键。 86.在窗体上建立一个列表框,一个文本框和一个命令按钮,在列表框中列有本班10个同 学的姓名,当选中某个学生姓名后,单击此命令按钮,则在文本框中显示该学生的籍贯。 87.用定时器控件按秒计时,在窗体上创建一个标签,程序执行后在标签内显示经过的秒。 88.编写程序在E盘下新建一文本文件,并对该文件进行复制,移动,写入,读出操作89.编写一个程序,其中对于每种数据类型,都声明两个变量,并分别将值10和1.879赋给 它们。 90.编写一个程序,检查变量的值是否大于65。 如果是,则打印文本“THEVALUEIS GREATERTHAN65~” 91.编写一个程序,检查一个字符变量的值是否为T或t。 92.编写一行代码,将long变量MyLong的值赋给short变量MyShort。 93.编写一行代码,将int变量IntVal的赋给short变量ShortVal。 94.编写一行代码,将decimal变量DecVal的值赋给long变量LongVal。 95.编写一行代码,将int变量ch的值赋给字符变量charVal。 96.编写一个从99数到1的while语句。 97.编写一条根据变量name的值执行不同操作的switch语句。 如果该变量的值为Robert, 则打印消息”HiBob”;如果为Richard,则打印消息“HiRich”;如果为Barbara,则打印 消息“HiBarb”;如果为Kalee,则打印消息“YouGoGirl! ”;对于其他情况,则打印“Hix”, 其中x为变量name的值。 98.编写一个掷筛子100次的程序,并打印出各种点数的出现次数。 99.创建一个类,它存储一个int数据成员MyNumber,并给该数据成员创建属性,当该数据 成员被存储时,将其乘以100;当其被读取时,将其除以100。 100.编写一个die类,它存储筛子的面数(sides)以及当前掷筛子得到的点数(value)。 101.编写公有方法xyz的方法头
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C#编程题 考试题库 C# 编程 考试 题库