C语言拓展训练编程题.doc
如有侵权,请联系网站删除,仅供学习与交流C语言拓展训练编程题【精品文档】第 7 页选择结构(1) 编程判断输入整数x的正负性和奇偶性。(2) 已知银行整存整取存款不同期限的月息利率分别为: 063% 期限一年 066% 期限=年 月息利率= 069% 期限三年 075% 期限五年 084% 期限八年 要求输入存钱的本金和期限,求到期时能从银行得到的利息与本金的合计。(3) 通过键盘输入字符,将输入的字符分为控制、数字、大写字母、小写字母和其他字符等五类。(4) 简单计算器。请编写一个程序计算表达式:datal op data2的值。其中op为运算符+、*、。(5) 输入年份year和月month,求该月有多少天。判断是否为闰年,可用如下C语言表达式:year%4=0 && year%100!=0 | year%400=0。若表达式成立(即表达式值为1),则year为闰年;否则,表达式不成立(即值为0),year为平年。(6) 对输入的行、单词和字符进行计数。我们将单词的定义进行化简,认为单词是不包含空格、制表符(t)及换行符的字符序列。例如:“a+b+c”,认为是1个单词,它由5个字符组成。又如:“xy abc”,为2个单词,6个字符。(7) 从键盘输入任意的字符,按下列规则进行分类计数。第类 0,1,2,3,4,5,6,7,8,9第=类 +,*,%,=第三类 其它字符当输入字符时先计数,然后停止接收输入,打印计数的结果。(8) 输入10个整数,求其中正数的个数及平均值,精确到小数点后两位。(9) 已知一个首项大于0的等差数列的前四项和为26,前四项的积为880,求此数列。 (10) 输入a、b、c、d四个整数,求最小值min和最大值max。 (11) 编写程序,输入三角型的三条边长,求其面积。注意:对于不合理的边长输入要输出数据错误的提示信息。循环结构(1) 从键盘输入十个整数,求这十个整数之和。(2) 从键盘中读入一系列字符,直到输入字母“a”时才停止。(3) 对输入的行和字符进行计数一行是以一个回车符(n)作为行结束标记的,这样在程序中可以通过搜索n对行进行计数。当输入CTRL+D时表示文件输入结束,停止计数。(4) 输出如下图所示的下三角形乘法九九表。 1 2 3 4 5 6 7 8 91 2 4 3 6 9 4 8 12 16 5 10 15 20 25 6 12 18 24 30 36 7 14 21 28 35 42 49 8 16 24 32 40 48 56 649 18 27 36 45 54 63 72 81 (5) 求1到10的阶乘的和。(6) 输入一个正整数,要求以相反的顺序输出该数。例如输入12345,输出位54321。 (7) 求555555的约数中最大的三位数是多少?(8) 输入10个整数,求其中正数的个数及平均值,精确到小数点后两位。(9) 输入n值,打印下列高为n的等腰三角形。 * 当n=6时(10) 输入n值,请编程输出如下图形(例n=3时)。(11) 编程打印数字金字塔。 l 1 2 1 1 2 3 2 1 1 2 3 4 3 2 1 1 2 3 4 5 4 3 2 1 1 2 3 4 5 6 5 4 3 2 1 1 2 3 4 5 6 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 7 6 5 4 3 2 11 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1 (12) 编程输出下列高度为n的图形。 1 3 6 10 15 21 2 5 9 14 20 4 8 13 19 7 12 18 11 17 16当n=6时(13) 请输入n值,编写程序输出下列图形(例如n=5)。 1 2 3 4 5 1 1 2 3 4 1 1 1 2 3 1 1 1 1 21 1 1 1 1 (14) 求下列算式的值:SUM=1+ 12+ 13+ 14+ 1999+ 11000(15) 求下式的值:(16) 编写-个程序,读入一个整数N;若N为非负数,则计算N到2*N之间的整数和;若N为一个负数,则求2*N到N之间的整数和。利用for和while写出两个程序。(17) 100匹马驮100担货,大马一匹驮 3担,中马一匹驮 2担,小马两匹驮 1担。试编写程序计算大、中、小马的数目。(18)求解爱因斯坦数学题。有一条长阶梯,若每步跨2阶,则最后剩余1阶,若每步跨3阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶则最后剩5阶,若每步跨7阶,最后才正好一阶不剩。请问,这条阶梯共有多少阶?数组(1) 反向输出有5个元素的int数组中各元素的值。(2) 在一个二维数组中形成并输出如下矩阵: 1 1 1 1 1 2 1 1 l 1A= 3 2 1 l l 4 3 2 1 1 5 4 3 2 1(3) 求矩阵A(2 × 3)的转置矩阵B(3× 2)。 1 2 3 1 4A= B= 2 5 4 5 6 3 6(4) 某班期终考试科目为高等数学(MT)、英语(EN)和物理(PH),有30人参加考试。为评定奖学金,要求统计并输出一个表格,表格内容包括学号、各科分数、总分和平均分,并标出三1课均在90分以上者(该栏标志输出为“Y”,否则为“N”),表格形式如下: N0 HT EN PH SUM V >901 97 87 92 276 92 N 2 92 91 90 273 91 Y 3 90 81 82 253 84 N 可以将学生的学号和各科成绩放在数组a304中,然后进行统计处理。(5) 有一个3 × 4的矩阵,求其中的最大元素的值。(6) 编写程序实现将字符串str2拷贝到字符串strl。(7) 输入英文的星期几,查找星期表后输出对应的数字。具体的算法是:若发现与表中 某项相同,则输出该字符串在表中的位置(序号):若查到表尾仍不相同,则输出错误信息。设星期表的内容如下图所示。0sunday1monday2tuesday3wednesday4thursday5friday6saturday(8) 给定某年某月某日,将其转换成这一年的第几天并输出。(9) 如果一个正整数等于其各个数字的立方和,则该数称为阿姆斯特朗数(亦称为自恋性数)。如407=43+03+73就是一个阿姆斯特朗数。试编程求1000以内的所有阿姆斯特朗数。(10) 写出下面给出的数组说明中所定义的数组的数组名、类型、维数、数组体积,并给出各数组元素在计算机中占用存储单元的情况。 int x4=1,2,3,4; float y34=1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8; int z223=1,2,3,4,5,6,7,8,9,10,11,12; int i23= ,4,5,6, j222= ,3,4, ,7,8; char c110=”Happy”,c2 3=”*”,”*”,”*”;(11) 设某班50人,写一程序统计某一单科成绩各分数段的分布人数,每人的成绩随机输入,并要求按下面格式输出统计结果(”*”表示实际分布人数)。 0 一一 39 * 40 一一 49 * 50 一一 59 *90 一一 100 *(12) 输入=维数组a35,打印其中最小值和最大值及其对应的行列位置。(13) 输入5×5的数组,编写程序实现: (a)求出对角线上各元素的和; (b)求出对角线上行、列下标均为偶数的各元素的积;(c)找出对角线上其值最大的元素和它在数组中的位置。 (14) 简单的密码加密程序。其加密过程是先定义一张字母加密对照表。输入 输出 输入 输出 a d i a b w k bc k ; cd : w ee I将需要加密的一行文字输入加密程序,程序根据加密表中的对应关系,可以很简单地将输入的文字加密输出,对于表中未出现的字符则不加密。 (15) 使用二维数组输入”BASIC”,”ADA”,”Pascal”,”C”,”Fortran”,将它们按从小到大的顺序排列后输出。 (16) 已知某运动会上女子百米运动员决赛成绩。要求编写程序,按成绩排序并按名次输出排序结果,包括名次、运动员号、成绩三项内容。 (17) 将矩阵A23的六个元素送入矩阵A32中,使其顺时针旋转90度。例: 1 2 3 4 1 a= b= 5 24 5 6 6 3(18) 输入10个人的序号和成绩,对成绩从小到大进行排序,输出排序后的序号和成绩(19) 对数组A中的N(0<N<100)个整数从小到大进行连续编号,要求不能改变数组A中元素的顺序,且相同的整数要具有相同的编号。例如: A=(5,3,4,7,3,5,6) 则输出为: (3,1,2,5,1,3,4) (20) 现将不超过2000的所有素数从小到大排成第一行,第二行上的每个数都等于它 “右肩”上的素数与“左肩”上的素数之差。请编程求出:第二行数中是否存在这样的若干个连续的整数,它们的和恰好是1898?假如存在的话,又有几种这样的情况? 第一行:2 3 5 7 11 13 17 1979 1987 1993第二行:1 2 2 4 2 4 8 6 (21) 下面是5×5的螺旋方阵。请编程生成n×n(n<10)阶方阵。 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 813 12 11 10 9函数(1) 将一个数的数码倒过来所得到的新数叫原数的反序数。如果一个数等于它的反序数,则称它为对称数。求不超过1993的最大的二进制的对称数。(2) 将1、2、3、4、5、6、7、8、9九个数字分成三组,每个数字只能用一次,即每组三个数不许有重复数字,也不许同其它组的三个数字重复,要求将每组中的三位数组成一个完全平方数。 (3) 对数组A中的N(0<N<100)个整数从小到大进行连续编号,要求不能改变数组A中元素的顺序,且相同的整数要具有相同的编号。例如:A=(5,3,4,7,3,5,6) 则输出为: (3,1,2,5,1,3,4)(4) 编写函数insert(s1,s2,f),实现在字符串s1中的指定位置f处插入字符串s2。 (5) 输入五个单词,请将它们按从小到大的顺序排列后输出。 (6) 输入字符串,请分别统计字符串中所包含的各个不同的字符及其各自字符的数量, 如:输入字符串: abcedabcdcd则输出:a=2 b=2 c=3 d=3 e=l (7) 写一程序,其中包括一个函数,此函数的功能是:对一个长度为N的字符串从其第K个字符起,删去M个字符,组成长度为N-M的新字符串(其中N、M<=80,K<=N)。要求输入字符串 ”We are poor students”,利用此函数进行删除”poor”的处理,并输出处理后的字符串。 (8) 设一以符号“”结束的英文句子长度小于20字节。请编程读入该句子,并检查其是否为回文(即正读和反读都是一样的,不考虑空格和标点符号)。例如:读入:MADAM I M ADAM 输出:YES读入:ABCDBA) 输出:N0(9) 编写一个使用指针的C函数,交换数组a和数组b中的对应元素。(10) 用指针作为函数的形式参数,编写字符串复制函数。(11) 编写函数,通过指针连接两个字符串。(12) 编写函数,通过指针将一个字符串反向。(13) 编写函数,通过指针求字符串的长度。(14) 编程按指针方式引用命令行的参数。(15) 产生动态数组。编写程序,输入数组大小后,通过动态分配内存函数malloc产生数组。(16) 用指针编写比较两个字符串s和t的函数strcmp(s,t)。要求s<t时返回-1,s=t时返回0,s>t时返回1。