首页 > 游戏八卦 >  > 

c语言经典100例 c语言经典实例

C语言的经典编程例子

【程序1】

c语言经典100例 c语言经典实例c语言经典100例 c语言经典实例


c语言经典100例 c语言经典实例


题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去

掉不满足条件的排列。

2.程序源代码:

main()

{int i,j,k;

printf("

");

for(i=1;i<5;i++)/以下为三重循环/

for(j=1;j<5;j++)

for (k=1;k<5;k++)

{if (i!=k&&i!=j&&j!=k) /确保i、j、k三位互不相同/

printf("%d,%d,%d

",i,j,k);

}}==============================================================

【程序2】

题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高

于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提

成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于

40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于

100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?

1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。

2.程序源代码:

main()

{long int i;

int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;

scanf("%ld",&i);

bonus1=1000000.1;bonus2=bonus1+1000000.75;

bonus4=bonus2+2000000.5;

bonus6=bonus4+2000000.3;

bonus10=bonus6+4000000.15;

if(i<=100000)

bonus=i0.1;

else if(i<=200000)

bonus=bonus1+(i-100000)0.075;

else if(i<=400000)

bonus=bonus2+(i-200000)0.05;

else if(i<=600000)

bonus=bonus4+(i-400000)0.03;

else if(i<=1000000)

bonus=bonus6+(i-600000)0.015;

else

bonus=bonus10+(i-1000000)0.01;

printf("bonus=%d",bonus);

}==============================================================

【程序3】

题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后

的结果满足如下条件,即是结果。请看具体分析:

2.程序源代码:

#include "math.h"

main()

{long int i,x,y,z;

for (i=1;i<100000;i++)

{ x=sqrt(i+100); /x为加上100后开方后的结果/

y=sqrt(i+268); /y为再加上168后开方后的结果/

if(xx==i+100&&yy==i+268)/如果一个数的平方根的平方等于该数,这说明此数是完全平方数/

printf("

%ld

",i);

}}==============================================================

【程序4】

题目:输入某年某月某日,判断这一天是这一年的第几天?

1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊

情况,闰年且输入月份大于3时需考虑多加一天。

2.程序源代码:

main()

{int day,month,year,sum,leap;

printf("

please input year,month,day

");

scanf("%d,%d,%d",&year,&month,&day);

switch(month)/先计算某月以前月份的总天数/

{case 1:sum=0;break;

case 2:sum=31;break;

case 3:sum=59;break;

case 4:sum=90;break;

case 5:sum=120;break;

case 6:sum=151;break;

case 7:sum=181;break;

case 8:sum=212;break;

case 9:sum=243;break;

case 10:sum=273;break;

case 11:sum=304;break;

case 12:sum=334;break;

default:printf("data error");break;

}sum=sum+day; /再加上某天的天数/

if(year%400==0||(year%4==0&&year%100!=0))/判断是不是闰年/

leap=1;

else

leap=0;

if(leap==1&&month>2)/如果是闰年且月份大于2,总天数应该加一天/

sum++;

printf("It is the %dth day.",sum);}==============================================================

【程序5】

题目:输入三个整数x,y,z,请把这三个数由小到大输出。

1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,

然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。

2.程序源代码:

main()

{int x,y,z,t;

scanf("%d%d%d",&x,&y,&z);

if (x>y)

{t=x;x=y;y=t;} /交换x,y的值/

if(x>z)

{t=z;z=x;x=t;}/交换x,z的值/

if(y>z)

{t=y;y=z;z=t;}/交换z,y的值/

printf("all to big: %d %d %d

",x,y,z);

程序员》C++ 图书三人谈

主持人:熊节(透明),《程序员》杂志编辑,C-View成员

嘉 宾:孟岩(梦魇),联想公司掌上设备事业部应用开发处任职,C-View成员。与侯捷先生合译《C++ Standard Library》一书

金尹(恶魔),上海天宇公司CTO,在《程序员》连载有“自由与繁荣的国度”系列文章

透明:“学C++用哪本书入门”,这是被问得最多的一个问题。但是哪一本书是的入门书?似乎很难找到。《C++ Primer》太厚,《Effective C++》对读者要求比较高,《Essential C++》又常常被批评为“太浅”。

其实说穿了:no silver bullet。想从一本书学会C++,那是不可能的。有朋友问我如何学C++,我会建议他先去找本数据结构书,把里面的习题全部用C++做一遍,然后再去看《Effective C++》。myan经常说“要在学习初期养成好习惯”,我对此颇不以为然。

个人认为,《Essential C++》适合作教材,《C++ Primer》适合作参考书,《Effective C++》适合作课外读物。

恶魔:很后悔当初买了《C++ Primer》。因为从我个人角度来看,它的功能效用基本是和《The C++ Programming Language》重合。当然对于入门来说,它还是很不错的。但是《C++ Primer》太厚,一来导致看书极其不方便,二来系统学习需要花比较长的时间。对于目前这个越来越快餐化的时代来说,的确有很多不适合的地方,不过可以作为初学者的参考书。现在我以一块K3 CPU的代价把它借给了别人,希望我那位同事能够从中得到一些益处。

如果已经具备了C基础,我建议看国内的书,例如钱能的《 C++大学教程(第二版) 》。(如果没有C的基础还是看谭浩强的C语言)。这本书对C讲得还算比较清晰,有很多习题值得一做,特别是的struct和union两个部分。其中的一些算法比较拖沓和繁琐(比如树和链表的遍历算法),读者可以尝试修改这些例子,作为对C语言的一些总结测试。

梦魇:这个问题让我想起四五年前的情形。今天对于C++有一点认识的人,多半是从那几年就开始学C++了。那时根本没有品牌观念。从书店里找一本C++书,如果看着还算明白,就买下来。我记得那时候宛延闿、张国锋、麦中凡的书都受到很高的赞誉。我个人最早的一本C++书是Greg Perry的一本书,今天想起来,其实是一本打着C++旗号的C语言教程。对我作用的一本书是国防科技出版社出版的一本书,书名记不得了,作者叫斯蒂芬·布莱哈。

透明:还记得以前曾批评过一本C++书,是北航出的,整本书就没有出现过class关键字。那本书,说穿了其实只是介绍了C语言和iostream库的用法,根本不能算C++。而当时我常常的一本书是电子科技大学张松梅老师的C++教程。那本书,直到今天来看也没有太大的问题,的缺憾就是由于年代久远,许多东西已经过时了。而对于一本技术书籍来说,“过时”是最不可接受的。

总体来说,那时使用C++的人真是在“盲人摸象”。不过这也有好处,就是对C++的很多细节能搞清楚,以后看到经典好书时比较容易理解;当然坏处就是概念不清,甚至都不知道C++和Visual C++、Borland C++到底有什么不一样。

梦魇:整个90年代,其实大部分人对于C++的认识都似是而非。一开始是等同于Borland C++,后来是等同于Visual C++和MFC。所以一般来说,打着BC和VC旗号的书卖得很好,人们觉得这就是C++。而我比较幸运,布莱哈的那本书虽然从现在的眼光来看谈不上高超,但基本路子是对的。可能是因为原书是给UNIX程序员的培训教材,所以没有让我一开始就形成“C++ == VC++”的认识。

其实一直到1996年,我们那里搞计算机的都是唯Borland C++马首是瞻的,到了VC 4.0出来,一下子格局全变了。1997年VC5推出之后,书店里MFC书铺天盖地,学MFC的人,头抬得都比别人高一些。不过现在看来,那时候大部分的MFC书都是三流货色。我曾经有一段时间认为,那一批程序员中间有不少被误导了。根本原因就是相对的封闭。

透明:我觉得一本书的价值有两方面:,教给你实用的技术;第二,促使你去思考。对于一本介绍VC(或者说MFC)使用方法的书,我根本不希望它能促使我有什么思考,所以我就一定要求它在技术上精益求精完美无瑕。我刚开始用VC的时候,买的本书就是潘爱民老师翻译的《VC技术内幕》(第四版),没有受到那些“三流货色”的误导,应该说是很幸运的。

梦魇:1999年机械工业出版社开始出版“计算机科学丛书”,其中的《Thinking in C++》版受到了广泛的欢迎。其实我一直不认为这本书很出色,虽然拿过一次。然而我们都得承认,这本书在C++书籍领域里次建立了品牌观念,很多初学者开始知道,不是随便买哪一本都一样的。再往后就是2000年的《 深入浅出MFC(第二版) 》第二版,以及侯先生在《程序员》上发表的那一篇《C++/OOP大系》,加上整个大环境的变化,品牌观念深入人心,C++书籍市场终于开始逐渐与世界同步。

回想往事,我的感觉是,那个需要战战兢兢选择入门书的时代已经过去,今天的C++初学者,大可以放心地买好、自己读起来思路顺畅的书,入门不再是太大的问题。还有一些程序员已经学了几年C++,但看到今天出版的一些新书,感觉比较陌生,这也不是什么问题。侯先生经常说“凡走过必留下足迹”,所谓“走弯路”,未必不是一件好事。

至于具体的表,就不好一概而论了。总之在我的印象里,《Essential C++》、《C++ Primer》、钱能的C++教程,都不错。甚至有人一上来就看Bjarne Stroustrup的《The C++ Programming Language》,只要他喜欢,也没什么不可以。

透明:我同意你的观点。不管怎么说,编程是门实践性非常强的学问。要想对C++对象模型有深入的了解,的办法就是写一串程序去看结果;要想学会OOP,也只能从项目中学。对于初学者,的学习方法就是不停地写程序,正有用的程序,写到有问题的时候就去查书,于是自然就会知道哪本书好哪本书不好。不过我们的教育制度能不能让大学里的学生们有这样的学习机会,我表示怀疑。

以我的经验,学C++有两个门槛:入门和使用。完全看不懂C++,这是一个门槛,但是只要有一本合适的入门书,很快就能跨过。要想真正用上C++,却不是件很容易的事情。尤其对于学生来说,接触到的东西多是“玩具”,很难有实战的机会。所以经常看见有人问“C++到底能做什么”,这是C++学习中一个比较麻烦的问题。我们都是做了相当长时间的C++程序之后才看到一些真正经典的书,也正是因为走了相当长的弯路之后才知道这些书的经典之所在。所谓弯路,我想也是一种必须的积累。就算一开始就看《Essential C++》和《C++ Primer》,没有两三年的时间恐怕还是难有所得。

恶魔:有两句十分有道理的话,一是我大学的C语言老师说的“写程序不如说是抄程序”,另一句是一网友说的“好的设计来自借鉴,天才的设计来自剽窃”。对于我这个理性批判主义者来说,这两句话的确不太适合。但是无论从哪个角度来讲,对于初学者来说,剽窃的作品是通向成功的最快捷径。

我个人认为,对于C++的初学者来说,首先要确定自己专业领域内主要使用的特性的方向。因为C++的特性如此众多,初学者想贪多基本是不可能成功的。C++的编程范式基本可以分为ADT+PP、GP和OO三个方向。对于ADT+PP范式来说,初学者的主要问题不是学习C++,而是学习C的使用。对于这样的初学者,国内的几本书还是写得比较清楚,符合人的习惯,比如谭浩强的《C语言教程》、钱能的《C++语言大学教程》。这两本书我首推本,因为这一本我潜心研究了一年,这本书当中很多程序是可以剽窃的,而且可以对这些程序进行加工和提升。比如结构这一章中,它所给出的用struct来实现链表、二叉树的算法是相当蹩脚的。学习ADT+PP的初学者将这本书揣摩透以后可以尝试修改这两个程序。另外这本书的第二版稍微涉及了一些关于“类”的内容。学习ADT+PP的初学者,可以不被OO中的一些专有特性扰乱自己的思路,对于类层次扁平、无继承、无多态的程序编写是有很大好处的。

透明:你好象比较推崇国内写的书。现在上有种不好的风气:一捧就捧上天,一贬就贬下地。就好象对待谭的书,前几年是奉为经典,这几年又有很多人使劲批评。学C++更是有点“崇洋”,总是觉得初学就应该看《Essential C++》。我看这种观点也是片面的。

恶魔:当然《Essential C++》也值得看看。但是我个人觉得这本书没有谭浩强的《C语言教程》来得好。主要原因是:,C++的所有特性都点到了,但是不深,看了以后会三心二意没有方向;第二,可以抄袭借鉴的例子太少。《C语言教程》中有很多有趣的问题,比如猴子吃桃、汉诺塔等等,这些例子对于刚刚涉及C/C++语言编程的人来说是学习编程很好的例子。《Essential C++》只能是前两本书看透以后,作为学习C++特性的一个过渡性的书籍。让读者真正领略到什么是C++的编程、和C编程的不同点在哪里。

透明:我发现一个很有趣的现象:初学者往往喜欢问“哪本书比较好”,这让我很是不解。这有点像一个刚学打篮球的人问“王治郅和科比谁比较厉害”。当然科比更厉害一些。但如果你是想学打篮球,这两个人都非常非常有资格教你,你跟谁学都能学得很强——关键不是在于你选哪个老师,而是在于你自己用多少功夫去学。

透明:回到原来话题。学会了C++的语法,能看懂C++代码之后,必须有些书来指导进阶(或者叫指点迷津)。我觉得《设计模式》很好,能够让读者看到一些精妙的用法。不过正如我经常说的,模式带来的麻烦和好处一样多,甚至麻烦还要更多。而且,C++本身的问题使得在C++中使用GoF模式愈加麻烦。

梦魇:《Design Patterns》这本书是不可以没有的,而且中英文版都不可少。最初我看中文版,说实话看不懂,但是也不觉得人家翻译得不好,所以就想,大概是原文就很难懂,加上自己水平有限。于是总是想着再找几本patterns的书来看。后来找到几本书,还不错,不过水平高下,一比就出来了,还是那本《Design Patterns》最经典,最耐看。英文版出来之后,两个版本对照看,明白多了。现在觉得,其实就设计模式来讲,把这本看明白了就很不错了,不用再花费很多心思找其他的书。我现在的包里始终夹着这本书,随身携带,有备无患。

至于说设计模式的副作用,和可能带来的弊端,我的体会也挺多。不过是这样,我们想一想,究竟什么情况下设计模式可以用得很好呢?一种是有经验丰富的人,比如要是Robert Martin带队,你在某个地方用错了设计模式,他就会指出来,说这里不对,将来会产生什么样的弊端。对于他来说,丰富的实践经验足以支持他进行“预测型”设计。但是大部分人没这个能力,因此我们只好走第二条路和第三条路,就是“试探型”设计和“重构型”设计。遇到一个问题,你觉得用某种模式挺合适的,就大胆地用了,成功是积累经验,发现不好,出了问题了,只好改回来,那也是积累教训。这叫做“试探型”。至于重构,应该算是最有组织、的工程化方法。先把问题“quick and dirty”地解决了,所有的暗礁都暴露出来,然后再根据实际情况采用合适的模式优化设计。现在XP和UP都高度重视refactory,UP在Elaboration和Construction阶段都鼓励抽出专门的iterations进行重构。所以说如果组织快速的软件开发,当然比较倾向于这条路——打嘛。

透明:讲到重构,我顺便说说《Refactoring》这本书的影响。从工程本身的角度来说,你所谓的“重构型设计”是没有什么问题的。但的开发者(也包括我在内)往往比较冲动,比较容易相信银弹的存在。曾经有那么一段时间,我在Ja中尝试过了重构的方法之后,又拿到C++中去尝试。结果发现,在Ja中速度非常快的重构过程,到C++中就被减慢了。究其原因,就是因为C++和Ja的约束条件不同。拿着Ja中成功的案例直接套C++,不失败才怪。

所以,我必须说:《Refactoring》这本书很有价值。但对于C++程序员来说,它的价值是让你思考,思考这种方法的可行性。如果一个C++程序员没有打算迁移到Ja,那么我必须告诉他:《Refactoring》这本书不是让你照着它用的,甚至不是让你去相信它的。对于C++程序员,《Refactoring》全书可以放心相信的只有第13章,其他的部分,都必须非常谨慎地对待。

梦魇:我还要就“试探型”的方法多说两句,我觉得对于个人发展来讲,“试探”也是必不可少的,撞墙不可怕,高水平的人不都是撞出来的吗?你失败了一次,就知道这个模式有什么潜在的问题,下次再用,就会多看几步,像下棋似的。撞的多了,路数就出来了。

我不知道你们是否有这个感觉:用错了模式,吃了亏,再回过头去翻翻《Design Patterns》,看到人家早就指出来这个问题,不过就是那么几句话,原来看上去干巴巴的,现在觉得句句都讲到心坎上,GoF的形象马上就高大起来,还带着光环,感觉是既兴奋又懊悔。

透明:现在回头来看,我更欣赏myan给我的《Designing Object-Oriented C++ Applications Using Booch Mod》。这本书能够帮助C++程序员理清思路培养习惯,可惜国内没有引进。相比后来商业味浓厚的UML系列书籍,我觉得这本书对于面向对象的阐释精辟独到,至今未有能出其右者。

梦魇:刚才我们两人都说到Robert Martin,他可是我的榜样。那本1995年的《Designing Object Oriented C++ Application》,我觉得是每一个C++软件工程师都应该反复研读的书。可惜不仅国内没有引进,在国外的名气也不大。如果你觉得面向对象的那些道理你好像都明白,可就是一遇到实际问题就使不上劲,那这本书就是你的导师。

提到理清思路,还有一本书不得不提,就是Andrew Koenig的《Ruminations On C++》。每个人都应该问自己,我学了这么多年的C++,究竟什么是C++最基本的设计理念?遇到问题我个直觉是什么?个试探型的解决方案应该具有那些特点?如果你不能给出明确的,就应该认真地去读这本书,读完了你就有了“主心骨”。

透明:插一句话,谈谈“书”的问题。入门书基本上是放之四海而皆准的,所以的意义也不大。而入门后的发展方向,每个人不同,这个时候就需要“高人”的指点。举个例子:我学C++的时候,myan还不认识我,所以也没有给我书,我还是学过来了,所以即使你当时向我了《Essential C++》或者《C++ Primer》,我也不会太感谢你;但在我认真研究OO的时候,你Robert Martin那本书给我,对我帮助就特别大,而且我从别的地方也很难找到类似的,所以我就很感谢你。

一个程序员,必须有framework的意识,要学会用framework,还要主动去分析framework(在这方面,《Design Patterns》能有一定的帮助)。但是,真正高质量、成气候的framework的书恐怕也就只有针对MFC的。从这个角度来说,MFC纵有千般不是,C++程序员都非常有必要先去用它、熟悉它、研究它,甚至借助《深入浅出MFC》这样的书来剖析它。不然,很难有framework的意识和感觉。

当然,另一个framework也很好,那就是STL。不管用不用MFC、STL,对这两个东西的掌握和理解都是极有帮助的。最近我又在看《深入浅出MFC》,虽然已经不用MFC编程了,但帮助是一定有的。

梦魇:MFC和STL方面,我还是比较推崇侯先生的两本书《深入浅出MFC》和《STL源码解析》。

《深入浅出MFC》这本书,名气自然是大得不得了,不过也有不少人批评。其实书也没有十全十美的,批评当然是少不了的,不过有的时候我看到有人评论这本书,把它跟Inside VC相比,真的是牛头不对马嘴。

你刚才其实说得很对,程序员应该有一点framework意识。而这本《深入浅出MFC》与其说是在讲MFC编程,不如说通篇是在拿MFC为例分析Application Framework的架构和脉络。所以无论你对于MFC本身是什么态度,这本书对每一个C++程序员都有很大的益处。

透明:是的。《VC技术内幕》会告诉你“DYNAMIC_CREATE这个宏怎么用”,《深入浅出MFC》则告诉你“DYNAMIC_CREATE这个宏是怎么实现的”。所以,如果你只需要在VC下写一些小应用程序,《深入浅出MFC》的价值并不太大;但是,如果你需要设计一个稍微大一点的东西(不一定是framework),MFC的设计思想就会有所帮助。

梦魇:另外,我觉得对于MFC也应该有一个公允的评价。过去是吹捧得天上有地下无,书店里铺天盖地都是MFC的书,搞得大家只知有MFC,不知有C++,甚至直到现在还有人问:“我是学MFC呢,还是学C++?VC++是不是比C++更高级的语言?”MFC成了一尊神像,阻碍了人们的视线。所以得把它从神坛上拉下来。这就是过去一两年有很多人,包括我在内批评MFC的一个目的。可是现在大家视野开阔了,.NET也出来了,MFC不再是神像了,少数人就开始以贬损MFC为乐了。我觉得这种态度是不对的。

什么叫好的框架?我觉得在十几年的时间能够象MFC这样保持稳定并且不断进步的框架就是好的框架。可能我们在一些具体的设计问题上有不同看法,觉得“这个地方这么设计不是更漂亮吗?”很多时候是的,但是这不重要,重要的是MFC成熟稳定、有十几年的成功经验,这是最了不起的东西。

另外一点,MFC中间包括着学习Win32 API编程的资料。这是除了其framework方面之外的另一个亮点。我现在使用Win32 API开发,但是经常参考MFC的源代码,收获很大。

透明:STL方面,我对于剖析它的源代码兴趣并不大,毕竟里面源代码多是算法问题。所以,《STL源码剖析》我也只是随便翻翻就束之高阁了。我觉得这本书用来做计算机系的数据结构和算法教材不错,不知道有没有老师乐意这样做。

对于STL,我的态度一向都是“应用至上”。不过,我一直认为SGI STL本身就是一本精彩的书,一本数据结构和算法的经典参考书,同时也是泛型技术的参考书。想知道一个算法是如何实现的,看看STL源代码就行;想知道如何使用type traits,STL源代码里面也有例子。看别人写的书,总觉得隔着一层纱,有点挠不到痒处的感觉。SGI STL的代码写得非常漂亮,一个C++程序员如果不看看这本书,实在是可惜。

梦魇:至于STL,除了《STL源码解析》之外,我举贤不避亲,强烈侯先生与我合译的那本《The C++ Standard Library》。这本书质量之高是无需怀疑的。我现在手边常备此书,随时查阅,对我帮助很大。

透明:C++和Ja相比,的优势就是它没有一个专门的公司来管它,的弱点也是它没有一个专门的公司来管它。Ja程序员在学会简单的语法之后,立刻进入SUN提供的framework,一边用这个现成的framework做实际开发,一边在开发过程中继续学习Ja一些幽深的特性。而这个时候,C++程序员恐怕还在问“VC和BCB哪个好”呢。这无疑是浪费时间。

梦魇:刚才你说Ja和C++的优劣,这个话题已经成了我们这个年代消失的声波了。我也不想再谈这个。不过有一点我得说清楚:现在我们很多用C++的人吃了不少苦头,探过脖子去看看Ja,觉得它真是太可爱了,这种印象是不准确的。另外,Ja也不简单,而且会越来越庞大复杂。在很多场合,Ja还不具有竞争力。至于将来如何,我看有些Ja爱好者也过分乐观了,似乎计算机科学界几十年解决不了的问题都可以借着Ja的东风解决掉,恐怕没那么容易。

透明:那当然。我再次强调:No Silver Bullet。读书很重要,但古人说“行万里路,读万卷书”,还是把“行路”放在“读书”前面。尤其对于技术书籍,如果它不能帮我解决问题、不能给我带来非常实际的利益,那么我是不会去读它的。恶魔说得对,我们这个很快餐,我们这个行业尤其很快餐,我们也只能努力适应它。

大学福音经典编程题适用于专升本

C语言100道适用专升本超有用

1.十进制数转任意进制数

2.数字三角形

3,编程求某年第 n 天的日期。

4.求周岁

5.编程求出使该算式成立时的这两个数

6.功能:(较难不用看) 编程求任意给两个日期(年 月日)相的天数。

7.把一个数的二进制奇数位和偶数位交换

8.题目要求找出数组中的两个单身狗

9,数字字符串转换为整数

10.升序的数组插入一个数,还保持升序

11.输入年月判断该月多少天

12 .遍历法求名次

13.谁是凶手

14.输入一个整数数组,实现一个函数,来调整数组中的奇数和偶数的位置,奇数在前偶数在后

15.1元一瓶汽水,两个空瓶可以换一瓶,问20元可以喝多少瓶

16.打印一个菱形,输如n的打印2n -1行的菱形

17.输入一个整数找出紧跟在他后面的素数

18.计数求和,Sn=2+22+222+2222+22222

19.输入两个数求最小公倍数和公因数,代码中有详解

20.一个数 +100之后是完全平方数,+168还是一个完全平方数

21.数字金字塔

22.字符串左旋

23.[稍难不用看] 要求:写一个函数判断一个字符串是否是另一个字符串旋转后得到的

24.给数组删除重复的元素

25.C语言编程题求1! + 2! + 3! + 4!....+N

26.C语言编程题求斐波那契数(循环法与递归法

27.C语言编程输入n,k求n的k次幂(递归与非递归)

28.(递归)输入一个数,把他的每一位相加在输出出来;

29,实现函数把字符数组的元素逆序 如“abc“,逆序成“cba“

30.递归拆分整数

31.设计以函数打印乘法口诀表

32构造一函数判断是否为素数100-200之间(只能被自己和1整除的数)

33.打印二进制数的奇数位和偶数位;分别打印二进制序列

34.计算M和N二进制中不同的位数,例如 1和7 有两位不同;

35输出1900到2000之间的所有闺年

36,猴子吃桃问题

37.选择排序法 升序排列

38.冒泡排序法

39.求33矩阵对角元素的和

40.把整数数组中的元素值逆序存放

41.杨辉三角形

42.折半查找---必须建立在有序的数组中

43,计算3行80个字符 的类型个数

44.原文与密码

45模拟strcat字符串连接函数

46.模拟strlen(3种方法)

47模拟strcmp

48.模拟字符串拷贝函数strcpy

49.strncpy的模拟

50.strncat模拟实现

51模拟strncmp

52.(较难些可以不看)模拟寻找子串的函数strstr

53.内存拷贝函数

54.判断一个数是不是素数:

53.33矩阵的转置

56任何比2大的偶数,总能表示两个素数

57.输入四位数字输出四个字符

58.把a数组的内容拷贝到b数组每拷贝三个放1个

59.输入一串字符串把其中最长的字母拷贝放到另一个数组

60.16进制转换位10进制

61.输入10个整数,的和一个位置上的交换最小的和最前面的那个交换

62.报数问题n个人从1报数到3,每次报数到3的那个元素被清空

63.输入多个字符串,排序后输出

64.(难可不看)输入一个字符串,将连续的数字字符串放到另一个二维数组中

65.结构体指针问题

66.三天打鱼两天晒网,第 N 天是打鱼还是晒网?

67.输入多个字符串,然后输出最短的字符串

68.3 个数,有两个数一样, 找另一个数

69.有 1000 人捐款, 捐到 10 万就停止捐款。 统计捐款人数和总额

70.指定位置字符串逆序

71.水仙花数

72.求素数因子

73.判断一个数是不是完全平方数?

74.蠕虫问题

75.结构体排序学生情况

76.求一元二次方程的根, ax 方+bx + c=0,ab,c 自己输入

77.累加100--999之间个位数为7的素数女78斐波那契兔子

78迭代求平方根

79.累加二维数组边缘元素的和

80.逗号表达式方面小题

81.白马百担问题

82.八进制转10进制

83.func(func(x++,y++),func(--x,--y));函数调用问题

84.水手分桃子

85挖素数

86.两个有序递增 的数组存到另一个数组还是有序的

87.把字符串中的空格去掉女88.将b字符串的内容插入到a字符串,a字符串保持升席

89.用递归的方法把字符串逆序

90分解质因数

.10进制转16进制

92.10进制转8进制

93.计算并输出n以内10个素数的和

94.完数

95打印X型图案

96.打印空心正方形

97.判断一个数组是否有序

98.整形数组删除指定的数字

99.给字符数组每个元素中间添加一个空格

100.旋转字符

101.求sinx近似值

C语言经典题目

最短时间是这样的

以本例子说

最快2人过 时间2

最快人回 时间1

最慢2人过 时间10

最快人回 时间2

最快2人过 时间2

一共17

算法就是这样过河以最快2人和最慢2人交替进行,回来时候都是对岸最快的人回来。

ps:这个是哪里的ACM?

这样写出代码不难吧。

就是先将时间排序,然后按上面算法计算。

#include

#include

using namespace std;

int a[1001];

int main()

{int t,i,n,fast1,fast2,slow1,slow2,slow3,sum,l,r;

cin>>t;

while(t--)

{sum=0;

cin>>n;

for(i=1;i<=n;i++)

cin>>a[i];

sort(a+1,a+n+1);

fast1=a[1];fast2=a[2];slow1=a[n-1];slow2=a[n];slow3=0;

l=1;r=n;

while(n!=0)

{if(n==1) {sum+=slow2;break;}

if(n==2) {sum+=slow2;break;}

if(n==3) {sum+=(slow2+slow1+fast1);break;}

if(2fast2>=fast1+slow1) {sum+=(slow1+slow2+2fast1);r-=2;slow2=a[r];slow1=a[r-1];n-=2;}

else {sum+=2fast2+fast1+slow2;r-=2;slow2=a[r];slow1=a[r-1];n-=2;}

}cout<

}return 0;

}

有些不懂...我也是初学者..进来看看

14

1 5 2 10

那么最短时间不应该是

5+1+2+1+10=19 么??

我错了?!``

C语言问题两个

判断101-200之间有多少个素数,并输出所有素数。

1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,

则表明此数不是素数,反之是素数。

2.程序源代码:

#include "math.h"

main()

{int m,i,k,h=0,leap=1;

printf("n");

for(m=101;m<=200;m++)

{ k=sqrt(m+1);

for(i=2;i<=k;i++)

if(m%i==0)

{leap=0;break;}

if(leap) {printf("%-4d",m);h++;

if(h%10==0)

printf("n");

}leap=1;

}printf("nThe total is %d",h);

}范围应该会换吧~~

打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数

本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。

1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。

2.程序源代码:

main()

{int i,j,k,n;

printf("'water flower'number is:");

for(n=100;n<1000;n++)

{i=n/100;/分解出百位/

j=n/10%10;/分解出十位/

k=n%10;/分解出个位/

if(i100+j10+k==iii+jjj+kkk)

{printf("%-5d",n);

}}

printf("n");

}

C语言经典100例问题,取一个整数a从右端开始的4~7位,求助,高分!

思路是完全正确的,但不知你的第4~7位是从0开始算还是从1开始算呢

如果一位算是右端第1位,那么b = a>>3.

其他都没问题

%o是八进制输入啊

你用%d 或%x试试,更明显观察测试结果。

版权声明:本文内容由互联网用户自发贡献。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 836084111@qq.com,本站将立刻删除。