C语言程序大全24页.docx
- 文档编号:24825409
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:63
- 大小:46.37KB
C语言程序大全24页.docx
《C语言程序大全24页.docx》由会员分享,可在线阅读,更多相关《C语言程序大全24页.docx(63页珍藏版)》请在冰豆网上搜索。
C语言程序大全24页
四、编写程序题及参考答案
其实,任何一门学科都离不开死记硬背,关键是记忆有技巧,“死记”之后会“活用”。
不记住那些基础知识,怎么会向高层次进军?
尤其是语文学科涉猎的范围很广,要真正提高学生的写作水平,单靠分析文章的写作技巧是远远不够的,必须从基础知识抓起,每天挤一点时间让学生“死记”名篇佳句、名言警句,以及丰富的词语、新颖的材料等。
这样,就会在有限的时间、空间里给学生的脑海里注入无限的内容。
日积月累,积少成多,从而收到水滴石穿,绳锯木断的功效。
【4.41】从键盘输入十个整数,用插入法对输入的数据按照从小到大的顺序进行排序,将排序后的结果输出。
我国古代的读书人,从上学之日起,就日诵不辍,一般在几年内就能识记几千个汉字,熟记几百篇文章,写出的诗文也是字斟句酌,琅琅上口,成为满腹经纶的文人。
为什么在现代化教学的今天,我们念了十几年书的高中毕业生甚至大学生,竟提起作文就头疼,写不出像样的文章呢?
吕叔湘先生早在1978年就尖锐地提出:
“中小学语文教学效果差,中学语文毕业生语文水平低,……十几年上课总时数是9160课时,语文是2749课时,恰好是30%,十年的时间,二千七百多课时,用来学本国语文,却是大多数不过关,岂非咄咄怪事!
”寻根究底,其主要原因就是腹中无物。
特别是写议论文,初中水平以上的学生都知道议论文的“三要素”是论点、论据、论证,也通晓议论文的基本结构:
提出问题――分析问题――解决问题,但真正动起笔来就犯难了。
知道“是这样”,就是讲不出“为什么”。
根本原因还是无“米”下“锅”。
于是便翻开作文集锦之类的书大段抄起来,抄人家的名言警句,抄人家的事例,不参考作文书就很难写出像样的文章。
所以,词汇贫乏、内容空洞、千篇一律便成了中学生作文的通病。
要解决这个问题,不能单在布局谋篇等写作技方面下功夫,必须认识到“死记硬背”的重要性,让学生积累足够的“米”。
【4.42】输入一个正整数,要求以相反的顺序输出该数。
例如输入12345,输出位54321。
与当今“教师”一称最接近的“老师”概念,最早也要追溯至宋元时期。
金代元好问《示侄孙伯安》诗云:
“伯安入小学,颖悟非凡貌,属句有夙性,说字惊老师。
”于是看,宋元时期小学教师被称为“老师”有案可稽。
清代称主考官也为“老师”,而一般学堂里的先生则称为“教师”或“教习”。
可见,“教师”一说是比较晚的事了。
如今体会,“教师”的含义比之“老师”一说,具有资历和学识程度上较低一些的差别。
辛亥革命后,教师与其他官员一样依法令任命,故又称“教师”为“教员”。
【4.43】编写程序,读入一个整数N;若N为非负数,则计算N到2×N之间的整数和;若N为一个负数,则求2×N到N之间的整数和。
分别利用for和while写出两个程序。
【4.44】求解爱因斯坦数学题。
有一条长阶梯,若每步跨2阶,则最后剩余1阶,若每步跨3阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶则最后剩5阶,若每步跨7阶,最后才正好一阶不剩。
请问,这条阶梯共有多少阶?
【4.45】一个自然数被8除余1,所得的商被8除也余1,再将第二次的商被8除后余7,最后得到一个商为a。
又知这个自然数被17除余4,所得的商被17除余15,最后得到一个商是a的2倍。
编写程序求这个自然数。
【4.46】编写程序,用二分法求一元二次方程2x3-4x2+3x-6=0在(10,10)区间的根。
【4.47】中国古代科学家祖冲之采用正多边形逼近的割圆法求出了π的值。
请编写一程序,采用割圆法求出π的值,要求精确到小数点之后的第十位。
【4.48】A、B、C、D、E五人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉。
日上三竿,A第一个醒来,他将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份。
B第二个醒来,也将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份。
C、D、E依次醒来,也按同样的方法拿鱼。
编写程序求出他们合伙至少捕了多少条鱼。
【4.49】一辆卡车违犯交通规则,撞人逃跑。
现场三人目击事件,但都没记住车号,只记下车号的一些特征。
甲说:
牌照的前两位数字是相同的;乙说:
牌照的后两位数字是相同的;丙是位数学家,他说:
四位的车号刚好是一个整数的平方。
请根据以上线索求出车号。
【4.50】若一个口袋中放有12个球,其中有3个红的,3个白的和6个黑的,每次从中任取8个球,编写程序求出共有多少种不同的颜色搭配。
【4.51】100匹马驮100担货,大马一匹驮3担,中马一匹驮2担,小马两匹驮1担。
试编写程序计算大、中、小马的数目。
【4.52】编写程序,输出用一元人民币兑换成1分、2分和5分硬币的不同兑换方法。
【4.53】显示200以内的完全平方数和它们的个数。
(完全平方数:
A2+B2=C2,求A、B、C)
【4.54】设N是一个四位数,它的9倍恰好是其反序数(例如:
123的反序数是321),求N的值。
【4.55】将一个数的数码倒过来所得到的新数叫原数的反序数。
如果一个数等于它的反序数,则称它为对称数。
求不超过1993的最大的二进制的对称数。
【4.56】编写程序求解下式中各字母所代表的数字。
PEAR
-ARA
───────
PEA
【4.57】一个自然数的七进制表达式是一个三位数,而这个自然数的九进制表示也是一个三位数,且这两个三位数的数码顺序正好相反,求这个三位数。
【4.58】请验证2000以内的哥德巴赫猜想,对于任何大于4的偶数均可以分解为两个素数之和。
【4.59】如果一个正整数等于其各个数字的立方和,则称该数为阿姆斯特朗数(亦称为自恋性数)。
如407=43+03+73就是一个阿姆斯特朗数。
编写程序求1000以内的所有阿姆斯特朗数。
【4.60】任意输入一个偶数,请将它分解为两个素数之和。
【4.61】如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数。
求3000以内的全部亲密数。
【4.62】猜数游戏。
由计算机"想"一个数请人猜,如果人猜对了,则结束游戏,否则计算机给出提示,告诉人所猜的数是太大还是太小,直到人猜对为止。
计算机记录人猜的次数,以此可以反映出猜数者"猜"的水平。
【4.63】编写程序求出1000!
后有多少个零。
【4.64】求矩阵A[2*3]的转置矩阵B[3*2]。
设矩阵A为:
┏123┓┏14┓
A=┃┃B=┃25┃
┗456┛┗36┛
【4.65】十个小孩围成一圈分糖果,老师分给第一个小孩10块,第二个小孩2块,第三个小孩8块,第四个小孩22块,第五个小孩16块,第六个小孩4块,第七个小孩10块,第八个小孩6块,第九个小孩14块,第十个小孩20块。
然后所有的小孩同时将自己手中的糖分一半给右边的小孩;糖块数为奇数的人可向老师要一块。
问经过这样几次调整后大家手中的糖的块数都一样?
每人各有多少块糖?
【4.66】输入5×5的数组,编写程序实现:
(1)求出对角线上各元素的和;
(2)求出对角线上行、列下标均为偶数的各元素的积;
(3)找出对角线上其值最大的元素和它在数组中的位置。
【4.67】编写程序,以字符形式输入一个十六进制数,将其变换为一个十进制整数后输出。
【4.68】编写程序,输入一个十进制整数,将其变换为二进制后储存在一个字符数组中。
【4.69】编写程序,输出1000以内的所有完数及其因子。
所谓完数是指一个整数的值等于它的因子之和,例如6的因子是1、2、3,而6=1+2+3,故6是一个完数。
【4.70】对数组A中的N(0<N<100=个整数从小到大进行连续编号,输出各个元素的编号。
要求不能改变数组A中元素的顺序,且相同的整数要具有相同的编号。
例如数组是:
A=(5,3,4,7,3,5,6)则输出为:
(3,1,2,5,1,3,4)
【4.71】现将不超过2000的所有素数从小到大排成第一行,第二行上的每个数都等于它"右肩"上的素数与"左肩"上的素数之差。
请编程求出:
第二行数中是否存在这样的若干个连续的整数,它们的和恰好是1898?
假如存在的话,又有几种这样的情况?
第一行:
2357111317.....197919871993 第二行:
122424.....86
【4.72】将1、2、3、4、5、6、7、8、9九个数字分成三组,每个数字只能用一次,即每组三个数不许有重复数字,也不许同其它组的三个数字重复,要求将每组中的三位数组成一个完全平方数。
【4.73】一个自然数的七进制表达式是一个三位数,而这个自然数的九进制表示也是一个三位数,且这两个三位数的数码顺序正好相反,求这个三位数。
【4.74】使用数组精确计算M/N(0 如果M/N是无限循环小数,则计算并输出它的第一循环节,同时要求输出循环节的起止位置(小数的序号)。 为了实现高精度计算结果,可将商M存放在有N(N>1)个元素的一维数组中,数组的每个元素存放一位十进制数,即商的第一位存放在第一个元素中,商的第二位存放在第二个元素中……,依次类推。 这样可使用数组来表示计算的结果。 【4.75】使用数组完成两个超长(长度小于100)正整数的加法。 为了实现高精度的加法,可将正整数M存放在有N(N>1)个元素的一维数组中,数组的每个元素存放一位十进制数,即个位存放在第一个元素中,十位存放在第二个元素中……,依次类推。 这样通过对数组中每个元素的按位加法就可实现对超长正整数的加法。 【4.76】使用数组完成两个超长(长度小于100)正整数的加法。 为了实现高精度的加法,可将正整数M存放在有N(N>1)个元素的一维数组中,数组的每个元素存放一位十进制数,即个位存放在第一个元素中,十位存放在第二个元素中……,依次类推。 这样通过对数组中每个元素的按位加法就可实现对超长正整数的加法。 【4.77】使用数组完成两个超长(长度小于100)正整数的乘法。 【4.78】马步遍历问题: 已知国际象棋棋盘有8*8共64个格子。 设计一个程序,使棋子从某位置开始跳马,能够把棋盘上的格子走遍。 每个格子只允许走一次。 【4.79】八皇后问题: 在一个8×8的国际象棋盘,有八个皇后,每个皇后占一格;要求棋盘上放上八个皇后时不会出现相互"攻击"的现象,即不能有量个皇后在同一行、列或对角线上。 问共有多少种不同的方法。 【4.80】编制一个计算函数y=f(x)的值程序,其中: -x+2.50<=x<2 y=2-1.5(x-3)*(x-3)2<=x<4 x/2-1.54<=x<6 【4.81】编写程序,实现比较两个分数的大小。 【4.82】求这样一个三位数,该三位数等于其每位数字的阶乘之和。 即: abc=a! +b! +c! 【4.83】已知两个平方三位数abc和xyz,其中数码a、b、c、x、y、z未必是不同的;而ax、by、cz是三个平方二位数。 编写程序,求三位数abc和xyz。 任取两个平方三位数n和n1,将n从高向低分解为a、b、c,将n1从高到低分解为x、y、z。 判断ax、by、cz是否均为完全平方数。 【4.84】找出一个二维数组中的鞍点,即该位置上的元素是该行上的最大值,是该列上的最小值。 二维数组也可能没有鞍点。 【4.85】将数字1、2、3、4、5、6填入一个2行3列的表格中,要使得每一列右边的数字比左边的数字大,每一行下面的数字比上面的数字大。 编写程序求出按此要求可有几种填写方法? 【4.86】编写一个函数实现将字符串str1和字符串str2合并,合并后的字符串按其ASCII码值从小到大进行排序,相同的字符在新字符串中只出现一次。 【4.87】已知计算x的n阶勒让德多项式值的公式如下: 1(n=0) Pn(x)=x(n=1) ((2n-1)*x*Pn-1(x)-(n-1)*Pn-2(x))/n(n>1) 请编写递归程序实现。 【4.88】编写函数,采用递归方法实现将输入的字符串按反序输出。 【4.89】编写函数,采用递归方法在屏幕上显示如下杨辉三角形: 1 11 121 1331 14641 15101051 …… …… …… …… …… 【4.90】编写函数,采用递归方法将任一整数转换为二进制形式。 【4.91】设有字母a、b、c,请编程用递归的方法产生由这些字母组成的,且长度为n的所有可能的字符串。 例如,输入n=2,则输出: aa ab ac babbbccacbcc 【4.92】将一个数的数码倒过来所得到的新数,叫作原数的反序数,如果一个数等于它的反序数,则称它为对称数。 编写程序,采用递归算法求不超过1993的最大的二进制的对称数。 【4.93】从1到n(n<1000)个自然数中选出r个数进行组合,并按指定的格式输出组合的结果。 例如: n=5,r=3时,共有10种组合,运行程序,要按下面的格式输出: 123 4 5 34 5 45 234 5 45 345 请用递归算法实现。 【4.94】从键盘输入十个整数,用合并排序法对输入的数据按照从小到大的顺序进行排序,将排序后的结果输出。 【4.95】编写程序,读入一个以符号"."结束的长度小于20字节的英文句子,检查其是否为回文(即正读和反读都是一样的,不考虑空格和标点符号)。 例如: 读入句子: MADAMI'MADAM.它是回文,所以输出: YES 读入句子: ABCDBA).它不是回文,所以输出: NO 【4.96】编写程序,其中包括一个函数,此函数的功能是: 对一个长度为N的字符串从其第K个字符起,删去M个字符,组成长度为N-M的新字符串(其中N、M<=80,K<=N)。 例如输入字符串"Wearepoorstudents.",利用此函数进行删除"poor"的处理,输出处理后的字符串是"Wearestudents."。 【4.97】编写函数,通过指针将一个字符串反向。 【4.98】编写一个函数insert(s1,s2,ch),实现在字符串s1中的指定字符ch位置处插入字符串s2。 【4.99】编写程序将输入的两行字符串连接后,将串中全部空格移到串首后输出。 【4.100】编写程序,输入字符串,分别统计字符串中所包含的各个不同的字符及其各自字符的数量。 如: 输入字符串: abcedabcdcd 则输出: a=2b=2c=3d=3e=1。 【4.101】利用结构: structcomplx {intreal; intim; }; 编写求两个复数之积的函数cmult,并利用该函数求下列复数之积: ⑴(3+4i)×(5+6i)⑵(10+20i)×(30+40i 【4.102】编写成绩排序程序。 按学生的序号输入学生的成绩,按照分数由高到低的顺序输出学生的名次、该名次的分数、相同名次的人数和学号;同名次的学号输出在同一行中,一行最多输出10个学号。 【4.103】编写程序,实现输入的时间屏幕显示一秒后的时间。 显示格式为HH: MM: SS。 程序需要处理以下三种特殊情况: ⑴若秒数加1后为60,则秒数恢复到0,分钟数增加1; ⑵若分钟数加1后为60,则分钟数恢复到0,小时数增加1; ⑶若小时数加1后为24,则小时数恢复到0。 【4.104】编写程序,从键盘输入3个学生的数据,将它们存入文件student;然后再从文件中读出数据,显示在屏幕上。 【4.105】编写程序,从键盘输入一行字符串,将其中的小写字母全部转换成大写字母,然后输出到一个磁盘文件"test"中保存。 【4.106】编写程序,读入磁盘上C语言源程序文件"test8.c",删去程序中的注释后显示。 【编写程序题参考答案】 【4.41】参考答案: main() {inti,j,num,a[10]; for(i=0;i<10;i++) {printf("EnterNo.%d: ",i+1); scanf("%d",&num); for(j=i-1;j>=0&&a[j]>num;j--) a[j+1]=a[j]; a[j+1]=num; } for(i=0;i<10;i++) printf("No.%d=%d\n",i+1,a[i]); } 【4.42】参考答案: main() {intn; printf("Pleaseentern: "); scanf("%d",&n); while(n>0) {printf("%d",n%10); n=n/10; } } 【4.43】参考答案: main() {inti,n; longs1=0,s2=0; printf("PleaseenterN: "); scanf("%d",&n); if(n>=0) for(i=n;i<=2*n;i++) s1=s1+i; else for(i=n;i>=2*n;i--) s1=s1+i; i=n; if(i>=0) while(i<=2*n) s2=s2+i++; else while(i>=2*n) s2=s2+i--; printf("Result1=%ldresult2=%ld\n",s1,s2); } 【4.44】分析: 据题意,阶梯数满足下面一组同余式: x≡1(mod2) x≡2(mod3) x≡4(mod5) x≡5(mod6) x≡0(mod7) 参考答案: #include main() {inti=1;/*i为所设的阶梯数*/ while(! ((i%2==1)&&(i%3==2)&&(i%5==4)&&(i%6==5)&&(i%7==0))) ++i;/*满足一组同余式的判别*/ printf("Staris_number=%d\n",i); } 【4.45】参考答案: main() {inti,n,a; for(i=0;;i++) {if(i%8==1) {n=i/8; if(n%8==1) {n=n/8; if(n%8==7)a=n/8; } } if(i%17==4) {n=i/17; if(n%17==15)n=n/17; } if(2*a==n) {printf("result=%d\n",i); break; } } } 【4.46】分析: 二分法的基本原理是,若函数有实根,则函数的曲线应当在根这一点上与x轴有一个交点,在根附近的左右区间内,函数值的符号应当相反。 利用这一原理,逐步缩小区间的范围,保持在区间的两个端点处的函数值符号相反,就可以逐步逼近函数的根。 参考答案: #include"stdio.h" #include"math.h" main() {floatx0,x1,x2,fx0,fx1,fx2; do {printf("Enterx1,x2: "); scanf("%f,%f",&x1,&x2); fx1=2*x1*x1*x1-4*x1*x1+3*x1-6;/*求出x1点的函数值fx1*/ fx2=2*x2*x2*x2-4*x2*x2+3*x2-6;/*求出x2点的函数值fx2*/ }while(fx1*fx2>0);/*保证在指定的范围内有根,即fx的符号相反*/ do {x0=(x1+x2)/2;/*取x1和x2的中点*/ fx0=2*x0*x0*x0-4*x0*x0+3*x0-6;/*求出中点的函数值fx0*/ if((fx0*fx1)<0)/*若fx0和fx1符号相反*/ {x2=x0;/*则用x0点替代x2点*/ fx2=fx0; } else {x1=x0;/*否则用x0点替代x1点*/ fx1=fx0; } }while(fabs((double)fx0)>=1e-5);/*判断x0点的函数与x轴的距离*/ printf("x=%6.2f\n",x0); } 【4.47】分析: 做圆的内接4边形,从圆心和4边形顶点连接形成4个三角形,可以求出每个三角形的面积(r2/2)现在我们知道三角形的面积和两个边长(均为半径a=r、b=r),可以用公式: S=s(s-a)(s-b)(s-c)求出第三边c。 我们将内接4边形换为内接8边形,原来的三角形被一分为二,故c/2就是每个三角形的高,面积又是可以求出的。 再将三角形一分为二,……。 当三角形的面积求出时,内接多边形的面积就可求出。 参考答案: main() {intn=4; doubler=10,s,cr,c,p; s=r*r/2; do {cr=n*s; p=16*r*r*r*r-64*s*s; c=(4*r*r-sqrt(p))/2; c=sqrt(c); s=c*r/4; n=2*n; }while(n*s-cr>1.0e-10); printf("PAI=%lf\n",cr/r/r); } 【4.48】分析: 根据题意,总计将所有的鱼进行了五次平均分配,每次分配时的策略是相同的,即扔掉一条后剩下的鱼正好分为五份,然后拿走自己的一份,余下其它四份。 假定鱼的总数为x,则x可以按照题目的要求进行五次分配: x-1后可被5整除,余下的鱼为4×(x-1)÷5。 若x满足上述要求,则x就是题目的解。 参考答案: main() {intn,i,x,flag=1;/*flag: 控制标记*/ for(n=6;flag;n++)/*采用试探的方法,令试探值n逐步加大*/ {for(x=n,i=1;flag&&i<=5;i++)/*判断是否可按要*/ if((x-1)%5==0)x=4*(x-1)/5;/*求进行5次分配*/ elseflag=0;/*若不能分配则置标记flag=0退出分配过程*/ if(flag)break;/*若分配过程正常,找到结果,退出试探的过程*/ elseflag=1;/*否则继续试探下一个数*/ } printf("Totalnumberoffishcatched=%d\n",n);/*输出结果*/ } 【4.49】分析: 按照题目的要求造出一个前两位数相同、后两位数相同且相互间又不同的整数,然后判断该整数是否是另一个整数的平方。 参考答案: #include"math.h" main() {inti,j,k,c; for(i=1;i<=9;i++)/*i: 车号前二位的取值*/ for(j=0;j<=9;j++)/*j: 车号后二位的取值*/ if(i! =j)/*判断两位数字是否相异*/ {k=i*1000+i*100+j*10+j;/*计算出可能的整数*/ for(c=31;c*c
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 程序 大全 24