请问还有cc语言程序设计pdf下载吗

请问C语言和C++区别大吗?_百度知道
请问C语言和C++区别大吗?
请问C语言和C++区别大吗?
我有更好的答案
C与C++的区别:
C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是
如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程
(事务)控制)。
对于C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应
的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控
制。   所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础,好的设计如果没有好的算法,一样不行。而且,“C加上好的设计”也能写出非常好的东西。对语言本身而言,C是C++的子集,那么是什么样的一个子集?从上文可以看出, C实现了C++中过程化控制及其它相关功能,而在C++中的C(我称它为“C+”),相对于原来的C还有所加强,引入了重载、内联函数、异常处理等等玩艺儿,C++更是拓展了面向对象设计的内容,如类、继承、虚函数、模板和包容器类等等。  C++在历史上曾经是C的扩展,不过现在两个都各自有发展,所以现在的C++与现在的C没有谁是谁的扩展的关系。
现在有人说C和C++是大熊猫和小熊猫的关系,也就是说只是名字相近——这多少有欠公允。不过C和C++的确是有巨大区别的,C语言简单有效,但处理大问题就很麻烦像把左轮手枪;而C++则简直是一辆坦克,功能齐备,但更肥大——无非都是兵器而已。至于说学习上C是C++的基础,倒是一大误区,枪械和火炮长得可能有点像,甚至也有点渊源,但终究全不是一回事。
先学C,后学C++有好处也有坏处,应该说至今仍有争论。 我的看法是,如果是做应用软件一类的编程,就不应该先学C,而且应该在初学时少接触C的旧式编程风格,而是把大部分精力放在C++的标准库(包括基于STL的编程,这方面国内一般的教材最欠缺),以及基于对象和面向对象的编程上。这是因为C++的这些应用从编程方式到代码风格都与C语言大相径庭,初学养成C式的编程习惯就很改掉,反而限制对类和泛型编程的理解。
如果是想接触比较底层的东西,以后做软件库开发、系统编程之类,那么学C语言,尤其是一些像宏、指针、内存管理等知识就很有好处(这些东西在前一种应用中却都要尽量避免)。但先学C的好处并不明显,因为直接学C++同样可以学到这些东西,只要改变一点学习侧重就可以了。
上面是从应用方向角度说的。至于学习的困难程度,直接学C++并不难,而且在一些方面更简单一些;只不过C++的内容比C多罢了。C++的创始人Stroustrup就大力提倡不要学C,并列举了先学C的种种坏处。因此我的意见也是不学C,直接学C++。
现在国内讲C++的书一般是先讲与C相似的一块,后讲C++独有的内容,没有融合在一起,看似C成了“基础”。其实这种讲法主要是由于国内编教材的教师多是学C语言(甚至机器码、汇编)出身的,可能到很晚才接触C++,因而有思维定势。其实看国外许多教材,一入门就强调类的概念,入门不多久就大量用到STL,过程式的语法与这些一块讲,同样也很直观(对象的概念实际上比函数的概念直观得多),可以学得通。
C与C++的区别 C是一个结构化语言,如谭老爷子所说:它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制),而对于C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。 所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础,好的设计如果没有好的算法,一样不行。而且,“C加上好的设计”也能写出非常好的东西。 对语言本身而言,C是C++的子集,那么是什么样的一个子集?从上文可以看出, C实现了C++中过程化控制及其它相关功能,而在C++中的C(我称它为“C+”),相对于原来的C还有所加强,引入了重载、内联函数、异常处理等等玩艺儿,C++更是拓展了面向对象设计的内容,如类、继承、虚函数、模板和包容器类等等。 再提高一点,在C++中,数据封装、类型这些东东已不是什么新鲜事了,需要考虑的是诸如:对象粒度的选择、对象接口的设计和继承、组合与继承的使用等等问题。 所以相对于C,C++包含了更丰富的“设计”的概念,但C是C++的一个自洽子集,也具有强大的功能,同样值得学习。 几点学习建议: 1.基本概念很重要。无论学C,还是学C++,基本概念都是第一位的,也是比较困难的,但只有把握了基本概念才能把握整体脉络,才能居高临下。 2.C是C++的子集,它的基本概念和设计方法相对比较容易理解,初学者可从它入手。 3.如果要学好C++,建议初学者最好别在如VC,BCB平台下写程序,那种自动化的代码生成,花花绿绿的界面,会让你手足无措。最好先找一片空地(unix,dos),从头做起,写几个大点的程序,数个回合,再到VC,BCB下看看,你会轻松得很。在我看来,学好C/C++是成为VC,BCB高手的必由之路。 4.不要妄想速成,必须得一个byte,一个bit的去抠,尽量搞清楚每一个问题。 5.几本好书: 机械工业出版社的那套“计算机科学丛书”从C到C++,到面向对象设计,一应俱全,都TMD是经典中的经典,而且价格公道,童叟无欺。 国内也有几本好书,谭老爷子的书好倒是好,就是程序错误太多。强烈推荐清华周之英的《现代软件工程》(上、中、下),它是我所见到的国内少有的一本好书,精华的精华,要点的要点,细细品来,至少也属降龙十八掌等级的东东。 如果还是有人想学习C/C++的话, 有一些小问题我还是乐意解答的. 但是我认为学习C/C++是不重要的, 重要的是如何锻炼你的思路. 不要找一些连自己都搞不清的问题去做. 我认为虽然 &潭浩强& 同志有骗钱的嫌疑( 我手头就有一本几乎一模一样的英文书 ), 但是, 是他把这本入门手册引入中国, 使无数程序员了解了C语言, 我想他的功劳也是不可磨灭的. 在& C语言程序设计 &这本书中所有的例子都可以用做锻炼思路的基石, 他对大家的编程是很有帮助的. 我认为是值得一买的. 去思考课后的例子对你的编程很有帮助. 不要小看一个一个简单的例子, 他们是你通往成功的道路. 当你基本能够掌握了上一本书中例子后, 你就要自己找一些例子程序去看. 开始可能是看不懂, 但是只要努力就没有什么问题. 当你看过几个较大的例子之后, 你会茅塞顿开, ( 大量阅读例子程序是学习C/C++的捷径 ). 你会发现, 你的水平有了显著的提高. 你看的例子越多, 你对 Windows/DOS 了解的越多. 最好能够再看一些关于系统知识的书籍. 他会对你的编程很有帮助的. 这是我学习C/C++的一点心得, 希望对没有被我吓到而要继续学习C/C++的朋友们有一些帮助. 免得有些同志说我破坏中国软件人才的发展. 在最后我祝愿所有坚持学习C/C++的朋友们成功! 同时感谢阅读过我文章的同志们. 想学好C++,非学C不可!!! 今天我这么肯定的在这里讲这番话,是不想初学者陷入到语言越新越好的误区,本来这个题目就不是很严谨,但是我有几句话必须讲讲,为C平反!! C++与C有什么不同呢?我们现在一步步地来分析一下 一、类,类我并不说它有什么不好,但是对于初学者,它是一个累赘。类的封装使得初学者对程序产生厌倦,感到不适和麻烦。 二、引用,引用是C++中最臭屁的东西了,最好尽量不要用它,我就是从来不用引用,除非万不得已。引用对于初学者就更容易产生混淆,不知道哪个是引用,哪个是变量。 三、函数的重载,初学者学函数的重载好像没什么坏处,但是,这会使初学者潜意识里对C语言的变量类型的重要性产生淡化,要记住C语言是对变量类型最敏感了的,变量的类型在C语言里的重要性是不言而喻的。 四、流操作符,和上面同样的道理,使得对变量类型的重要性产生淡化,况且,cin这个东东有点儿不怎么方便,有时会产生使初学者莫名其妙的结果。 五、操作符重载,典型的高级应用,初学者可能根本用不着,这个东东会让他们觉得C++很难,门槛高,看不懂…………。 六、继承,以及虚函数,典型的模仿四不象,这种狗屁东西除了看起来深奥,实用价值很低………………。我怎么可能把某个类的类型的指针去指向另一个不同类型但是是继承关系的类,来实现什么动态联编,晕………… ………………还有些东东我就不发表评论了,如:new,delete操作符等………… 七、误区:以问答形式: 问:C++是面向对象化的而C是面向过程化的? 答:第二对,第一问错,C++并非完全面向对象化,真正的面向对象化的语言恐怕只有Java才算得上。 问:C++能实现C所不能的功能吗? 答:至少我还没有发现…… 问:学了C再学C++有障碍吗?比如程序设计思想…… 答:至少我还没有看见谁有此症状。 问:学了C再学C++又要重头开始吗? 答:不,C++下可以实现C语言的一切功能。 问:我学完了C一定还要学C++才能编程吗? 答:完全没必要。 问:C++比C好在哪里? 答:更加符合软件工程学 问:学完了C再学C++是不是很容易? 答:那要看你是不是真正的学完了C语言,我从C到C++就一个星期的睡觉前的时间看两眼书,然后就大彻大悟。再跑到这里来发表些狗屁文章了。 最近在网上看到了很多人的学习方法,本人非常不赞同。很多人都想一口吃个胖子,要学就想学最新的,好象没有人愿意再去学那些老的,旧的编程语言了。但你们能学的懂吗?不学TC2。0等那些较早的优秀编程语言,你们能理解的了VC6。0?如果你真的能,我宁愿做你的徒弟!真是奇怪,那些最基本的语言都不懂的人,怎么可能去理解那些最新的编程语言?我学编程有三年了吧。成绩也不算多,只有一个计算机四级证和一个高程证,但我觉得我在学VC的时候还有很多的不明白的地方。没有人来教我,只能靠我自己,包括所有的成绩在内,我都是靠自己,我从不报班。学VC的半年多来,我想我已经基本入门,但依然有很多的困惑。刚开始学VC,就面临一个项目,我真的犹如笨蛋一般,四处吓摸,毫无头绪,最后勉勉强强才算做个差不多。学好VC再去学其他的高级WINDOWS编程,我想那真是轻而易举,毕竟WINDOWS的内部的很多东西都能直接被VC调用,你首先就可以对WINDOWS有个全新的认识,再去学其他的语言岂能不简单? 我的感觉是,面向过程和面向对象,其实都很重要的,在VC里也依然需要面向过程,很多东西都是一环扣一环,没有面向过程的思想,怎么可能去编程呢?建议多去看看有关WINDOWS编程的书,但多数都是比较老的书呦!我依然记得当年整天进行TC编程的辛苦,但我依然很怀念当年的劳动付出,毕竟我获得了我想获得的一切——编程思想。我觉得一个好的编程思想,绝对比你去学一门计算机语言好重要的多。要形成自己的编程风格。一个好的编程思想在你的头脑中一旦形成,学习什么语言都会很轻而易举,因为此时的你不在是简简单单的学习,而是来验证!
本回答被提问者采纳
为您推荐:
其他类似问题
c语言的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。C语言程序设计50例(经典收藏)_C 语言_脚本之家
我的图书馆
C语言程序设计50例(经典收藏)_C 语言_脚本之家
【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去      掉不满足条件的排列。 2.程序源代码:#include 'stdio.h'#include 'conio.h'main(){& int i,j,k;& printf('\n');& 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\n',i,j,k);&&&&& }& getch();}==============================================================【程序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.程序源代码:#include 'stdio.h'#include 'conio.h'main(){&& int bonus1,bonus2,bonus4,bonus6,bonus10,& scanf('%ld',&i); & bonus1=. 1;& bonus2=bonus1+.75;& bonus4=bonus2+.5;& bonus6=bonus4+.3;& bonus10=bonus6+.15;& if(i<=100000)&&& bonus=i*0.1;&&& else if(i<=200000)&&&&& bonus=bonus1+(i-.075;&&&&&&& else if(i<=400000)&&&&&&&&& bonus=bonus2+(i-.05;&&&&&&&&&&& else if(i<=600000)&&&&&&&&&&&&& bonus=bonus4+(i-.03;&&&&&&&&&&&&&&& else if(i<=1000000)&&&&&&&&&&&&&&&&& bonus=bonus6+(i-.015;&&&&&&&&&&&&&&&&&&& else&&&&&&&&&&&&&&&&&&&&& bonus=bonus10+(i-.01;& printf('bonus=%d',bonus);& getch(); }==============================================================【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后      的结果满足如下条件,即是结果。请看具体分析:2.程序源代码:#include 'math.h'#include 'stdio.h'#include 'conio.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(x*x==i+100&&y*y==i+268) /*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/&&& printf('\n%ld\n',i);& }& getch();}==============================================================【程序4】题目:输入某年某月某日,判断这一天是这一年的第几天?1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊      情况,闰年且输入月份大于3时需考虑多加一天。2.程序源代码:#include 'stdio.h'#include 'conio.h'main(){& int day,month,year,sum,& printf('\nplease input year,month,day\n');& scanf('%d,%d,%d',&year,&month,&day);& switch(month) /*先计算某月以前月份的总天数*/& {&&& case 1:sum=0;&&& case 2:sum=31;&&& case 3:sum=59;&&& case 4:sum=90;&&& case 5:sum=120;&&& case 6:sum=151;&&& case 7:sum=181;&&& case 8:sum=212;&&& case 9:sum=243;&&& case 10:sum=273;&&& case 11:sum=304;&&& case 12:sum=334;&&& default:printf('data error');& }& sum=sum+ /*再加上某天的天数*/& 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);& getch(); }==============================================================【程序5】题目:输入三个整数x,y,z,请把这三个数由小到大输出。1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,      然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。2.程序源代码:#include 'stdio.h'#include 'conio.h'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('small to big: %d %d %d\n',x,y,z);& getch(); }==============================================================【程序6】题目:用*号输出字母C的图案。1.程序分析:可先用'*'号在纸上写出字母C,再分行输出。2.程序源代码:#include 'stdio.h'#include 'conio.h'main(){& printf('Hello C-world!\n');& printf(' ****\n');& printf(' *\n');& printf(' * \n');& printf(' ****\n');& getch(); }==============================================================【程序7】题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful!1.程序分析:字符共有256个。不同字符,图形不一样。      2.程序源代码:#include 'stdio.h'#include 'conio.h'main(){& char a=176,b=219;& printf('%c%c%c%c%c\n',b,a,a,a,b);& printf('%c%c%c%c%c\n',a,b,a,b,a);& printf('%c%c%c%c%c\n',a,a,b,a,a);& printf('%c%c%c%c%c\n',a,b,a,b,a);& printf('%c%c%c%c%c\n',b,a,a,a,b);& getch(); }==============================================================【程序8】题目:输出9*9口诀。1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。2.程序源代码:#include 'stdio.h'#include 'conio.h'main(){& int i,j,& printf('\n');& for (i=1;i<10;i++)& {&&& for(j=1;j<10;j++)&&& {&&&&& result=i*j;&&&&& printf('%d*%d=%-3d',i,j,result); /*-3d表示左对齐,占3位*/&&& }&&& printf('\n'); /*每一行后换行*/& }& getch();}==============================================================【程序9】题目:要求输出国际象棋棋盘。1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。2.程序源代码:#include 'stdio.h'#include 'conio.h'main(){& int i,j;& for(i=0;i<8;i++)& {&&& for(j=0;j<8;j++)&&&&& if((i+j)%2==0)&&&&&&& printf('%c%c',219,219);&&&&& else&&&&&&& printf('& ');&&& printf('\n');& }& getch(); }============================================================== 【程序10】题目:打印楼梯,同时在楼梯上方打印两个笑脸。 1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。2.程序源代码:#include 'stdio.h'#include 'conio.h'main(){& int i,j;& printf('\1\1\n'); /*输出两个笑脸*/& for(i=1;i<11;i++)& {&&& for(j=1;j<=i;j++)&&&&& printf('%c%c',219,219);&&& printf('\n');& }& getch(); }【程序11】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月   后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....2.程序源代码:#include 'stdio.h'#include 'conio.h'main(){& long f1,f2;&& f1=f2=1;& for(i=1;i<=20;i++)& {&&& printf('%12ld %12ld',f1,f2);&&& if(i%2==0) printf('\n'); /*控制输出,每行四个*/&&& f1=f1+f2; /*前两个月加起来赋值给第三个月*/&&& f2=f1+f2; /*前两个月加起来赋值给第三个月*/& }& getch();}==============================================================【程序12】题目:判断101-200之间有多少个素数,并输出所有素数。1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,      则表明此数不是素数,反之是素数。       2.程序源代码:#include 'stdio.h'#include 'conio.h'#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;&&&&&&&& }&&& if(leap)&&& {&&&&& printf('%-4d',m);&&&&& h++;&&&&& if(h%10==0)&&&&&&& printf('\n');&&& }&&& leap=1;& }& printf('\nThe total is %d',h);& getch();}==============================================================【程序13】题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数   本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。2.程序源代码:#include 'stdio.h'#include 'conio.h'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(i*100+j*10+k==i*i*i+j*j*j+k*k*k)&&&&& printf('%-5d',n);& }& getch();}==============================================================【程序14】题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。(2)如果nk,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n, 重复执行第一步。(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。2.程序源代码:/* zheng int is divided yinshu*/#include 'stdio.h'#include 'conio.h'main(){& int n,i;& printf('\nplease input a number:\n');& scanf('%d',&n);& printf('%d=',n);& for(i=2;i<=n;i++)&&& while(n!=i)&&& {&&&&& if(n%i==0)&&&&& {&&&&&&& printf('%d*',i);&&&&&&& n=n/i;&&&&& }&&&&& else&&&&&&&&&& }& printf('%d',n);& getch();}==============================================================【程序15】题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,   60分以下的用C表示。1.程序分析:(a>b)?a:b这是条件运算符的基本例子。2.程序源代码:#include 'stdio.h'#include 'conio.h'main(){&&& printf('please input a score\n');& scanf('%d',&score);& grade=score>=90?'A':(score>=60?'B':'C');& printf('%d belongs to %c',score,grade);& getch();}==============================================================【程序16】题目:输入两个正整数m和n,求其最大公约数和最小公倍数。1.程序分析:利用辗除法。2.程序源代码:#include 'stdio.h'#include 'conio.h'main(){& int a,b,num1,num2,& printf('please input two numbers:\n');& scanf('%d,%d',&num1,&num2);& if(num1<num2)/*交换两个数,使大数放在num1上*/& {&&& temp=num1;&&& num1=num2;&&& num2=& }& a=num1;b=num2;& while(b!=0)/*利用辗除法,直到b为0为止*/& {&&& temp=a%b;&&& a=b;&&& b=& }& printf('gongyueshu:%d\n',a);& printf('gongbeishu:%d\n',num1*num2/a);& getch();}==============================================================【程序17】题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。1.程序分析:利用while语句,条件为输入的字符不为'\n'.      2.程序源代码:#include 'stdio.h'#include 'conio.h'main(){&& int letters=0,space=0,digit=0,others=0;& printf('please input some characters\n');& while((c=getchar())!='\n')& {&&& if(c>='a'&&c='A'&&c<='Z')&&&&& letters++;&&&&& else if(c==' ')&&&&&&& space++;&&&&&&& else if(c>='0'&&c<='9')&&&&&&&&& digit++;&&&&&&& else&&&&&&&&& others++;& }& printf('all in all:char=%d space=%d digit=%d others=%d\n',letters,& space,digit,others);& getch();}==============================================================【程序18】题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+(此时   共有5个数相加),几个数相加有键盘控制。1.程序分析:关键是计算出每一项的值。2.程序源代码:#include 'stdio.h'#include 'conio.h'main(){& int a,n,count=1;& long int sn=0,tn=0;& printf('please input a and n\n');& scanf('%d,%d',&a,&n);& printf('a=%d,n=%d\n',a,n);& while(count<=n)& {&&& tn=tn+a;&&& sn=sn+&&& a=a*10;&&& ++& }& printf('a+aa+...=%ld\n',sn);& getch();}==============================================================【程序19】题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程   找出1000以内的所有完数。1. 程序分析:请参照程序<--上页程序14.2.程序源代码:#include 'stdio.h'#include 'conio.h'main(){& static int k[10];& int i,j,n,s;& for(j=2;j<1000;j++)& {&&& n=-1;&&& s=j;&&& for(i=1;i<j;i++)&&& {&&&&& if((j%i)==0)&&&&& {&&&&&&& n++;&&&&&&& s=s-i;&&&&&&& k[n]=i;&&&&& }&&& }&&& if(s==0)&&& {&&&&& printf('%d is a wanshu',j);&&&&& for(i=0;i<n;i++)&&&&& printf('%d,',k);&&&&& printf('%d\n',k[n]);&&& }& }& getch();}==============================================================【程序20】题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在   第10次落地时,共经过多少米?第10次反弹多高?1.程序分析:见下面注释2.程序源代码:#include 'stdio.h'#include 'stdio.h'main(){& float sn=100.0,hn=sn/2;&& for(n=2;n<=10;n++)& {&&& sn=sn+2*/*第n次落地时共经过的米数*/&&& hn=hn/2; /*第n次反跳高度*/& }& printf('the total of road is %f\n',sn);& printf('the tenth is %f meter\n',hn);& getch();}【程序21】题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个   第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下   的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。1.程序分析:采取逆向思维的方法,从后往前推断。2.程序源代码:#include 'stdio.h'#include 'conio.h'main(){& int day,x1,x2;& day=9;& x2=1;& while(day>0)& {&&& x1=(x2+1)*2;/*第一天的桃子数是第2天桃子数加1后的2倍*/&&& x2=x1;&&& day--;& }& printf('the total is %d\n',x1);& getch();}==============================================================【程序22】题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定   比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出   三队赛手的名单。1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,      则表明此数不是素数,反之是素数。       2.程序源代码:#include 'stdio.h'#include 'conio.h'main(){& char i,j,k;/*i是a的对手,j是b的对手,k是c的对手*/& for(i='x';i<='z';i++)&&& for(j='x';j<='z';j++)&&& {&&&&& if(i!=j)&&&&& for(k='x';k<='z';k++)&&&&& {&&&&&&& if(i!=k&&j!=k)&&&&&&& {&&&&&&&&& if(i!='x'&&k!='x'&&k!='z')&&&&&&&&&&& printf('order is a--%c\tb--%c\tc--%c\n',i,j,k);&&&&&&&& }&&&&& }&&& }& getch();}==============================================================【程序23】题目:打印出如下图案(菱形)&& *& ********************& ***&& *1.程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重      for循环,第一层控制行,第二层控制列。2.程序源代码:#include 'stdio.h'#include 'conio.h'main(){& int i,j,k;& for(i=0;i<=3;i++)& {&&& for(j=0;j<=2-i;j++)&&&&& printf(' ');&&& for(k=0;k<=2*i;k++)&&&&& printf('*');&&& printf('\n');& }& for(i=0;i<=2;i++)& {&&& for(j=0;j<=i;j++)&&&&& printf(' ');&&& for(k=0;k<=4-2*i;k++)&&&&& printf('*');&&& printf('\n');& }& getch();}==============================================================【程序24】题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。1.程序分析:请抓住分子与分母的变化规律。2.程序源代码:#include 'stdio.h'#include 'conio.h'main(){& int n,t,number=20;& float a=2,b=1,s=0;& for(n=1;n<=n++)& {&&& s=s+a/b;&&& t=a;a=a+b;b=t;/*这部分是程序的关键,请读者猜猜t的作用*/& }& printf('sum is %9.6f\n',s);& getch();}==============================================================【程序25】题目:求1+2!+3!+...+20!的和1.程序分析:此程序只是把累加变成了累乘。2.程序源代码:#include 'stdio.h'#include 'conio.h'main(){& float n,s=0,t=1;& for(n=1;n<=20;n++)& {&&& t*=n;&&& s+=t;& }& printf('1+2!+3!...+20!=%e\n',s);& getch();}==============================================================【程序26】题目:利用递归方法求5!。1.程序分析:递归公式:fn=fn_1*4!2.程序源代码:#include 'stdio.h'#include 'conio.h'main(){&& int fact();& for(i=0;i<5;i++)& printf('\40:%d!=%d\n',i,fact(i));& getch();}int fact(j){&& if(j==0)&&& sum=1;& else&&& sum=j*fact(j-1);&}==============================================================【程序27】题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。1.程序分析:2.程序源代码:#include 'stdio.h'#include 'conio.h'main(){& int i=5;& void palin(int n);& printf('\40:');& palin(i);& printf('\n');& getch();}void palin(n){&& if(n<=1)& {&&& next=getchar();&&& printf('\n\0:');&&& putchar(next);& }& else& {&&& next=getchar();&&& palin(n-1);&&& putchar(next);& }}==============================================================【程序28】题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第   3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后   问第一个人,他说是10岁。请问第五个人多大?1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道      第四人的岁数,依次类推,推到第一人(10岁),再往回推。2.程序源代码:#include 'stdio.h'#include 'conio.h'age(n){&& if(n==1) c=10;& else c=age(n-1)+2;& return(c);}main(){& printf('%d',age(5));& getch();}==============================================================【程序29】题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。1. 程序分析:学会分解出每一位数,如下解释:(这里是一种简单的算法,师专数002班赵鑫提供)2.程序源代码:#include 'stdio.h'#include 'conio.h'main( ){& long a,b,c,d,e,x;& scanf('%ld',&x);& a=x/10000;/*分解出万位*/& b=x%;/*分解出千位*/& c=x%;/*分解出百位*/& d=x%100/10;/*分解出十位*/& e=x%10;/*分解出个位*/& if (a!=0) printf('there are 5, %ld %ld %ld %ld %ld\n',e,d,c,b,a);& else if (b!=0) printf('there are 4, %ld %ld %ld %ld\n',e,d,c,b);&&& else if (c!=0) printf(' there are 3,%ld %ld %ld\n',e,d,c);&&&&& else if (d!=0) printf('there are 2, %ld %ld\n',e,d);&&&&&&& else if (e!=0) printf(' there are 1,%ld\n',e);& getch();}==============================================================【程序30】题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。   1.程序分析:同29例2.程序源代码:#include 'stdio.h'#include 'conio.h'main( ){& long ge,shi,qian,wan,x;& scanf('%ld',&x);& wan=x/10000;& qian=x%;& shi=x%100/10;& ge=x%10;& if(ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/&&& printf('this number is a huiwen\n');& else&&& printf('this number is not a huiwen\n');& getch();}【程序31】题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续   判断第二个字母。1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。2.程序源代码:#include 'stdio.h'#include 'conio.h'void main(){&& printf('please input the first letter of someday\n');& while((letter=getch())!='Y')/*当所按字母为Y时才结束*/& {&&& switch (letter)&&& {&&&&& case 'S':printf('please input second letter\n');&&&&& if((letter=getch())=='a')&&&&&&& printf('saturday\n');&&&&&&& else if ((letter=getch())=='u')&&&&&&&&& printf('sunday\n');&&&&&&&&& else printf('data error\n');&&&&&&&&&& case 'F':printf('friday\n');&&&&& case 'M':printf('monday\n');&&&&& case 'T':printf('please input second letter\n');&&&&& if((letter=getch())=='u')&&&&&&& printf('tuesday\n');&&&&&&& else if ((letter=getch())=='h')&&&&&&&&& printf('thursday\n');&&&&&&& else printf('data error\n');&&&&&&&&&& case 'W':printf('wednesday\n');&&&&& default: printf('data error\n');&&& }& }& getch();}==============================================================【程序32】题目:Press any key to change color, do you want to try it. Please hurry up!1.程序分析:            2.程序源代码:#include 'conio.h'#include 'stdio.h'void main(void){&& for (color = 0; color < 8; color++)& {&&& textbackground(color);/*设置文本的背景颜色*/&&& cprintf('This is color %d\r\n', color);&&& cprintf('Press any key to continue\r\n');&&& getch();/*输入字符看不见*/& }}==============================================================【程序33】题目:学习gotoxy()与clrscr()函数   1.程序分析:2.程序源代码:#include 'conio.h'#include 'stdio.h'void main(void){& clrscr();/*清屏函数*/& textbackground(2);& gotoxy(1, 5);/*定位函数*/& cprintf('Output at row 5 column 1\n');& textbackground(3);& gotoxy(20, 10);& cprintf('Output at row 10 column 20\n');& getch();}==============================================================【程序34】题目:练习函数调用1. 程序分析:2.程序源代码:#include 'stdio.h'#include 'conio.h'void hello_world(void){& printf('Hello, world!\n');}void three_hellos(void){&& for (counter = 1; counter <= 3; counter++)&&& hello_world();/*调用此函数*/}void main(void){& three_hellos();/*调用此函数*/& getch();}==============================================================【程序35】题目:文本颜色设置1.程序分析:2.程序源代码:#include 'stdio.h'#include 'conio.h'void main(void){&& for (color = 1; color < 16; color++)& {&&& textcolor(color);/*设置文本颜色*/&&& cprintf('This is color %d\r\n', color);& }& textcolor(128 + 15);& cprintf('This is blinking\r\n');& getch();}==============================================================【程序36】题目:求100之内的素数   1.程序分析:2.程序源代码:#include 'stdio.h'#include 'math.h'#define N 101main(){& int i,j,line,a[N];& for(i=2;i<N;i++) a=i;&&& for(i=2;i<sqrt(N);i++)&&&&& for(j=i+1;j<N;j++)&&&&& {&&&&&&& if(a!=0&&a[j]!=0)&&&&&&&&& if(a[j]%a==0)&&&&&&&&&&& a[j]=0;&&&&& }& printf('\n');& for(i=2,line=0;i<N;i++)& {&&& if(a!=0)&&& {&&&&& printf('%5d',a);&&&&& line++;&&& }&&& if(line==10)&&& {&&&&& printf('\n');&&&&& line=0;&&& }& }& getch();}==============================================================【程序37】题目:对10个数进行排序1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,      下次类推,即用第二个元素与后8个进行比较,并进行交换。       2.程序源代码:#include 'stdio.h'#include 'conio.h'#define N 10main(){& int i,j,min,tem,a[N];& /*input data*/& printf('please input ten num:\n');& for(i=0;i<N;i++)& {&&& printf('a[%d]=',i);&&& scanf('%d',&a);& }& printf('\n');& for(i=0;i<N;i++)&&& printf('%5d',a);& printf('\n');& /*sort ten num*/& for(i=0;i<N-1;i++)& {&&& min=i;&&& for(j=i+1;j<N;j++)&&&&& if(a[min]>a[j])&&&&&&& min=j;&&& tem=a;&&& a=a[min];&&& a[min]=& }& /*output data*/& printf('After sorted \n');& for(i=0;i<N;i++)& printf('%5d',a);& getch();}==============================================================【程序38】题目:求一个3*3矩阵对角线元素之和1.程序分析:利用双重for循环控制输入二维数组,再将a累加后输出。2.程序源代码:#include 'stdio.h'#include 'conio.h'/* 如果使用的是TC系列编译器则可能需要添加下句 */static void dummyfloat(float *x){ dummyfloat(&y);}main(){& float a[3][3],sum=0;& int i,j;& printf('please input rectangle element:\n');& for(i=0;i<3;i++)&&& for(j=0;j<3;j++)&&&&& scanf('%f',&a[j]);& for(i=0;i<3;i++)&&& sum=sum+a;& printf('duijiaoxian he is %6.2f',sum);& getch();}==============================================================【程序39】题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。1. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后     此元素之后的数,依次后移一个位置。2.程序源代码:#include 'stdio.h'#include 'conio.h'main(){& int a[11]={1,4,6,9,13,16,19,28,40,100};& int temp1,temp2,number,end,i,j;& printf('original array is:\n');& for(i=0;i<10;i++)&&& printf('%5d',a);& printf('\n');& printf('insert a new number:');& scanf('%d',&number);& end=a[9];& if(number>end)&&& a[10]=& else& {&&& for(i=0;i<10;i++)&&& {&&&&& if(a>number)&&&&& {&&&&&&& temp1=a;&&&&&&& a=&&&&&&& for(j=i+1;j<11;j++)&&&&&&& {&&&&&&&&& temp2=a[j];&&&&&&&&& a[j]=temp1;&&&&&&&&& temp1=temp2;&&&&&&& }&&&&&&&&&&&& }&&& }& }& for(i=0;i<11;i++)&&& printf('%6d',a);& getch();}==============================================================【程序40】题目:将一个数组逆序输出。1.程序分析:用第一个与最后一个交换。2.程序源代码:#include 'stdio.h'#include 'conio.h'#define N 5main(){& int a[N]={9,6,5,4,1},i,& printf('\n original array:\n');& for(i=0;i<N;i++)&&& printf('%4d',a);& for(i=0;i<N/2;i++)& {&&& temp=a;&&& a=a[N-i-1];&&& a[N-i-1]=& }& printf('\n sorted array:\n');& for(i=0;i<N;i++)&&& printf('%4d',a);& getch();}==============================================================【程序41】题目:学习static定义静态变量的用法   1.程序分析:2.程序源代码:#include 'stdio.h'#include 'conio.h'varfunc(){& int var=0;& static int static_var=0;& printf('\40:var equal %d \n',var);& printf('\40:static var equal %d \n',static_var);& printf('\n');& var++;& static_var++;}void main(){&& for(i=0;i<3;i++)&&& varfunc();& getch();}==============================================================【程序42】题目:学习使用auto定义变量的用法1.程序分析:      2.程序源代码:#include 'stdio.h'#include 'conio.h'main(){& int i,& num=2;& for(i=0;i<3;i++)& {&&& printf('\40: The num equal %d \n',num);&&& num++;&&& {&&&&& auto int num=1;&&&&& printf('\40: The internal block num equal %d \n',num);&&&&& num++;&&& }& }& getch();}==============================================================【程序43】题目:学习使用static的另一用法。   1.程序分析:2.程序源代码:#include 'stdio.h'#include 'conio.h'main(){& int i,& num=2;& for(i=0;i<3;i++)& {&&& printf('\40: The num equal %d \n',num);&&& num++;&&& {&&&&& static int num=1;&&&&& printf('\40:The internal block num equal %d\n',num);&&&&& num++;&&& }& }& getch();}==============================================================【程序44】题目:学习使用external的用法。1.程序分析:2.程序源代码:#include 'stdio.h'#include 'conio.h'int a,b,c;void add(){&& a=3;& c=a+b;}void main(){& a=b=4;& add();& printf('The value of c is equal to %d\n',c);& getch();}==============================================================【程序45】题目:学习使用register定义变量的方法。1.程序分析:2.程序源代码:#include 'stdio.h'#include 'conio.h'void main(){&& int tmp=0;& for(i=1;i<=100;i++)& tmp+=i;& printf('The sum is %d\n',tmp);& getch();}==============================================================【程序46】题目:宏#define命令练习(1)   1.程序分析:2.程序源代码:#include 'stdio.h'#include 'conio.h'#define TRUE 1#define FALSE 0#define SQ(x) (x)*(x)void main(){&& int again=1;& printf('\40: Program will stop if input value less than 50.\n');& while(again)& {&&& printf('\40:Please input number==>');&&& scanf('%d',&num);&&& printf('\40:The square for this number is %d \n',SQ(num));&&& if(num>=50)&&&&& again=TRUE;&&& else&&&&& again=FALSE;& }& getch();}==============================================================【程序47】题目:宏#define命令练习(2)1.程序分析:            2.程序源代码:#include 'stdio.h'#include 'conio.h'/*宏定义中允许包含两道衣裳命令的情形,此时必须在最右边加上'\'*/#define exchange(a,b) { \&&&&&&&&&&&&&&&&&&&&&&&\&&&&&&&&&&&&&&&&&&&&&&& t=a;\&&&&&&&&&&&&&&&&&&&&&&& a=b;\&&&&&&&&&&&&&&&&&&&&&&& b=t;\&&&&&&&&&&&&&&&&&&&&& }void main(void){& int x=10;& int y=20;& printf('x=%d; y=%d\n',x,y);& exchange(x,y);& printf('x=%d; y=%d\n',x,y);& getch();}==============================================================【程序48】题目:宏#define命令练习(3)   1.程序分析:2.程序源代码:#define LAG >#define SMA <#define EQ ==#include 'stdio.h'#include 'conio.h'void main(){& int i=10;& int j=20;& if(i LAG j)&&& printf('\40: %d larger than %d \n',i,j);&&& else if(i EQ j)&&&&& printf('\40: %d equal to %d \n',i,j);&&&&& else if(i SMA j)&&&&&&& printf('\40:%d smaller than %d \n',i,j);&&&&& else&&&&&&& printf('\40: No such value.\n');& getch();}==============================================================【程序49】题目:#if #ifdef和#ifndef的综合应用。1. 程序分析:2.程序源代码:#include 'stdio.h'#include 'conio.h'#define MAX#define MAXIMUM(x,y) (x>y)?x:y#define MINIMUM(x,y) (x>y)?y:xvoid main(){& int a=10,b=20;#ifdef MAX& printf('\40: The larger one is %d\n',MAXIMUM(a,b));#else& printf('\40: The lower one is %d\n',MINIMUM(a,b));#endif#ifndef MIN& printf('\40: The lower one is %d\n',MINIMUM(a,b));#else& printf('\40: The larger one is %d\n',MAXIMUM(a,b));#endif#undef MAX#ifdef MAX& printf('\40: The larger one is %d\n',MAXIMUM(a,b));#else& printf('\40: The lower one is %d\n',MINIMUM(a,b));#endif#define MIN#ifndef MIN& printf('\40: The lower one is %d\n',MINIMUM(a,b));#else& printf('\40: The larger one is %d\n',MAXIMUM(a,b));#endif& getch();}
[转]&[转]&[转]&
喜欢该文的人也喜欢

我要回帖

更多关于 c语言程序设计教程 的文章

 

随机推荐