C语言拓展训练编程题new

更新时间:2024-04-06 19:47:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

选择结构

(1) 编程判断输入整数x的正负性和奇偶性。

(2) 已知银行整存整取存款不同期限的月息利率分别为:

0.63% 期限一年 0.66% 期限=年

月息利率= 0.69% 期限三年

0.75% 期限五年 0.84% 期限八年

要求输入存钱的本金和期限,求到期时能从银行得到的利息与本金的合计。

(3) 通过键盘输入字符,将输入的字符分为控制、数字、大写字母、小写字母和其他字符

等五类。

(4) 简单计算器。请编写一个程序计算表达式:datal op data2的值。其中op为运算符

+、—、*、/。

(5) 输入年份year和月month,求该月有多少天。判断是否为闰年,可用如下C语言表达

式:year%4==0 && year0!=0 || year@0==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 9 - - - - - - - - - - - - - - - - - - - - - -

1 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 64

9 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 1

1 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 2

1 1 1 1 1

(14) 求下列算式的值:SUM=1+ 1/2+ 1/3+ 1/4+...+ 1/999+ 1/1000 (15) 求下式的值:

1005010?k??(k*k)??kk?1k?1k?1(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 1

A= 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

A=

4 5 6

1 4 B= 2 5

3 6

(4) 某班期终考试科目为高等数学(MT)、英语(EN)和物理(PH),有30人参加考试。为评定

奖学金,要求统计并输出一个表格,表格内容包括学号、各科分数、总分和平均分,并标出三1]课均在90分以上者(该栏标志输出为“Y”,否则为“N”),表格形式如下: N0 HT EN PH SUM V >90

------------------------------------

1 97 87 92 276 92 N

2 92 91 90 273 91 Y 3 90 81 82 253 84 N

可以将学生的学号和各科成绩放在数组a[30][4]中,然后进行统计处理。 (5) 有一个3 × 4的矩阵,求其中的最大元素的值。 (6) 编写程序实现将字符串str2拷贝到字符串strl。

(7) 输入英文的星期几,查找星期表后输出对应的数字。具体的算法是:若发现与表中 某

项相同,则输出该字符串在表中的位置(序号):若查到表尾仍不相同,则输出错误信息。设星期表的内容如下图所示。

0 1 2 3 4 5 6

(8) 给定某年某月某日,将其转换成这一年的第几天并输出。

(9) 如果一个正整数等于其各个数字的立方和,则该数称为阿姆斯特朗数(亦称为自恋性

数)。如407=43+03+73就是一个阿姆斯特朗数。试编程求1000以内的所有阿姆斯特朗数。

(10) 写出下面给出的数组说明中所定义的数组的数组名、类型、维数、数组体积,并给出

各数组元素在计算机中占用存储单元的情况。 int x[4]={1,2,3,4};

float y[3][4]={1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8};

int z[2][2][3]={1,2,3,4,5,6,7,8,9,10,11,12}; int i[2][3]={{ },{4,5,6}}, j[2][2][2]={{ },{3,4},{ },{7,8}}; char c1[10]={”Happy.”},c2[ ][3]={{”*”},{”**”},{”*”}};

sunday monday tuesday wednesday thursday friday saturday (11) 设某班50人,写一程序统计某一单科成绩各分数段的分布人数,每人的成绩随机输入,

并要求按下面格式输出统计结果(”*”表示实际分布人数)。

0 一一 39 * 40 一一 49 ** 50 一一 59 ***** ............ 90 一一 100 ****

(12) 输入=维数组a[3][5],打印其中最小值和最大值及其对应的行列位置。 (13) 输入5×5的数组,编写程序实现:

(a)求出对角线上各元素的和;

(b)求出对角线上行、列下标均为偶数的各元素的积;

(c)找出对角线上其值最大的元素和它在数组中的位置。 (14) 简单的密码加密程序。其加密过程是先定义一张字母加密对照表。

输入 输出 输入 输出

a d i a b w k b

c k ; c d : w e e I

将需要加密的一行文字输入加密程序,程序根据加密表中的对应关系,可以很简单地将输入的文字加密输出,对于表中未出现的字符则不加密。

(15) 使用二维数组输入”BASIC”,”ADA”,”Pascal”,”C”,”Fortran”,将它们按从小到大的

顺序排列后输出。

(16) 已知某运动会上女子百米运动员决赛成绩。要求编写程序,按成绩排序并按名次输出

排序结果,包括名次、运动员号、成绩三项内容。

(17) 将矩阵A[2][3]的六个元素送入矩阵A[3][2]中,使其顺时针旋转90度。例:

1 2 3 4 1 a= b= 5 2

4 5 6 6 3

