《C++程序设计基础》上机题库
说明:本上机题库按内容分为四部分,即程序设计初步、函数、数组、指针,其中每一部分又根据难度不同分为A、B、C三类。
第一部分程序设计初步
一、A类程序设计题
1、将用户输入的字母自动转换为大写字母后输出,假定用户输入的字符均是字母。
2、判断用户所输入的整数是否为偶数
3、编程实现并输出两个数的大小判断,将大数输出
4、编程实现并输出两个数的和值
5、将括号中的字符串分别按每行一个单词的方式分行显示。(This is a C++program)
6、编程计算并输出字符、无符号整数与长整型数值在内存中所占字节数
7、定义三个变量,由用户指定其值,并将值输出显示给用户
8、定义三个变量,并完成初始化后输出显示给用户
9、完成9除3后的求余操作并输出结果
10、编程计算表达式a×b÷c一1.5+‘a’
11、将China译成密码,密码规律是:用原字母后面第四个字母代替原来的字母,例如,
字母A后面第四个字母是E,用E代替A。因此China应译为Glmre。请编写一程序,用赋初值方法使c1,c2,c3,c4,c5这5个变量值分别为C、h、i、n、a,经过去处,使c1,c2,c3,c4,c5分别为为G、l、m、r、e
12、将一个用户输入的整数分别以十六进制、八进制、十进制方式、科学计数法输出。
13、求矩形面积,长、宽值由用户指定
14、运输公司对用户计算运费。路程(s)越远,每公里运费越低。标准如下:
s<250km 没有折扣
250≤s<500 2%折扣
500≤s<1000 5%折扣
1000≤s<2000 8%折扣
2000≤s<3000 10%折扣
3000≤s 15%折扣
设每公里每吨货物的基本运费为p(price的缩写),货物重为w(wright的缩写),距离为s,折扣为d(discount的缩写),则总运费f(freight的缩写)的计算公式为:
f = p * w * s * (1 - d)
要求采用if语句嵌套完成。
15、采用do while循环结构完成1至100之间的奇数相加。
16、用循环语句编程打印下列矩阵形式,尽量使语句简捷,注意第一列与第二列间距为
一个Tab的位置,其余宽度为两个空格:
1 0 1
2
3
4
5 6
2 1 2
3
4
5
6 0
3 2 3
4
5
6 0 1
4 3 4
5
6 0 1 2
5 4 5
6 0 1 2 3
6 5 6 0 1 2 3 4
17、编程求圆面积,并输出结果。其中圆半径以用户运行时指定
18、编程求一元二次方程ax2 +bx+c=0的根。
19、编程实现由底和高求三角形的面积。
20、计算y,其中y=(x+1)/(x-1)
21、用for循环语句编程打印下列矩阵形式,尽量使语句简捷,注意各列相距两个空格:
(1,1)(1,2)(1,3)(1,4)(1,5)(1,6)(1,7)
(2,1)(2,2)(2,3)(2,4)(2,5)(2,6)(2,7)
(3,1)(3,2)(3,3)(3,4)(3,5)(3,6)(3,7)
(4,1)(4,2)(4,3)(4,4)(4,5)(4,6)(4,7)
(5,1)(5,2)(5,3)(5,4)(5,5)(5,6)(5,7)
(6,1)(6,2)(6,3)(6,4)(6,5)(6,6)(6,7)
二、B类程序设计题
1、实现用户输入的三个整数的排序
2、实现在响玲后,将字符串“Hello world”输出
3、实现任一字符和字符串长度的输出,其中字符和字符串内容由编程者自定
4、将括号内的字符串输出,(He said :"I have done it".)
5、定义一个符号常量,并在主函数中加以应用
6、编辑实现计算并输出字符、无符号整数与长整型数值在内存中所占字节数
7、将用户输入的五个字母(大小写均可)译成密码,密码规律是:用原字母后面第四
个字母代替原来的字母,例如,字母A后面第四个字母是E,用E代替A。要求:字符由用户指定输入五个,程序采用循环体完成,增加对输入合法性进行判断
8、使用scanf函数输入一个整数、浮点数和字符,并用printf输出
9、求一元二次方程式ax2+bx+c=0的根,其中a、b、c的值由用户指定
10、根据用户输入的成绩,判定其优良等级,其中优是85分以上,良是75至84之间,
中是65至74之间,及格是60至64,其余为不及格
11、编写程序,判断某一年是否为润年
12、编写程序,判断某整数是否为素数
13、给出一个不多于5位的正整数,要求:求出它是几位数;分别打印出每一位数字;
按逆序打印各位数字,例如原数为321,则输出123
14、输入两个正整数m和n,求其最大公约数和最小公倍数
15、采用循环结构完成1至100之间的偶数相加。
16、键盘输入正整数n,求出n 与其反序数x 之和并输出。
例如,输入2038,输出应为:n + x = 2038 + 8302 = 10340。
17、编程打印乘法九九表
* 1 2 3 4 5 6 7 8 9
--------------------------------------------
1 1
2
3
4
5
6
7
8 9
2 2 4 6 8 10 12 14 16 18
3 3 6 9 12 15 18 21 2
4 27
4 4 8 12 16 20 24 28 32 36
5 5 10 15 20 25 30 35 40 45
6 6 12 18 24 30 36 42 48 54
7 7 14 21 28 35 42 49 56 63
8 8 16 24 32 40 48 56 64 72
9 9 18 27 36 45 54 63 72 81
18、请采用循环结构编程实现以下结果:
19、编程实现输入一个整数,判断其能否被3、5、7整除,并输出以下信息之一:
(1)能同时被3、5、7整除
(2)能被其中两数(要指哪两个整除)
(3)能被其中一个数(要指出该数)整除
(4)不能被3、5、7整除
20、编程输出以下格式的乘法九九表
* 1 2 3 4 5 6 7 8 9
-------------------------------------------------
1 1
2 2 4
3 3 6 9
4 4 8 12 16
5 5 10 15 20 25
6 6 12 18 24 30 36
7 7 14 21 28 35 42 49
8 8 16 24 32 40 48 56 64
9 9 18 27 36 45 54 63 72 81
21、采用循环结构输出以下图形
22、输入年份,判断是否为闰年。输入月号,输出每月的天数
23、输入三角形三边,编写程序判断三角形的种类:等腰三角形、等边三角形或一般三
角形。
24、输入一个字符,编写程序判断该输入字符的种类:数字、字母或其它。
25、两个数的十、一、*和/的简易计算器程序。
26、编程输入整数a和b,若大于100,则输出百位以上的数字,否则输出两数之和。
27、给一个不多于5位的正整数,要求:①求出它是几位数;②分别打印出每一位数字;
③按逆序打印出各位数字,例如原数是321,应输出123。
28、若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=’a’,c2=’b’。想得到以下的输
出格式和结果,请写出程序(包括定义变量类型和设计输出)。
a= 3 b= 4 c= 5
x=1.200000,y=2.400000,z=-3.600000
x+y= 3.60 y+z=-1.20 z+x=-2.40
u= 51274 n= 128765
c1=’a’ or 97(ASCII)
c2=’b’ or 98(ASCII)
29、设圆半径r=1.5,圆柱高h=3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体
积。用scanf输入数据,输出计算结果;输出时要求有文字说明,取小数点后2位数字,请编写程序。
30、编程输出以下图形
31、用一个循环体结构求1!+2!+3!+…+19!+20!
三、C类程序设计题
1、判断三角形是否成立,并求其面积和周长
2、实现在响铃后,将字符串“Hello world”输出
3、实现任一字符和字符串长度的输出,其中字符和字符串内容由编程者自定
4、将用户输入一行字符(不确定个数,以回车判定结束)译成密码,密码规律是:用
原字符后面第四个字符代替原来的字符,例如,字行A后面第四个字母是E,用E 代替A。
5、输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数
6、输出所有的水仙花数,所谓水仙花数是指一个3位数,其各位数字的立方之和等于
该数本身。例如153是一个水仙花数,因为153=13+53+33
7、猴子吃桃问题。猴子第1天摘下若干个桃子,当即吃了一半后又再吃了一个。第2
天早上又将剩下的桃子吃掉一半后又再吃了一个。以后每天早上都吃了前一天剩下的一半另加一个。到第10天早上想再吃时,就只剩一个桃子了,求第1天共摘了多少个桃子。
8、输出以下图案,要求使用循环体结构
&
&*。
&**。。
&***。。。
&****。。。。
&***。。。
&**。。
&*。
&
9、两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X、Y、Z3人。已
抽签决定比赛名单。有人向队员打听比赛名单,A说他不和X比,C说他不和X、Z 比,请编程找出3对赛手名单。
10、编程求所有的3位素数,且该数是对称的。所谓对称是指一个数,倒过来还是该数,
例如,375不是对称,因为倒过来后变成573。
11、编程求解母牛问题。若一头母牛,从出生起第四个年头开始每年生一头母牛,按这
规律,第n年时有多少头母牛?n为用户在运行时指定的数值。
12、百钱买百鸡问题:雄鸡7元/只,母鸡5元/只,小鸡1元/3只. 花100元钱,买
100只鸡,如果雄鸡、母鸡和小鸡都必须有,则雄鸡、母鸡和小鸡应各买几只?13、一球从100m落下,每次落地后反跳回原高度的一半,再落下。编程求它在第10次
落地时,共经过多少m?第10次反弹多高?
14、对运行中输入的x,计算级数:
第二部分 函数
一、A 类程序设计题
1、
编写一个求梯形面积的函数,在主函数中调用 2、
编写函数,求sinh(x)的值,sinh(x)=(e x -e -x )/2 3、
已知三角形的三边,求三角形面积,将其编写成一个函数。 4、
编写一个函数实现10个数的最大值函数 5、
编写一个函数来检验输入的一个字符是大写字母还是小写字母英文字母。 6、 使用函数重载的方法定义两个重名函数,分别求出整型数的两点间距离和浮点型数
的两点间距离。
7、 编写函数将华氏温度转换为摄氏温度,公式为C=(F-32)*5/9;并在主函数中调用。
8、 编写一个函数来检验输入的一个字符是0-9。
9、 利用重载编写求整数绝对值和求实数绝对值两个函数。
10、 使用静态局部变量,编写一个函数计算1~3的阶乘。
11、 重载求平方的函数,实现求整数、单精度浮点数和双精度浮点数的平方值。
12、 完成函数,参数为两个unsigned short int 型数,返回值为第一个参数除以第二
个参数的结果,数据类型为short int ;如果第二个参数为0,则返回值为-1。在主程序中实现输入输出。
13、 编写一个函数求长方体的体积,长方体的长、宽、高的默认值分别为30、20、10。
在主函数中进行输入输出。
14、 编写程序求π的值,
其中arctan 用如下形式的级数计算:(编写函数)
直到级数某项绝对值不大于10-15为止;π和x 均为double 型。
15、 编写三个名为add 的重载函数,分别实现两整数相加、两实数相加和两个复数相加
的功能。
16、 求方程02=++c bx ax 的根,用三个函数分别求当042>-ac b 、042=-ac b 和
042<-ac b 是的根,并输出结果。从主函数输入系数。
17、 写一个判别素数的函数,从主函数输入一个整数,输出是否为素数的信息。
18、 定义一个带参数的宏,求三角形的周长。在主程序中,使用它
19、 定义一个参数的宏,求梯形的面积。在主程序中,使用它
20、 编写带默认参数的函数,求2个或3个整数中的最大数。并在组程序中实现
二、B 类程序设计题
1、 编写两个函数,输入的整数按字符串形式逆序输出,要求分别用递归算法和非递归
算法实现。如:输入12345,输出:5 4 3 2 1
2、 编写一个函数,要求键盘输入正整数n ,求出n 与其反序数x 之和并输出。例如,
输入2038,输出应为:n + x = 2038 + 8302 = 10340。
3、 编写函数利用数组名作参数计算数组arr[3][4]所有元素的和
??? ??-??? ??=2391arctan 451arctan 16π=++-= 531)arctan(53x x x x ∑∞=++-0
1212)1(n n n n x
4、 编写函数利用递归的方法计算x 的n 阶勒让德多项式的值。该公式如下:
5、
利用全局变量并编写函数统计数组中奇数和偶数的个数。 6、
利用函数调用求组合数
。∑=n i i
1 7、
在主程序中,输入n ,用递归方法编写函数,求1+2+3+…+n 8、
在主程序中,输入n ,用递归方法编写函数求n! 9、 将一个整数的各个位上的数字加起来(用函数完成),并输出结果。 10、 编写一个函数,求出数组中最大元素的下表
11、 分别利用非递归和递归的方法编写函数求斐波那契数列第n 项。
12、 编程计算 1k + 2k + 3k + … + n k ,用带两个参数的函数实现
13、 input 函数输入10个整数,并求出它们的最大值、最小值和总和。主函数main 调
用input 函数,并输出这10个整数的最大值、最小值和总和。
14、 设计一个递归函数,计算一个整数的各位数字之和。
15、 用内联函数实现求出一维数组的最大值。在主函数中输入数组元素值,调用求最大
值函数,并输出数组最大值。
16、 用弦截法,求方程()08016523=-+-=x x x x f 的根,用函数实现
17、 用牛顿迭代法,求方程在1附近的根,043223=+++x x x ,用函数实现
18、 编写函数,计算,当最后一项小于0.00001时,累加结束。
x 在主函数中,通过从键盘输入
19、 编无参函数,void print(),并结合使用全局变量k 与n ,使每调用一次该函数,
总显示出k 行“+”符号来,且每行均显示连续的n 个“+”符号。并编制主函数 main ,对该函数进行具体调用。
20、 编写两个数的最大公约数的函数,在主程序中调用
三、C 类程序设计题
1、 编写函数prime ,用来判断某个整数是否为素数。而后编写主函数main ,输入任意
一个大于4 的偶数d ,找出满足d=d1+d2 的所有数对,其中要求d1 与d2 均为素数(通过调用prime 来判断素数)。如偶数80 可以分解为:7+73、13+67、19+61、37+43。
2、 编写一个函数求满足以下条件的最大的n : 12+22+32+…+n 2<1000
3、 编制具有如下原型的函数long dif(int y1, int m1, int d1, int y2, int m2, int
d2);它负责计算出两个日期的间隔天数并返回。其中的y1、m1、d1表示第一个日
()1111132>++++=x x
x x s
期的年、月、日;而y2、m2、d2表示第二个日期的年、月、日。而后编制主函数,对dif进行调用,以验证它的正确性。
4、在主程序中提示输入n,编写函数用递归的方法求1+2+…+n的和。
5、编写一个将x进制正整数n化为10进制数并输出结果的函数(x为2或8),具有
如下原型: void ChgXTo10 (int n, int x);并编写主函数对它进行调用来验证其正确性。
6、编写判断勾股数的函数。打印出100内的所有的勾股数。勾股数就是满足x2+y2=z2
的自然数。最小是勾股数5,4,3。
7、编写一个函数countk(long k,count[10]),求出证书k中数字0到9出现的次数,并
计入count[10]中。
8、编写求最大公约数和最小公倍数的函数,输入m,n(要求输入数均大于0),输出
它们的最大公约数和最小公倍数。其中,写最小公倍数的函数时,要求调用求最大公约数的函数
9、寻找四位数的超级素数。超级素数的定义为:若一个素数从低位到高位依次去掉一
位数后仍然是素数,则此数为超级素数。例如,数2333是素数,且233、23、2均是素数,所以2333是一个超级素数,用定义函数的方式实现。主程序中,输入位数。
10、汉诺塔问题。有三根柱子A、B、C。设A柱上有n个盘子,盘子的大小不等,大
的盘子在下,小的盘子在上,如下图所示。要求将A柱上的n个盘子移到C上,每一次只能移一个盘子。在移动过程中,可以借助于任一根柱子,但必须保证三根柱子上的盘子都是大的盘子在下,小的盘子在上。要求编一个程序打印出移动盘子的步骤。
11、编写一个排序函数用选择法对一批整数按从大到小的次序进行排序。在主函数内输
入数据,调用排序函数对数据排序,输出排序结果。
12、寻找并输出11~999之间的数m,它满足m、m2和m3均为回文数。回文:各位数字
左右对称的整数,用定义函数的方式实现。主程序中,输入范围(两个参数)。13、输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字的立方
之和等于该数本身。例如,153是一个水仙花数,因为153 = 13 + 53 +33。用函数来判断时否是“水仙花数”。
14、一个数如果恰好等于它的因子之和(这里的因子不包括这个数本身),这个数就称
为“完数”。例如,6的因子为1、2、3,而6 = 1+2+3,因此6是“完数”。编程求出1000以内的所有完数,并按下面格式输出其因子:6,its factors are 1,2,3。用函数来判断时否是“完数”。
15、用户任意输入一个年份以及该年的1月1日是星期几,而后任意指定某一天(再输
入该年的任意一个月份日期),由程序计算出这一天是星期几。注意,2月份闰年为
29天,非闰年为28天;可被4整除而不可被100整除的年份、或者可被400整除的年份均为闰年。思考:利用元年元月元日(即1年1月1日)是星期一的已知事实,可对程序进行改造,让用户仅输入一个表示日期的年月日,则程序就应计算出那一天是星期几。主程序中输入一个年份以及该年的1月1日是星期几,而后任意指定某一天(再输入该年的任意一个月份日期)
16、编一个返回真假值(布尔值)的函数p,其函数原型为:bool p(int x);具有如下
功能:若正整数x的各位数字之积等于x2-10x-22的话,返回true,否则返false。
并编主函数,通过调用p,找出1000以内的满足上述关系的所有x。
17、编写具有如下原型的函数:bool f(long x);其功能为:若整数x仅由偶数字(0、
2、4、6、8)组成时(如x=26480),函数返回true,否则返回false(如当x=22034
时)。并编制主函数对它进行调用。
18、编写具有如下函数原型的递归与非递归两种函数myMin,负责求出a数组中前n个
整数中的最小者并返回该值。并编制主函数,通过调用它来验证其正确性。int myMin(int a[], int n);
提示:递归函数中,n等于1时最小者即为a数组的第1个元素(即a[0]),递归出口;当n大于1时,首先通过递归调用来求出a数组的前n-1个元素中的最小者tmp,则函数返回值应为如下表达式之值:“a[n-1] 19、输入两个二进制正整数(两个非“0”即“1”的字符串),而后输入一个运算符(“+”、 “-”、“*”、“/”),按int型整数运算方式求出这两个二进制整数的运算结果并输出。提示:设计将2进制数化为10进制数、以及将10进制数化为2进制数的函数“int Chg2To10(char a[]);”和“ void Chg10To2(int n, char result[]);”,而后在主函数中通过调用Chg2To10先将两个输入串转化为10进制数,而后对这两个10进制数进行指定运算,再将运算结果通过Chg10To2转化为2进制数(结果在result)而后输出。 20、编写一个将x进制正整数化为10进制数并输出结果的函数,具有如下原型:void ChgxTo10(char a[], int x);参数a中放的是x进制正整数的各位数字字符(如x 可为2或8或16等),要将其化为10进制数并输出。并编写主函数对它进行调用以验证其正确性。 第三部分数组 一、A类程序设计题 1、求一个4x4矩阵对角线元素之和。 2、用数组的方法求Fibonacci数列的值(要求输出前20个数)。 3、将一个3x4矩阵转置(行列互换)存放。 4、将一个数组中的数按逆序存放,例如原来的顺序为8,7,6,4,2,要求改为2,4,6,7,8。 5、用选择法对10个整数进行降序排序。 6、用冒泡法对10个整数进行升序排序。 7、编写一个简单程序,要求:(1)从键盘上输入8个整数放入数组a[8]中(用for循环实现);(2)求出数组元素的最大值及数组的平均值。 8、求3×4矩阵中每一列元素的最大值并输出。 9、求4×4矩阵中每一行元素的最小值并输出。 10、某班有30个学生,进行了数学考试,编写程序将考试成绩输入一维数组,并求数学的平均成绩及不及格学生的人数。 11、有一个3x4矩阵,求出最大元素,以及其所在的行号和列号。 12、从键盘上输入10个实数,然后按输入顺序的逆序输出这10个数。 13、从键盘输入10个整数,找出其中最大值和最小值。 14、输入10个学生的姓名、学号和成绩,将其中不及格者的姓名、学号和成绩输出。 15、输入字符串 s,统计出 s 中共出现了多少个数字字符。 二、B类程序设计题 1、对一个已按由小到大排好顺序的整型数组,若从键盘输入一个数x,现要查询该数是否在此整型数组中,若存在则删除该数,否则显示“不存在”信息。 2、对一个已按由小到大排好顺序的整型数组,若从键盘输入一个数x,现要将该数插入到该数组中,使其插入后整个数组排序规律不变。 3、编写一程序,要求从键盘上输入10个整数放入一个数组中(用for循环实现),并编写求最大值的函数max,在主程序调用这个函数实现输出数组中10个整数的最大值,要求用数组名作为函数参数。 4、输入一个4行4列的二维数组,编程实现: (1) 求出其中的最大值和最小值及其对应的行列位置; (2) 求出对角线上各元素之和。 5、用筛选法求100之内的素数。 6、对一个整形数组进行由小到大排序。要求:用函数调用实现排序过程。 7、将一个数组中的元素按逆序存放。要求:用函数调用实现。 8、编写一个strlen函数,它能对一个字符串测出其长度,函数返回值就是字符串的长度(说明:长度不包括字符串结束标志’\0’)。 9、设有5 行5 列的数组b,其元素b[i][j]=2*i+3*j-8(i、j = 0,1,2,3,4)。编写程序实现: (1)求第4 行的5 个元素之累加和。 (2)求第5 列的5 个元素之平均值。 (3)求主对角线(“\”状对角线)以及反斜对角线(“/”状对角线)上各有多少个负数。、 10、不用strcat函数,将两个字符串连接起来。 11、打印出以下的杨辉三角形(要求打印出10行)。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 12、对于一个二维数组,分别求各行、各列及所有元素之和。 13、有一行电文,已按如下规律译成密码:第1个字母变成第26个字母,第i个字母变成第(26-i+1)个字母……非字母字符不变。要求将密码译回原文,并打印出密码和原文。 14、有一篇文章,共有3行文字,每行有80个字符。要求分别统计出其中英文大写字母、 小写字母、数字、空格以及其他字符的个数。 15、输入n个字符串,把其中以字母A打头的字符串输出。 16、编写一个程序,将字符数组S2中的全部字符拷贝到字符数组S1中。不用strcpy函数。拷贝时,‘\0’也要拷贝过去,‘\0’后面的字符不拷贝。 17、按照如下方式从头到尾逐字符地对输入字符串 is 进行处理,以生成输出字符串 os 并作为结果输出: (1)若 is的当前字符不是数字字符,则将该字符复制到结果串 os 中; (2)若is的当前字符是一个数字字符,且假设其大小值为 n,则将该数字字符替换为n+1 个相关字母存放到结果串 os 中:字符 0 替换为 1 个 a,字符 1 替换为 2 个 b,字符 2 替换为 3 个c,...,字符9替换为 10 个j。 例如:当输入字符串为“s1k02”时,输出字符串应为“sbbkaccc”; 输入的 is 为“abc5uf20t”时,输出字符串 os 应为“abcffffffufcccat”。 18、假设对整型数组 a、b、t 已按下述方式进行了说明并对 a 赋了初值: int a[8]={2, 33, -6, 5, -82, 30, 99, 21}, b[8], t[8][8]; 编程序实现: (1)挑选 a中的某些数按如下顺序依次放入数组 b 中:先挑选所有负数放入 b;再挑选所有正数中是 3 的倍数的奇数放入 b;最后将 b 的其它元素(即尚未被赋予 a 元素值的那些元素)均置为 0。 (2)将 a 数组中的 8 个数依次赋给 t 数组的首列各元素(即:t[0][0]=a[0];t[1][0]=a[1];...),将 b 数组中的 8个数依次赋给 t 数组的末列(第 8 列)各元素,并将其它各列的 t[i][j]赋值为 i-j+3。 (3)在屏幕上输出 a、b、t 各数组元素的具体值。 19、将输入的 2进制数(一个非“0”即“1”的字符串)化为 10进制数并输出结果。 20、编写程序,在有序的数组中查找某数,若该数在此数组中,则输出它所在的位置,否则输出 no found。 21、定义一个含有30个元素的数组,按顺序分别赋予从2开始的偶数,然后按顺序每5个数求一个平均值,放在另一个数组中并输出。 22、在5行5列的二维数组中查找第一次出现的负数。 23、输入字符串s ,求s 中相邻字母对(比如ab )出现的次数。 24、定义数组 int a[4][6]、b[4][6]、 c[4][6],并完成以下操作: (1)从键盘上输入数据给数组a 、b 。 (2)将数组a 和数组b 各对应元素作比较,如果相等,则数组c 的对应元素为0;若前者大于后者,则数组c 的对应元素为1;若前者小于后者,则数组c 的对应元素为-1。 (3)输出数组c 各元素的值。 25、在电视歌手大奖赛时,有10个评委评分。从键盘输入10个评委给某歌手的评分,要求找出10个评委中哪一个给了最低分,哪一个给了最高分。去掉一个最低分并去掉一个最高分后剩下的八个评分的平均值为该歌手的最后得分,求该歌手的最后得分。 26、输入10个整数,判断它们是否为素数。要求:编写一个函数int prime(int m)来判断形参变量m 是否为素数,如果是素数则返回1,否则返回0。 27、输入一段英文,将其格式化后输出。 格式化的要求是: (1) 每一个单词首字母大写,其余字母小写; (2) 所有标点符号(. , ! ?)均改为句号; (3) 非英文字母作为非法字母去除。 如输入:i am a 54stuDe#Nt12, right? 则输出:I Am A Student. Right. 28、有4个学生5门课程的成绩存放在数组score[4][5]中,编写两个函数分别求第m 个学生5门课程的平均成绩和第n 门课4个学生的平均成绩,主函数中只实现数据的输入和输出,其中m 和n 的值也在主函数中输入。 三、C 类程序设计题 1、用冒泡排序法对输入的10个数进行降序排序并存入数组中。然后输入一个数,查找该数是否在数组中存在,若存在,打印出该数在数组中对应的下标值。 2、输入一个4x5的二维数组,请编程实现如下转换。 原矩阵 转换后矩阵 3、从键盘输入20 4、写一函数,使输入的一个字符串按逆序存放,要求在主函数中输入、输出字符串,函数中实现数据的逆序处理。 5、输入n 个字符串,要求按由小到大顺序输出。 6、采用函数的递归编程,实现求一个整型数组20个元素中的最大值 。递归函数原型为:int max(int a[],int n)。最后编制主函数,对max 函数进行调用,以验证其正确性。 7、从键盘输入两个字符串a 和b,要求不用库函数 strcat 把串b 的前五个字符连接到串a 中;如果b 的长度小于5,则把b 的所有元素都连接到a 中。 8、编程序,实现如下功能: (1)按如下方式说明数组x 与y const int k=8; int x[k], y[k]; (2)键盘输入k 个整数到数组x 中。 (3)计算x 中k 个数的平均值ave 及大于平均值的元素个数n 并输出。 (4)将数组x 中的k 个数放入数组y 中,但不重复放(一个数只放一次),而后输出y的这些有效元素。 例如,程序执行后的输入输出界面可设计为: x=? 23 55 -6 0 23 23 0 -12 ave=13.25 n=4 y= 23 55 -6 0 -12 9、编写程序,实现str=str1+str2的操作,此处运算符“+”表示将二个字符串str1、str2连接成一个字符串str。用键盘将二个字符串输入字符数组str1与str2中,连接后的字符串存放在字符数组str中,并输出连接后的字符串str。 (1)用C++提供的字符串处理函数完成上述要求。 (2)不用C++提供的字符串处理函数完成上述要求。 10、输入一行字符,统计其中有多少个单词。 11、输入3个字符串,找出其中最大者。 12、找出一个二维数组中的鞍点,即该位置的元素在该行上最大,在该列上最小(也可能没有鞍点)。 13、给出年、月、日,计算该日是该年的第几天。 14、有15个数按由大到小的顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中的第几个元素的值。如果该数不在数组中,则打印出“无此数”。 15、输入一个字符串,把其中的字符按逆序输出。如输入LIGHT,则输出THGIL。 (1)用字符数组方法; (2)用string方法。 16、编程序,输入正整数 m,它代表人民币的 m 元。试求取这样一个方案,使用最少张数的人民币纸币(如 k 张),凑成上述的钱数 m,并输出求取结果。注意,目前共有 7 种元以上面值的人民币纸币,其面值分别为:100,50,20,10,5,2,1。 程序执行后的输入输出交互界面可设计为: m=? 192 1(100) 1(50) 2(20) 1(2) => k=5 17、编程序,输入任意一个十进正整数 N,而后将其转换为二进制整数后输出。例如,程序执行后的显示结果为: Input positive N:86 86_2=1010110 第四部分指针 一、A类程序设计题 1、编写函数int length(char *str)返回字符串str的长度。在main函数中调用该函数。 2、编写函数int num(char *str)返回字符串str中非数字的个数。在main函数中调用该 函数。 3、编写函数void strTrim(char *str)去掉字符串str首部与尾部的空格。在main函数中 调用该函数。 4、编写函数int strFind(char *str,char c)在字符串str中查找指定字符c;如果有该 字符,则返回该字符在字符串中第一次出现的位置;否则返回0。在main函数中调用该函数。 5、编写函数int count(char *str,char c)返回字符串str中字符c出现的次数。在main 函数中调用该函数。 6、编写函数void strExcept(char *str,char c)删除字符串str中的字符c。在main函数 中调用该函数。 7、编写一个程序,该程序根据键盘输入的一个正整数建立一个动态数组,然后为该动态 数组的元素赋值,接着显示动态数组的值并删除该动态数组。 8、编写函数int arrMax(int *a,int n)返回数组a的元素的最大值。形参n表示数组中元 素的个数。在main函数中调用该函数。 9、编写函数int arrMin(int *a,int n)返回数组a中值最小的元素的下标。形参n表示数 组中元素的个数。在main函数中调用该函数。 10、编写函数void arrSort(int *a,int n)将数组a的值按升序排列。形参n表示数组中 元素的个数。在main函数中调用该函数。 11、编写函数int fun(int *arr,int n)将有序数组arr压缩成各元素互不相同的有序数 组,即相同数只保留一个,多余的被删除。形参n表示原数组中元素的个数;函数返回压缩后的数组元素的个数。在main函数中调用该函数。 二、B类程序设计题 1、编写函数char maxChar(char *str)返回字符串str中ASCII码最大的字符(如字符串 "program"中字符'r'的ASCII码最大)。若字符串str为空,则返回'\0'。在main函数中调用该函数。 2、编写函数void fun(char *str)将字符串str按字符的ASCII码值的升序重新排列(如 将字符串"program"处理成"agmoprr")。在main函数中调用该函数。 3、编写函数void fun(char *str)将字符串str中的字符逆序排列(如将字符串"program" 处理成"margorp")。在main函数中调用该函数。 4、编写函数void convert(const char *str,char *des)去掉字符串str中相同的字母, 将处理后的结果保存到字符串des中。在main函数中调用该函数。 5、编写函数void count(const char *str,int *a)统计字符串str中大写字母、小写字 母、空格、数字以及其他字符的个数,统计的结果保存到数组a中。在main函数中调用该函数。 6、编写函数int strcmp(char *s1,char *s2)实现两个字符串的比较。 若s1=s2,返回值0;若s1≠s2,返回它们二者第一个不同字符的ASCII码之间的差值,当s1>s2时差值为正,即返回正数,否则返回负数(如this与the,第一个不同的字符是i与e之差为4,返回值4)。在main函数中调用该函数。 7、编写函数int arrMax(int *a,int n,int *index)求数组a中最大元素的值和此元素的 下标。形参n表示数组中元素的个数;最大元素值以函数值返回,此元素的下标通过指针形参index带回调用函数。在main函数中调用该函数。 8、编写函数void fun(int *a,int *n,int y),其中n表示数组中元素的个数。函数的功 能是删除数组a中所有值为y的元素,并由n带回新数组的元素个数。在main函数中调用该函数。 9、编写函数void fun(int *a,int n,int *odd,int *even)分别求出数组a中所有奇数之 和以及所有偶数之和。形参n表示数组中元素的个数;利用指针odd返回奇数之和,利用指针even返回偶数之和。在main函数中调用该函数。 10、已知整型数组a中有若干元素的值为零,编写函数int func(int *a, int n),将a 中的零移至数组后面,非零整数移至数组前面并从小到大排序。形参n表示数组中元素的个数,函数返回原数组中第一个值为零的元素的下标。在main函数中调用该函数。 三、C类程序设计题 1、输入三个整数,按由大到小的顺序输出。要求用函数void swap(int *p1,int *p2) 处理两个整数值的交换,然后在函数void exchange(int *q1,int *q2,int *q3)里调用swap函数来实现三个整型变量值的交换。 3、编写函数int fun(char *str,int *a)把字符串str中出现的数字转换成数值存储在数 组a中,函数返回转换的个数。在main函数中调用该函数。 例如:s="12a34bc5de67"; 则a[]中存储着1234567,函数返回:7 4、编写函数void replace(char *str,char *sl,char *s2)实现字符串的特殊替换功能: 在字符串str中查找与sl中相同的字符,找到相同字符时用字符串s2中的对应位置的字符替换str中相应位置的字符。形参sl和s2有相同的字符个数,且sl中各字符互不相同。例如:字符串str[]="ABCABC",sl[]="AC",s2[]="ZX",则s2中的字符Z对应sl中的字符A,s2中的字符X对应sl中的字符C,函数replace(str,sl,s2)将字符串str 的内容变为"ZBXZBX"。 5、有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退 出圈子,问最后留下的人是原来的第几号。(约瑟夫环问题)