C语言上机考试试题
1、编写一个程序,判定一个字符串是否是另一个字符串的子串,若是,返回子串在主串中的位置。要求:
(1)在主函数中输入两个字符串,调用子函数cmpsubstr()判断,并在主函数输出结果。
  (2)子函数的返回值为-1表示未到,否则返回子串的位置(起始下标)。
c语言数组最大值最小值
2、输入一个字符串,内有数字和非数字字符,如:a123x456 17960?302tab5876将其中连续的数字作为一个整数,依次存放到数组a中。例如,123放在a[0]中,456放在a[1]中等等,统计共有多少个正数,并输出这些数。要求:
(1)在主函数中输入字符串,输出结果。调用子程序处理字符串。
  (2)子函数的返回值为-1表示为到,否则返回子串的位置。
3、编写一个主函数和子函数tran(x, r),要求是:函数tran(x, r)将十进制整数x转换成r进制数y(r在2-16之间),x和r的值由主调函数(即主函数)传入,y的值需要返回主调函数进行
输出。要求:y的值利用字符数组进行存储,数组的每一个元素存放y的一位数字字符。
4、编写一个主函数和函数tran(x),要求是:(1)函数tran(x)产生支付指定金额x(如234.78元)的各种面额人民币的数量(注意:尽量支付大面额的人民币),要求按100元、50元、10元、1元、5角、1角、5分、1分八种面额进行统计,产生的结果存放在数组中返回主函数。(2)在主函数中输入一金额,并以该金额调用tran函数,并输出该函数返回的统计结果。
5、编写一个主函数以及四个函数max(a, n)、min(a, n)、aver(a, n)和prime(m)。要求是:(1)函数max(a, n)、min(a, n)和aver(a, n)分别求出含有n个元素的数组a中的最大值、最小值和平均值,并返回结果到主调函数。(2)在主函数中输入10个[3,9999]之间的素数存放到数组中,要求通过调用函数prime对输入的数进行正确性限制,如果不符合要求,则返回0,否则返回1,保证输入10个[3,9999]之间的素数;然后分别调用max、min和aver函数,并输出返回的最大值、最小值和平均值。
6、编写一个主函数以及两个函数count(str)和maxlong(str)。要求是:(1)函数count(str)统计字符串str中包含的单词个数,并返回主调函数。(2)函数maxlong(str)出字符串str中包
含的最长单词(用字符数组进行存储),并返回主调函数。(3)在主函数中输入一个字符串,假定输入字符串中只含字母和空格,空格用来分割不同单词;以该字符串作为参数分别调用count和maxlong两个函数,并输出返回的结果。
7、编写一个程序模拟N个人参加选举的过程(N是一个符号常量),并输出选举结果。假设有四个候选人,编号分别为1、2、3、4,参与投票的人按四个候选人的顺序直接输入投票,投票的要求是:同意的输入1,不同意的输入-1,弃权的输入0,例如,输入0  1  -1  1表示对1、2、3、4四位候选者分别投的是弃权、同意、反对、同意。
要求:(1)单独编写一个函数input(x),x对应实参是一个含4个元素的一维数组,实现输入一个选举人对四个候选人的投票结果(并通过x返回给主调函数),需要控制投票时对每一个候选人只能输入1、0、-1三个数,如果输入其它的数,则要求重输;(2)主函数通过调用input函数输入一个选举人的投票结果;(3)如果一张选票中同意的个数大于2则视为无效票;最后,分别输出有效票、无效票的张数,并按得票数从高到底输出候选人编号和所得票数。
8、编写一个主函数以及两个函数fun1(m)和fun2(n)。要求是:
(1)任何一个正整数m的立方均可表示为m个连续奇数之和。例如:
    13=1
        23=3+5
        33=7+9+11
        43=13+15+17+19