(18) 输入10个人的序号和成绩,对成绩从小到大进行排序,输出排序后的序号和成绩 (19) 对数组A中的N(0

素的顺序,且相同的整数要具有相同的编号。例如:

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 8 13 12 11 10 9

(1) 将一个数的数码倒过来所得到的新数叫原数的反序数。如果一个数等于它的反序数,

则称它为对称数。求不超过1993的最大的二进制的对称数。

(2) 将1、2、3、4、5、6、7、8、9九个数字分成三组,每个数字只能用一次,即每组三

个数不许有重复数字,也不许同其它组的三个数字重复,要求将每组中的三位数组成一个完全平方数。

(3) 对数组A中的N(0

素的顺序,且相同的整数要具有相同的编号。

例如: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. 读入:ABCDBA)

(9) 编写一个使用指针的C函数,交换数组a和数组b中的对应元素。 (10) 用指针作为函数的形式参数,编写字符串复制函数。 (11) 编写函数,通过指针连接两个字符串。 (12) 编写函数,通过指针将一个字符串反向。 (13) 编写函数,通过指针求字符串的长度。 (14) 编程按指针方式引用命令行的参数。

输出:YES

输出:N0

(15) 产生动态数组。编写程序,输入数组大小后,通过动态分配内存函数malloc产生数组。 (16) 用指针编写比较两个字符串s和t的函数strcmp(s,t)。要求s

0,s>t时返回1。

综合1

1输入任意一个十进制整数,转化为二进制数串显示出来

2设想一下,32位整数int能表示最大多大数的阶乘。假设 y=x!,在32位整数范围内,x最大为多少,y能达到最大值,而能保证乘法不溢出

3、编程输入一个信用卡号码,输出合法性校验结果.Lunn算法可校验号码合法性,使用信用卡号码只能由0-9数字组成,通常16-19位

1)从卡号最后一位开始,逆向将奇数位相加

2)从卡号最后一位开始,逆向将偶数位数字,先乘以2(如果乘积为2位数,则

将其减去9),再求和

3)将奇数位总和加上偶数位总和,结果应能被10整除

4、A、B、C、D、E五个人在某天夜里合伙去捕鱼,到第二天凌晨时都疲倦了,于是各自找地方睡觉。日上三竿,A第一个醒来,他将鱼分为五分,把多余的一条鱼扔掉,自己拿走一份。B、C、D、E依次醒来,也按同样方法都能拿到鱼。求他们合伙至少捕了多少鱼

5、一个N位的十进制正整数,如果每一位数字的N次方之和等于这个数本身,则称其为花朵数 要求:

1)用一个宏定义N ,例如:#define N 3

2)函数int getP(int x,int y)计算x的y次方.

3)函数int getWel(int n,int *s)将n的每位数字按次序存放到数字s中,

例如n=567,那么s[0]=5,s[1]=6,s[2]=7,返回3,表示567是一个3位数. 4)确保当N的值为4.5.6或7时,能输出正确结果,每行输出一个. 6、从键盘读入一个由字母构成的串(不大于30个字符),从该串中取出任意3个不重复的字符,求所有的不同取法,如果没有取到3个不同字符,则提示没有结果。要求按字母升序排列成一个串,对于不同的取法,输出次序无所谓,但数目应该确保正确

综合2

1、打印所有不超过n(n<256)的,其平方具有对称性质的数.如:11*11=121 2、请写一个程序,对于一个m行m列(1

3、 编写一个函数:void replace(char rs[],char a[],char s1[],const char s2[]),在字符串a中查找是否有s1子串,如果有,就将s1子串替换为s2串,最后将结果串写入到形参rs串中,写一个主函数测试结果

4、设a,b,c均是0~9之间的数,abc,bcc是两个三位数,且有:abc+bcc=532.求满足条件的所有a,b,c的值

5、对一组输入数字进行下面三种操作:12,34,2,15,26,8,40

操作1: a m,将m加到数列最后,

例如输入: a 8

输出结果: 12,34,2,15,26,8,40,8

操作2: c m n,将序列中m全都换成n

例如输入:c 8 7

输出结果:12,34,2,15,26,7,40,7

操作3: d m,将序列中的m全部删除

例如输入:d 7

输出结果:12,34,2,15,26,40

6、编写一个程序计算100以内的smith数。

概念:一个非素数,其各位数之和等于其所有质因数的各位数之和 例如:

4=2*2,4=2+2 是 22=2*11,2+2=2+1+1 是 27=3*3*3 ,2+7=3+3+3 是

7、输入一个字符串,串内有数字和非数字字符,如:abc2345 345efa afae3452

将其中连续的数字作为一个整数,依次存放到另一个整形数组b中.如对于以

上的输入统计出字符串中数字的个数,并输出这些整数.要求在主函数中完成输

入和输出,设计一个函数,把指向字符串的指针和指向整数的指针作为函数的形参。 综合3

1、输入字符串统计单词个数。

2、输入两个字符串s和t,打印出t在s中出现的位置,并输出出现的次数 如输入:s=qwqwertqweqqqq ,t=qw 输出:0 2 7

3

3、观察一个数的序列规律, 1 2 3 4 5 6 8 9 10 12 15 16 18...... 现在输入一个数8(即上述数列中第八个数),输出: 9

注:上述序列皆为1 2 3 5的倍数(即至少是1 2 3 5 其中一个数的倍数) 4、二进制逆序,如输入10对应的二进制为1010其逆序为0101,对应十进制为5 5、求满足条件:n*n-m*m-n*m=1,且使m*m+n*n的值最大的 m 和 n,其中m 和 n 的值都要小于k,k由用户输入

6、已知一个数组 如a[10]={1,2,3,4,5,6,7,8,9,0};输入p,则右移p位。 如输入3后,输出a[10]={8,9,0,1,2,3,4,5,6,7}。 要求时间复杂度和空间复杂度尽量小

7、已知一个斜三角: 22 32 14 77 45 12 34 37 23

44 23 15

34 54 88

从最左上角元素开始往右或往右下走,请问顺着哪条路所经过的值得总和最大, 如可以有路线:22 32 34 23 54; 22 12 44 34 88等请求出满足值总和最大的那条路线

本文来源:https://www.bwwdw.com/article/2dbr.html

微信扫码分享

《C语言拓展训练编程题new.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档
下载全文
范文搜索
下载文档
Top