学习C语言这几本指导书怎样?急 急 急急 急 急 急 高手请进。。

学习C语言这几本指导书怎样?急 急 急急 急 急 急 高手请进。。,第1张

先读谭浩强的《C语言程序设计》,这是公认的中文入门级教材。但是书中的代码风格不敢恭维。看完这本,推荐《21天学通C语言》,这本书比较好,个人感觉。看完这两本,你就可以进阶C++了。

C语言只要把基础打好就好,你要是想精通的话,最好是精通C++,这样比较有前途。但不要 *** 之过急。

以下一段话是我给另一位初学编程的朋友建议的学习轨迹,你可以参考以下:

学习编程语言贵精不贵多,而且要循序渐进、有张有驰。

初学语言时,基本上都是从C语言入手。

一本谭浩强老师的《C语言程序设计》足够。

不过在学习过程中请注意不要学习他老人家的编程风格!我不知道现在改版了没有,反正我当年学这本书的时候,上面的代码风格让我极其崩溃。

良好的C语言代码风格,可以参阅《21天学通C语言》等。

学C最多也就半年,感觉差不多了,做一个像样的小项目,检验一下自己即可。然后就应该步入C++中。C++是一门值得深入研究的语言,仔细学进去你会发现它嗷嗷强大。其中也有许多经典的设计思想。入门级书籍推荐《C++大学自学教程》讲的比较透彻,但很厚。进阶级推荐《C++语言深入研究》等,就比较深奥了。高手级推荐《C++大师的沉思》等国外名著,讲的很晕,呵呵。

Java是一定要学的,但如果不想在这方面发展,可以不学得那么累。Java是发展最迅猛的语言之一,其技术更新之快,远胜于我们学习的速度。学习Java的重点要放在学习她的思想上。学习面向对象思想,以及建筑在其上的各种框架和架构的思想。学精C++之后再学Java,语法部分10天足够,但思想部分就看你的悟性了。

追加建议:学过C++、Java之后,再回头重温C语言,研究一下用C语言如何实现面向对象的四大特性(抽象、封装、继承和多态)。这时你就会发现,哦,之前显得如此神秘的东西原来是这样的啊……

当以上三门语言你都经历了一遍之后,就可以选择自己所要进一步深造的方向了。那时候你已经心里有数。而且这时的你学习任何一门其他程序设计语言都是手到擒来易如反掌。这就是基础的作用。