函数fun1(m)求出组成m3的m个连续奇数,并输出求得的m个奇数。
(2)已知两个三位数abc、cbd之和为n,其中a、b、c均为一位数,函数fun2(n)求出满足条件的a、b、c的所有组合,并输出它们。
(3)主函数:输入一个正整数m,将m作为实参调用fun1函数;输入一个正整数n,将n作为实参调用fun2函数。
9、编写一个主函数以及两个函数sort(a, n)和insert(a, n, x)。要求是:(1)函数sort(a, n)用
冒泡法对数组a中的n个数据进行升序排序。(2)函数insert(a, n, x)在已包含n个数据的升序数组a中插入一个数x,且插入后该数组仍是升序数组。(3)主函数:输入任意10个整数给数组;调用sort函数对数组进行排序,并输出排序后的结果;从键盘输入一个整数,调用insert函数在数组中插入该数,并输出插入后的结果。
10、编写一个主函数以及两个函数sort(a, n)和find(a, n, x)。要求是:(1)函数sort(a, n)用选择法对数组a中的n个数据进行降序排序。(2)函数find(a, n, x)在已包含n个数据的降序数组a中用折半法查某数x是否在该数组中。(3)主函数:输入任意10个整数给数组,调用sort函数对数组进行排序;从键盘输入一个整数,调用find函数在数组中进行查,到输出“OK”,没有到输出“NO FOUND!”。
11、编写一个主函数以及两个函数sort(a, n)和merge(a, m, b, n)。要求是:(1)函数sort(a, n)对数组a中的n个数据进行升序排序(排序方法不限)。(2)函数merge(a, m, b, n)对两个已是升序的数组a、b进行归并(a、b中分别有m、n个数据),归并后的结果仍然是升序的,并将归并结果返回给主调函数。(3)主函数:输入任意5个正整数给数组a;调用sort函数对数组进行排序;输入任意8个正整数给数组b;调用sort函数对数组进行排序;调用merge函数对数组a、b进行归并,并输出归并后返回的结果。
12、某班有5个学生,4门课。分别编写三个函数实现下面三个要求:
(1)求各门课程的平均分;
(2)出有两门以上(含两门)不及格的学生,并输出其序号和不及格课程的成绩。
(3)出四门课平均成绩在85~90分的学生,并输出其序号。
主程序输入5个学生的成绩,然后调用上述子函数输出结果。
13、编写一个主函数和一个函数yf(n),要求是:函数yf(n)按如下图案打印杨辉三角形的前n行;在主函数中输入n的值,并将它作为实参调用yf函数。杨辉三角形的特点是:两个腰上的数都为1,其它位置上的每一个数是它上一行相邻的两个整数之和。
1
1 1
                    1  2  1
                  1  3  3  1
1  4    6  4  1
1  5  10  10  5  1
……
14、编写主函数和两个递归函数sum(a, n)、max(a, n)。要求是:(1)函数sum(a, n)求数组a中前n个元素之和,并返回求得的和值。(2)函数max(a, n)求数组a中前n个元素中的最大值,并返回求得的最大值。(3)主函数:输入任意10个正整数给数组,调用sum函数求数组中的10个元素之和,并输出求得的和值;调用max函数求数组中10个元素的最大值,并输出求得的最大值。
15、用递归法实现:对于一个正整数n(n是一个不超过8位的任意正整数,由键盘输入),(1)顺序输出它的各位数;(2)判断它是一个几位数。如输入:56439; 则输出:
                      5,6,4,3,9
5
要求:不允许使用数组;在递归函数中顺序输出该数的各位数,该数的位数则必须在主函数中输出。
16、编写一个函数ad(a, m, n)出一个m行n列的二维数组a中的“鞍点”;在主函数中输入二维数组的值,并将它作为实参调用ad函数。所谓“鞍点”是指该位置上的元素在该行上最大,在该列上最小;一个二维数组中可能没有鞍点。
17、输入一个日期(年、月、日),并输入该年的元旦(即1月1日)是星期几(星期一、星期二、…、星期六、星期日分别用数字1、2、…、6、7表示),计算该日期在本年中是第几天、星期几(注意润年问题)?要求写两个函数days和week,分别实现计算该日期在本年中是第几天和星期几。由主函数将日期传递给days函数,并将计算得到的结果返回给主函数输出;由主函数将日期及元旦的星期几传递给week函数,并将计算得到的结果返回给主函数输出。
18、输入两个日期(年、月、日),计算这两个日期之间相隔的天数。要求写一个函数diff,
实现上面的计算。由主函数将输入的两个日期传递给diff函数,计算后将相隔的天数返回给主函数输出。
19、编写程序实现将键盘输入的一行字符倒排输出。如键盘输入”I love you”,屏幕显示”you love I”。要求:
(1)主函数中输入字符串到字符数组string[]中,输出字符串。调用子函数sub1倒排字符串。
(2)sub1将string[]中的字符串倒排。   
20、编写一个主函数和函数encrypt(str),要求是:(1)函数encrypt(str)对字符串str进行加密,并将加密后的的字符串返回主函数;(2)在主函数输入一个字符串,以该字符串作为参数调用encrypt函数,并输出该函数返回的加密字符串。加密方法为:当内容为英文字母,按26个字母的顺序用其后面的第五个字母代替该字母;当内容为数字字符,用其除以3后的商和余数代替该数字;当内容为其他字符,不变。
例如:  abc25xyzfgh0212bcd
21、若有一个文本文件text1.dat,编写一个程序,将该文件中的每一行字符(回车结尾)颠倒顺序后复制到另一个文件text2.dat中。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。