×
超值优惠券
¥50
100可用 有效期2天

全场图书通用(淘书团除外)

关闭
中国高等院校计算机基础教育课程体系规划教材C程序设计教程(第3版)学习辅导/谭浩强

中国高等院校计算机基础教育课程体系规划教材C程序设计教程(第3版)学习辅导/谭浩强

1星价 ¥26.5 (6.8折)
2星价¥26.5 定价¥39.0
暂无评论
图文详情
  • ISBN:9787302503835
  • 装帧:一般胶版纸
  • 册数:暂无
  • 重量:暂无
  • 开本:其他
  • 页数:245
  • 出版时间:2017-04-01
  • 条形码:9787302503835 ; 978-7-302-50383-5

本书特色

本书为普通高等教育“十一五”国家级规划教材,荣获全国高校出版社**书一等奖。本书是与谭浩强所著的《C程序设计教程(第3版)》(清华大学出版社出版)配合使用的参考书,全书可分四个部分。**部分为《C程序设计教程(第3版)》习题与参考解答,包括了该书各章的全部习题,对全部编程习题都给出了参考解答,包括114个程序;第二部分为常见错误分析和程序调试;第三部分为C语言上机指南,详细介绍了利用Visual C++ 6.0集成环境和Visual Studio 2010编辑、编译、调试和运行程序的方法;第四部分为上机实验,提供了学习本课程应当进行的12个实验。 本书内容丰富、实用性强,是学习C语言的一本好参考书,可作为《C程序设计教程(第3版)》和其他C语言教材的配套教材,既适合高等学校师生使用,也可供报考计算机等级考试者和其他自学者参考。

内容简介

本书是与谭浩强所著的《C程序设计教程(第3版)》(清华大学出版社出版)配合使用的参考书,全书可分4个部分。靠前部分为《C程序设计教程(第3版)》习题与参考解答,包括了该书各章的全部习题,对全部编程习题都给出了参考解答,包括114个程序;第二部分为常见错误分析和程序调试;第三部分为C语言上机指南,详细介绍了利用Visual C++ 6.0集成环境和Visual Studio 2010编辑、编译、调试和运行程序的方法;第四部分为上机实验,提供了学习本课程应当进行的12个实验。 本书内容丰富,实用性强,是学习C语言的一本好参考书,可作为《C程序设计教程(第3版)》和其他C语言教材的参考书,既适合高等学校师生使用,也可供报考计算机等级考试者和其他自学者参考。

目录


目录

第1章程序设计和C语言3

第2章*简单的C程序设计——顺序程序设计8

第3章选择结构程序设计16

第4章循环结构程序设计25

第5章利用数组处理批量数据42

第6章利用函数进行模块化程序设计64

第7章善于使用指针90

第8章根据需要创建数据类型114

第9章利用文件保存数据147

第二部分常见错误分析和程序调试

第10章常见错误分析169第11章程序的调试与测试185

11.1程序的调试185

11.2程序错误的类型187

11.3程序的测试189

第三部分C语言上机指南

第12章Visual C++ 6.0的上机操作19712.1Visual C++ 6.0的安装和启动197

12.2输入和编辑源程序198

12.2.1新建一个C源程序的方法198

12.2.2打开一个已有的程序200

12.2.3通过已有的程序建立一个新程序的方法200

12.3编译、连接和运行201

12.3.1程序的编译201

12.3.2程序的调试202

12.3.3程序的连接204

12.3.4程序的执行205

12.4建立和运行包含多个文件的程序的方法206

12.4.1由用户建立项目工作区和项目文件206

12.4.2用户只建立项目文件211

第13章用Visual Studio 2010运行C程序213

13.1关于Visual Studio 2010213

13.2怎样建立新项目213

13.3怎样建立文件217

13.4怎样进行编译219

13.5怎样运行程序220

13.6怎样打开项目中已有的文件221

13.7怎样编辑和运行一个包含多文件的程序222

13.8关于用Visual Studio 2010编写和运行C程序的说明225

第四部分上 机 实 验

第14章实验指导22914.1上机实验的目的229

14.2上机实验前的准备工作230

14.3上机实验的步骤230

14.4实验报告231

14.5实验内容安排的原则231

第15章实验安排 232

15.1实验1C程序的运行环境和运行C程序的方法232

15.2实验2*简单的C程序设计——顺序程序设计234

15.3实验3选择结构程序设计236

15.4实验4循环结构程序设计237