1、求1+2+3+……….+100。(循环) 答案 #include<stdio.h> void main() { int i,sum=0 for(i=1i<=100i++) sum=sum+i printf("%d",sum) } 2、 求1*2*3*……….*10。(循环) 答案 void main() { int i=0,j=1 for (i=2i<=10i++) { j*=i } printf("%d",j) return 0 } 3、 输入三个数字,输出他们的最大值。(if) 答案 #include<stdio.h>void main() {int a,b,c,d scanf("%d,%d,%d",&a,&b,&c) d=max(a,b,c) printf("max=%d",d) getch()/*暂停看运行结果*/ } int max(int x,int y,int z) {int u if(x>=y&&x>=z) u=x else if(y>=x&&y>=z) u=y else u=z return(u) 4.用起泡法对十个数据排序(数组实现) 答案 #include<stdio.h>main ( ) { int i,j,tstatic int a[10]={5,7,4,2,3,6,1,0,9,8}for(j=0j<9j++) { for(i=0i<9-ji++) { if(a[i]>a[i+1]) { t=a[i]a[i]=a[i+1]a[i+1]=t } } } for(i=0i<10i++) printf("%2d",a[i])} 5、输入十个数字,逆序输出。(数组实现) 答案 #include<stdio.h>main() {int a[10],i=0for(i=0i<=9i++) scanf("%f",&a[i])printf("\n")for(i=9i>=0i--) printf("%f",a[i])} 6输入两个数,交换他们的值并输出。(元素交换) 答案 #include<stdio.h>int main () { int m,n,tempscanf("%d%d",&m,&n)if (m<n) { temp=mm=nn=temp} printf("%d",m)return 0} 7.输出9*9乘法表。(双层循环) 答案 #include <stdio.h> void main() { int i=1for(ii<=9i++) { int j=1for(jj<=ij++) { printf("%d*%d=%d ", i, j, i*j)} printf("\n")} } 8.输入一行字符,将所有的小写字母转换成大写字母,大写字母转换成小写字母,其余字符不变。输出转变后的这行字符。 答案 #include "stdio.h" void main() { char a[n]int iscanf("%s",a)printf("大写为:")for(i=0i<=ni++) { if(a[i]<='z'&&a[i]>='a') a[i]=a[i]-32printf("%c",a[i])} printf("\n小写为:")for(i=0i<=3i++) { a[i]=a[i]+32printf("%c",a[i])} } 9、 编写一个简单计算器程序,要求能够完成两个数的+,-,*,/四种运算。输出运算式及运算结果。(switch) 6.2 #include"stdio.h" main() {char cint i=0,j=0,k=0,l=0while((c=getchar())!=’\n’) {if(c>=65&&c<=90||c>=97&&c<=122) i++else if(c>=48&&c<=57) j++else if(c==32) k++else l++} printf("i=%d,j=%d,k=%d,l=%d\n",i,j,k,l)} 6.6 #include"math.h" main() {int x=100,a,b,cwhile(x>=100&&x<1000) {a=0.01*xb=10*(0.01*x-a)c=x-100*a-10*bif(x==(pow(a,3)+pow(b,3)+pow(c,3))) printf("%5d",x)x++} } 6.7 main() {int m,i,j,sfor(m=6m<10000m++) {s=1for(i=2i<mi++) if(m%i==0) s=s+iif(m-s==0) {printf("%5d its fastors are 1 ",m)for(j=2j<mj++) if(m%j==0) printf("%d ",j)printf("\n")} } } 或 main() {int m,i,j,sfor(m=6m<1000m++) {s=m-1for(i=2i<mi++) if(m%i==0) s=s-iif(s==0) {printf("%5d its fastors are 1 ",m)for(j=2j<mj++) if(m%j==0) printf("%d ",j)printf("\n")} } } 6.8 main() {int i=1,ndouble t,x=1,y=2,s,sum=0scanf("%ld",&n)while(i<=n) {s=y/xsum=sum+st=yy=y+xx=ti++} printf("%f\n",sum)} 11,P128 例6.10(译码) #include<stdio.h>void main() { char cwhile((c=getchar())!='\n') { c=c+4if(c>'Z'+4||c>'z') c=c-26} printf("%c",c)} printf("\n")} 12,P111 5.5 5.6(switch) 5.5 #include <stdio.h>main() {int x,yprintf("输入x:")scanf("%d",&x)if(x<1) { y=xprintf("x=%3d, y=x=%d\n",x,y)} else if (x<10) { y=2*x-1printf("x=%3d, y=2*x-1=%d\n",x,y)} else { y=3*x-11printf("x=%3d, y=3*x-11=%d\n",x,y)} } 5.6 #include <stdio.h>main() { float scorechar gradecase 2: printf("请输入学生成绩:")scanf("%f",&score)while(score>100||(score<0) { printf("\n输入有误,请重新输入:")scanf("%f",&score)} switch((int)(score/10)) { case 10: case 9: grade=’A’breakcase 8: grade=’B’breakcase 7: grade=’C’breakcase 6: grade=’D’breakcase 5: case 4: case 3: case 1: case 0: grade=’E’} printf("成绩是%5.1f,相应的等级是%c。\n",score,grade)} 13,P108 例5.5(一元二次方程求根) 例5.6(求闰年) 5.5 #include<stdio.h>void main() { int year,leapscanf("%d",&year)if(year%4==0) { if(year%100==0) { if(year%400==0) leap=1else leap=0} else leap=1} else leap=0if(leap) printf("%d is",year)else printf("%d is not",year)printf("a leap year.\n") } 5.6 14,P31 例2.17 例2.18 2.17 输出50个学生中成绩高于80分者的学号和成绩 2.18 输出2000——2500年每一年是否闰年 #include<stdio.h> void main() { int year year=2000 go: if(((year%4 == 0)&&(year%100 != 0)) || (year%400 == 0)) printf("%d is run nian",year) if(year<=2500) year=year++ if(year>2500) goto end goto go end: getch() } 希望对你有所帮助

《C程序设计语言(第2版·新版)》([美] Brian W. Kernighan)电子书网盘下载免费在线阅读

链接: https://pan.baidu.com/s/1txJqYzmjYS-BSw43eLWrnQ

提取码: sejp  

书名:C程序设计语言(第2版·新版)

作者:[美] Brian W. Kernighan

译者:徐宝文

豆瓣评分:9.4

出版社:机械工业出版社

出版年份:2004-1

页数:258

内容简介:

在计算机发展的历史上,没有哪一种程序设计语言像C语言这样应用广泛。本书作者是C语言的设计者之一Dennis M. Ritchie和著名计算机科学家Brian W. Kernighan合著的一本介绍C语言的权威经典著作。我们现在见到的大量论述C语言程序设计的教材和专著均以此书为蓝本。

原著第1版中介绍的C语言成为后来广泛使用的C语言版本——标准C的基础。人们熟知的“hello,World"程序就是由本书首次引入的,现在,这一程序已经成为众多程序设计语言入门的第一课。原著第2版根据1987年制定的ANSIC标准做了适当的修订.引入了最新的语言形式,并增加了新的示例,通过简洁的描述、典型的示例,作者全面、系统、准确地讲述了C语言的各个特性以及程序设计的基本方法。

对于计算机从业人员来说,本书是一本必读的程序设计语言方面的参考书。

作者简介:

Brian W. Kernighan,贝尔实验室计算科学研究中心高级研究人员,著名的计算机科学家。参加了UNIX系统、C语言、AWK语言和许多其他系统的开发,同时出版了许多在计算机领域具有影响的著作,如《The Elements of Programming Style》《The Practice of Programming》《The UNIX Programming Environment》《The AWK Language》《Software Tools》等。

Dennis M. Ritchie,1967年加入贝尔实验室。他和 Ken L. Thompson 两人共同设计并实现的C语言改变了程序设计语言发展的轨迹,是程序设计语言发展过程中的一个重要里程碑。与此同时,他们还设计并实现了UNIX *** 作系统。正是由于这两项巨大贡献,Dennis M. Ritchie 于1983年获得了计算机界的最高奖——图灵奖。此外,他还获得了ACM、IEEE、贝尔实验室等授予的多种奖项.。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7831458.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-10
下一篇2023-04-10

发表评论

登录后才能评论

评论列表(0条)

    保存