C#编程题 考试题库.docx
- 文档编号:27228981
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:22
- 大小:30.88KB
C#编程题 考试题库.docx
《C#编程题 考试题库.docx》由会员分享,可在线阅读,更多相关《C#编程题 考试题库.docx(22页珍藏版)》请在冰豆网上搜索。
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 #include usingnamespacestd; intmain() { 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.写一个应用程序用来输入的字符串进行加密,对于字母字符串加密规则如下: ‘a’→’d’‘b’→’e’‘w’→’z’……‘x’→’a’‘y’→’b’‘z’→’c’ ‘A’→’B’‘B’→’E’‘W’→’Z’……‘X’→’A’‘Y’→’B’‘Z’→’C’ 对于其他字符,不进行加密。 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。 如果是,则打印文本“THEVALUEISGREATERTHAN65! ” 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的方法头,该方法接受两个参数,不返回任何值。 102.为方法myMethod编写方法头。 该方法接受三个参数。 第一个名为myVal,其数据类型为double,并按值传递;第二个是一个输出变量,名为myOutput;第三。 个是按引用传递的,数据类型为int,名为myRerence。 另外该方法是公有的,其返回类型为b
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C#编程题 考试题库 C# 编程 考试 题库