15.5实验5利用数组(一)238

15.6实验6利用数组(二)239

15.7实验7函数调用(一)240

15.8实验8函数调用(二)241

15.9实验9善用指针(一)242

15.10实验10善用指针(二)243

15.11实验11使用结构体244

15.12实验12文件操作245

参考文献246


展开全部

节选

第5章 利用数组处理批量数据 5.1用筛选法求100之内的素数。 解: 解题思路: 所谓“筛法”指的是“埃拉托色尼(Eratosthenes)筛法”。埃拉托色尼是古希腊的著名数学家。他采取的方法是,在一张纸上写上1~1000的全部整数,然后逐个判断它们是否是素数,找出一个非素数,就把它挖掉,*后剩下的就是素数,见图51。① 2 3 ④ 5 ⑥ 7 ⑧ ⑨ ⑩ 11 13 17 19 23 29 31 37 41 43 47 … 图51 具体做法如下: (1) 先将1挖掉(因为1不是素数)。 (2) 用2去除它后面的各个数,把能被2整除的数挖掉,即把2的倍数挖掉。 (3) 用3去除它后面各数,把3的倍数挖掉。 (4) 分别用4,5…各数作为除数去除这些数以后的各数。这个过程一直进行到在除数后面的数已全被挖掉为止。例如在图51中找1~50的素数,要一直进行到除数为47为止。事实上,可以简化,如果需要找1~n范围内的素数表,只须进行到除数为n(取其整数) 即可。例如对1~50,只须进行到将7(即50的整数部分)作为除数即可。请读者思考为什么? 上面的算法可表示如下: (1) 挖去1; (2) 用下一个未被挖去的数 p去除p后面各数,把p的倍数挖掉; (3) 检查p是否小于n的整数部分(如果n=1000,则检查p<31?),如果是,则返回(2)继续执行,否则就结束; (4) 剩下的数就是素数。 用计算机解此题,可以定义一个数组 a。数组元素a\[1\]~a\[n\] 分别代表1~n这n个数。如果检查出数组a的某一元素的值是非素数,就使它变为0,*后剩下不为0的就是素数。 编写程序如下:#include #include//程序中用到求平方根函数sqrt int main() { int i,j,n,a\[101\];//定义a数组包含101个元素 for (i=1;i a\[i\]=i; //使a\[1\]~a\[100\] 的值为1到100 a\[1\]=0; //先"挖掉"a\[1\] for (i=2;i for (j=i+1;j { if(a\[i\]!=0 && a\[j\]!=0) if (a\[j\]%a\[i\]==0) a\[j\]=0; //把非素数“挖掉” } printf("\\n"); for (i=2,n=0;i {if (a\[i\]!=0)//选出值不为0的数组元素,即素数 {printf("%5d",a\[i\]);//输出素数,宽度为5列 n++; //累计本行已输出的数据个数 } if(n==10) { printf("\\n"); n=0; } } printf("\\n"); return 0; }运行结果:2357111317192329 31374143475359616771 737838997 输入数组a各元素for (i=1; i≤9; i++)min=ifor (j=i+1; j≤10; j++)a [min]>a[j] TFmin=j交换a[min]与a[i]输出已排序的10个数图525.2用选择法对10个整数排序。 解: 解题思路: 选择法的思路如下: 设有10个元素a\[1\]~a\[10\], 将a\[1\] 与a\[2\]~a\[10\]比较,若a\[1\]比a\[2\]~a\[10\]都小,则不进行交换,即无任何操作。若a\[2\]~a\[10\]中有一个以上比a\[1\] 小,则将其中*大的一个(假设为a\[i\]) 与a\[1\] 交换,此时a\[1\]中存放了10个数中*小的数。第2轮将a\[2\]与a\[3\]~a\[10\]比较,将剩下9个数中的*小者a\[i\]与a\[2\]对换,此时a\[2\]中存放的是10个中第二小的数。依此类推,共进行9轮比较,a\[1\]~a\[10\] 就已按由小到大的顺序存放了。NS图如图52所示。 编写程序如下:#include int main() { int i,j,min,temp,a\[11\]; printf("enter data:\\n"); for (i=1;i {printf("a\[%d\]=",i); scanf("%d",&a\[i\]);//输入10个数 } printf("\\n"); printf("The orginal numbers:\\n"); for (i=1;i printf("%5d",a\[i\]);//输出这10个数 printf("\\n"); for (i=1;i {min=i; for (j=i+1;j if (a\[min\]>a\[j\]) min=j; temp=a\[i\];//以下3行将a\[i+1\]~a\[10\]中*小者与a\[i\]对换 a\[i\]=a\[min\]; a\[min\]=temp; } printf("\\nThe sorted numbers:\\n");//输出已排好序的10个数 for (i=1;i printf("%5d",a\[i\]); printf("\\n"); return 0; }运行结果:enter data: a\[1\]=1↙ a\[2\]=16↙ a\[3\]=5↙ a\[4\]=98↙ a\[5\]=23↙ a\[6\]=119↙ a\[7\]=18↙ a\[8\]=75↙ a\[9\]=65↙ a\[10\]=81↙ The orginal numbers: 1 165 98 23119 18 75 65 81 The sorted numbers: 15 16 18 23 65 75 81 98119 5.3求一个3×3的整型二维数组对角线元素之和。 解: 编写程序如下:#include int main() { int a\[3\]\[3\],sum=0; int i,j; printf("enter data:\\n"); for (i=0;i for (j=0;j scanf("%d",&a\[i\]\[j\]); for (i=0;i sum=sum+a\[i\]\[i\]; printf("sum=%6d\\n",sum); return 0; }运行结果:enter data: 1↙ 2↙ 3↙ 4↙ 5↙ 6↙ 7↙ 8↙ 9↙ sum=15关于输入数据方式的讨论: 在程序的scanf语句中用%d作为输入格式控制,上面输入数据的方式显然是可行的。其实也可以在一行中连续输入9个数据,如:1 2 3 4 5 6 7 8 9↙结果也一样。在输入完9个数据并按回车键后,这9个数据被送到内存中的输入缓冲区中,然后逐个送到各个数组元素中。下面的输入方式也是正确的:1 2 3↙ 4 5 6↙ 7 8 9↙或者:1 2↙ 3 4 5 6↙ 7 8 9↙都是可以的。 请考虑,如果将程序第7~9行改为for (j=0;j scanf(" %d %d %d",&a\[0\]\[j\],&a\[1\]\[j\],&a\[2\]\[j\]);应如何输入?是否必须一行输入3个数据,如:1 2 3↙ 4 5 6↙ 7 8 9↙答案是可以按此方式输入,也可以不按此方式输入,而采用前面介绍的方式输入,不论分多少行、每行包括几个数据,只要求*后输入完9个数据即可。 程序中用的是整型数组,运行结果是正确的。如果用的是实型数组,只须将程序第4行的int改为float或double即可,并且在scanf函数中使用%f或%lf格式声明。 5.4已有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。 解: 解题思路: 设数组a有n个元素,而且已按升序排列,在插入一个数时按下面的方法处理: (1) 如果插入的数num比a数组*后一个数大,则将插入的数放在a数组末尾。 (2) 如果插入的数num不比a数组*后一个数大,则将它依次和a\[0\]~a\[n-1\] 比较,直到出现a\[i\]>num为止,这时表示a\[0\]~a\[i-1\]各元素的值比num小,a\[i\]~a\[n-1\] 各元素的值比num大。num理应插到a\[i-1\] 之后、a\[i\]之前。怎样才能实现此目的呢?将a\[i\]~a\[n-1\] 各元素向后移一个位置(即a\[i\]变成a\[i+1\],…,a\[n-1\]变成a\[n\])。然后将num放在a\[i\]中。NS图如图53所示。显示初始数组输入待插入的数值numnum>末尾元素

作者简介

谭浩强教授,我国著名计算机教育专家,计算机普及和高校计算机基础教育开拓者之一,现任全国高校计算机基础教育研究会会长。他创造了3个世界纪录:(1)20年来他(及其合作者)共编著出版了140余部计算机著作,此外主编了300多部计算机书籍,是出版科技著作数量*多的人。(2)他编著和主编的书发行量近5000万册,是读者*多的科技作家。(3)他和别人合作编著的《BASIC语言》发行了1250万册,创科技书籍发行量的世界纪录。他善于用读者容易理解的方法和语言说明复杂的概念。许多人认为他“开创了计算机书籍贴近大众的新风”,为我国的计算机普及事业做出了重要的贡献。

预估到手价 ×

预估到手价是按参与促销活动、以最优惠的购买方案计算出的价格(不含优惠券部分),仅供参考,未必等同于实际到手价。

确定
快速
导航