C程序设计(第四版)课后习题完整版 谭浩强编著
//复习过程中,纯手打,持续更新,觉得好就点个赞吧。
第一章:程序设计和C语言
习题
1、什么是程序?什么是程序设计?
答:程序就是一组计算机能识别和执行的指令。
程序设计是指从确定任务到得到结果,写出文档的全过程。(一般经历6个阶段:①问题分析;②设计算法;③编写程序;④对源程序进行编辑,编译和连接;⑤运行程序,分析结果;⑥编写程序文档;)
2、为什么需要计算机语言?高级语言的特点?
答:如同和人类交流一样,和哪个国家的人交流就需要哪个国家的语言来作为桥梁,想要和计算机进行交流沟通也就需要计算机语言,沟通以后就能用计算机做很多事情,更好的控制计算机 更好的用计算机完成我们的目的。高级语言同自然语言相近,便于人类理解和记忆,从人类的逻辑思维角度出发的计算机语言,抽象程度大大提高,需要经过编译成特定机器上的目标代码才能执行,一条高级语言的语句往往需要若干条机器指令来完成。
3、正确理解以下名词及其含义
(1)源程序 目标程序 可执行程序
答:用高级语言编写的代码程序即为源程序。
(2)程序编辑 程序编译 程序连接
答:
(3)程序 程序模块 程序文件
答:程序就是一组计算机能识别和执行的指令。
(4)函数 主函数 被调用函数 库函数
答:
(5)程序调试 程序测试
答:
4、 自学本书复录A,熟悉上级运行C程序的方法,上级运行本章3个例题。
5、请参照本章列题,编写一个C程序,输出以下信息:
*******************************
Very good !
*******************************
- #include<stdio.h>
- int main()
- {
- for(int i=;i<;i++)
- {
- printf("**");
- }
- printf("\n");
- printf("Very Good ! \n");
- for(int i=;i<;i++)
- {
- printf("**");
- }
- return ;
- }
6、编写一个C程序,输入a,b,c三个值,输出其中最大者。
- #include <stdio.h>
- int main () {
- int max(int a,int b,int c);
- int x=,y=,z=;
- int c=max(x,y,z);
- printf("%d\n",c);
- return ;
- }
- int max(int a,int b ,int c)
- {
- if(a>b)
- {
- if(a>c)
- return a;
- else
- return c;
- }
- else if(b>c)
- {
- return b;
- }else
- return c;
- }
第二章:算法-----程序的灵魂
读书笔记:
1、一个程序主要包括数据结构和算法。在程序中指定用到哪些数据以及这些数据的类型和数据的组织形式就是数据结构。对操作的描述即为算法。
2、算法的特性:有穷性;确定性;有零个或多个输入、输出;有效性。
3、表示算法的方法:自然语言表示;程序流程图表示;N-S流程图表示;伪代码表示;计算机语言表示。
4、程序流程图的基本结构:顺序结构;选择结构;循环结构(当型循环、直到型循环)。
习题:
1、什么是算法?试从日常生活中找三个列子,描述他们的算法。
答:算法是对一个程序涉及到的操作的描述。eg1:机场过安检:安检口验证登机人信息是否一致,验证通过将自己的行李放到行李安检区,此时安检人员检查登机者,都通过允许进入候机厅。
2、什么叫结构化的算法?为什么要提倡结构化的算法?
答:由顺序结构,选择结构,循环结构构成的算法即为结构化的算法。结构化的算法不存在无规律的转向,只在本基本结构内才允许存在分支和向前或向后的跳转。不会出现死循环,使算法的质量得到保证和提高,所以,要提倡结构化的算法。
3、试述3种基本结构的特点,请另外设计一种基本结构。
答:顺序结构可以保证代码从上到下一个总的编写逻辑结构。选择结构能够灵活的进行分支判断,增强代码的健壮性。循环结构有效提高简单重复率高程序的运行效率。 do{语句} while(条件);
4、
5、
6、
7、
8、用自顶向下,逐步细化的方法进行以下算法的设计:
(1)输出1900~2000年中是闰年的年份,符合下面两个条件之一的年份是闰年:①能被4整除但不能被100整除 ②能被100整除且能被400整除
- #include <stdio.h>
- int checkYear(int year){
- if(year%== && year%==)
- return year;
- else if(year%== && year%!=)
- return year;
- return ;
- }
- int main () {
- //printf("%d",checkYear(2000));
- int i,result;
- for(i= ;i< ;i++){
- result=checkYear(i);
- if(result==)
- continue;
- else
- printf("%d\n",result);
- }
- }
(2)求ax2+bx+c=0的根,分别考虑d=b2-4ac大于0、等于0和小于0这三种情况。
(3)输入10个数,输出其中最大的一个数。
第三章 最简单的C程序设计-----顺序程序设计
读书笔记:
1、常量的分类:
- 整形常量:即常见的整数
- 实型常量:十进制小数形式和指数形式。指数的表达形式举例:12.34*103 -->12.34e3 0.14E-25---->0.14*10-25
- 字符常量:普通字符范围在Ascii表中、转义字符即有特殊含义的字符:常以\作为开始符号
- 字符串常量:用双引号括起来的字符串,严格区分单引号,单引号只能表示单字符
- 符号常量:宏定义、#define 系列
2、变量必须先定义再使用
3、常变量用const'进行命名 eg:const float a=3.14 与符号常量#define a 3.14 的区别是:符号常量是预编译指令,在预编译时进行字符替换,预编译完成后,符号常量就不存在了。常变量是占用存储单元,有值的,只是不可变更。
4、标识符的命名标准:只能由字母数字下划线三种组成。数字不能作为变量名的开始。
5、数据类型:vc6.0下的变量
不同类型的数据在内存中占用的存储单元长度是不同的。使用sizeoif()函数测量类型或者变量的长度的运算符。
常见数据类型长度:short 2个字节16位。long 4个字节32位 。int 4个字节32位 。一个指针 4位。
6、字符变量的输出:当输出值大于128时,减去128输出对应的ASCII码的字符。
习题:
第四章选择结构程序设计:
读书笔记:
习题:
1、什么是算数运算?什么是关系运算?什么是逻辑运算?
答:算数运算就是数字与数字之间的加减乘除等基本算数运算。关系运算为 > 、< 、>= 、<= 、==之间的关系运算。逻辑运算为以与或非进行排列组后以后的逻辑运算。
2、C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”?
答:C语言中用非零表示真,用0表示假;也可用bool类型的true和false 进行真假的表示,依赖于c的编译器是否支持bool类型数据。在判断一个量是否为“真”时,以0代表“假”,以非0代表“真”
3、写出下面各逻辑表达式的值。设a=3,b=4,c=5: 1. a+b>c && b==c 2. a || b+c && b-c 3. !(a>b)&&!c || 1 4. !(x=a)&&(y=b)&&0 5. !(a+b)+c-1&&b+c/2
答:如下:
- 0因为a+b=7是大于c的,这个式子得1,b==c是不成立的,得0.1&&0得0。
- 因为&&的优先级高于||所以,a的得值为1,||后面的那个式子不管是多少都不会影响整个式子的结果了,所以结果为1;
- 结果为1.原因跟上面一样。
- x=a的值为1,只有当a=0时,赋值表达式的结果才为0.其他状态都为1.所以!(a>b)为0.整个式子是由&&组成的,结果就为0了。
- !(a+b)+c-1=0+5-1=4!=0,所以结果为1.b+c/2 =4+5/2=6!=0,根据整数整除是向下取整的原则,所以式子结果也为1。1&&1的结果为1.
4、有三个整数a,b,c由键盘输入,输出其中最大的数:
- #include<stdio.h>
- //查找输入值的最大值
- int findMax(int a,int b,int c){
- if(a>b){
- if(a>c){
- return a;
- }else
- return c;
- }else if(b>c)
- return b;
- else
- return c;
- }
- void main(){
- int a,b,c;//定义三个变量 a,b,c
- printf("请输入三个整数,并以逗号隔开!!!\n");
- scanf("%d,%d,%d",&a,&b,&c);
- int result=findMax(a,b,c);
- printf("最大的数为:%d\n",result);
- }
5、从键盘输入一个小于1000的正数,输出它的平方根(如平方根不是整数,则输出其整数部分)。要求在输入数据后检查是否为小于1000的正数,若不是则要求重新输入。
- #include<stdio.h>
- #include<math.h>//平方根调用math类库中的sqrt方法
- void main(){
- int a;
- printf("请输一个小于1000的正数!!!\n");
- scanf("%d",&a);
- if(a< && a>){
- int result=sqrt(a);
- printf("该数的平方根为%d\n",result);
- }else
- {
- printf("输入错误,请重新输一个小于1000的正数!!!\n");
- main();//输出错误,继续输入。
- }
- }
6、有一个函数:
写程序,输入x的值,输出y相应的值。
- #include <stdio.h>
- #include <math.h>
- int main()
- {
- int x, y;
- printf("Please enter x: ");
- scanf("%d", &x);
- if (x < )
- y = x;
- else if (x >= && x <)
- y = * x - ;
- else
- y = * x - ;
- printf("y = %d\n", y);
- return ;
- }
8、习题 4.8 给出一百分制成绩,要求输出成绩等级‘A’、‘B’、‘C’、‘D’、‘E’。90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为’E‘。
- #include <stdio.h>
- int main()
- {
- int score, g;
- scanf("%d", &score);
- while (score < || score > ){
- printf("Error! Retry!\n");
- scanf("%d", &score);
- }
- g = score / ; //成绩除以10的商进行判断
- if (g >= )
- printf("Grade is A!\n");
- switch(g){
- case :
- case :
- case :
- case :
- case :
- case : printf("Grade is E!\n"); break;//成绩为60以下都会执行到这里
- case : printf("Grade is D!\n"); break;
- case : printf("Grade is C!\n"); break;
- case : printf("Grade is B!\n"); break;
- }
- return ;
- }
9、给一个不多于5位的正整数,要求:1. 求出它是几位数;2. 分别输出每一位数字;3. 按逆序输出各位数字,例如原数为321,应输出123。
- #include <stdio.h>
- //计算数字的位数
- int calcSize(int x){
- int count=;//cout定义为数字的位数,初始值为0
- while(x>){
- x=x/;
- count++;
- }
- return count;
- }
- //判断数字是否合法
- bool isLeagl(int x){
- bool flag=false;
- if(x<)
- return flag;
- if(calcSize(x)>)
- return flag;
- flag=true;
- return flag;
- }
- //按位输出每一位数字(从个位开始输出)
- void printNumOneByOne(int x){
- int temp;
- int xx;
- printf("按位输出每一位数字(从个位开始输出):");
- while(x>){
- temp=x;
- temp=temp%;
- printf("%d,",temp);
- x=x/;
- }
- printf("\n");
- }
- //逆序输出该数字
- void reverseNum(int x){
- int y;
- for(y=;x!=;x=x/ ){
- y=y*+x%;
- }
- printf("%d\n",y);
- }
- int main()
- {
- int x;
- puts("请输入一位不多于5位的正整数!!!");
- scanf("%d",&x);
- if(isLeagl(x)==false){
- puts("输入错误,请重新输入一位不多于5位的正整数!!!");
- return ;
- }
- int s=calcSize(x);
- printf("该数位数为:%d\n",s);
- printNumOneByOne(x);
- printf("逆序后的该数字:");
- reverseNum(x);
- }
C程序设计(第四版)课后习题完整版 谭浩强编著的更多相关文章
- c++面向对象程序设计第四章课后习题
这是书上的习题,我使用的是VS2010运行编译的 原习题: 4.有两个矩阵a和b,均为两行三列.求两个矩阵之和.重载运算符“+”,使之能用于矩阵相加.如c=a+b. #include<iostr ...
- 挂羊头卖狗肉蓄意欺骗读者——谭浩强《C程序设计(第四版)》中所谓的“按照C99”(二)
挂羊头卖狗肉蓄意欺骗读者——谭浩强<C程序设计(第四版)>中所谓的“按照C99”(二) 在<谭C>p4:“本书的叙述以C99标准为依据”,下面从C89到C99的主要变化方面来看 ...
- c++面向对象程序设计 课后题 答案 谭浩强 第四章
c++面向对象程序设计课后题答案 谭浩强 第四章 1: #include <iostream> using namespace std; class Complex {public: Co ...
- C程序设计(谭浩强)第五版课后题答案 第一章
大家好,这篇文章分享了C程序设计(谭浩强)第五版课后题答案,所有程序已经测试能够正常运行,如果小伙伴发现有错误的的地方,欢迎留言告诉我,我会及时改正!感谢大家的观看!!! 1.什么是程序?什么是程序设 ...
- 《C程序设计(第四版)》小记
我看的这本书很经典,它是谭浩强写的,也就是广为流传的“C语言红皮书”.在网上看了很多帖子,生活中也问过一些朋友,大多数人是不认可这本书的.很多人都说这本书很烂,看不懂,然后去“追逐”国外的一些教材.其 ...
- 剑指offer】Java版代码(完整版)
转自:剑指offer]Java版代码(完整版) 转自:[剑指offer] JAVA版题解(完整版)
- c++面向对象程序设计 谭浩强 第一章答案
c++面向对象程序设计 谭浩强 答案 第一章 目录: c++面向对象程序设计 谭浩强 答案 第一章 c++面向对象程序设计 谭浩强 答案 第二章 c++面向对象程序设计 谭浩强 答案 第三章 c++面 ...
- c++面向对象程序设计 谭浩强 第三章答案
2: #include <iostream> using namespace std; class Date {public: Date(int,int,int); Date(int,in ...
- c++面向对象程序设计 谭浩强 第二章答案
类体内定义成员函数 #include <iostream> using namespace std; class Time { public: void set_time(); void ...
随机推荐
- centos7 中安装 htop
首先启用 EPEL Repository: yum install -y epel-release 启用 EPEL Repository 后, 可以用 yum 直接安裝 Htop: yum insta ...
- Ruby中的常量:引号、%符号和heredoc
数值字面量 没什么好说的,唯一需要说明的是分数字面量:数值后加上一个后缀字母r表示分数字面量. # 整数字面量 0 1 100 10_000_001 # 千分位 # 浮点数字面量 0.1 1.0 1. ...
- Java中的反射(1)
Reflection in Java 反射到底是什么呢,我被问到的时候其实也没办法很好的回答这个问题,翻一翻博客,然后逐条讲解.今天干脆就整合一下,免得以后还要去翻. 首先讲一下Java是如何在运行时 ...
- 多线程与高并发(四)volatile关键字
上一篇学习了synchronized的关键字,synchronized是阻塞式同步,在线程竞争激烈的情况下会升级为重量级锁,而volatile是一个轻量级的同步机制. 前面学习了Java的内存模型,知 ...
- python - 博客目录
博客目录 python基础部分 函数 初识函数 函数进阶 装饰器函数 迭代器和生成器 内置函数和匿名函数 递归函数 常用模块 常用模块 模块和包 面向对象 初识面向对象 面向对象进阶 网络编程 网络编 ...
- Wannafly挑战赛1:Treepath(DFS统计)
题目链接 题意 给出一棵树,问长度为偶数的路径数有多少. 思路 记录路径长度为奇数的数目和为偶数的数目,然后 n * (n-1) / 2 求和即可. #include <bits/stdc++. ...
- iOS邓白氏编码申请流程及苹果账号组织名称变更
邓氏编码(D-U-N-S®Number,是Data Universal Numbering System的缩写).它是一个独一无二的9位数字全球编码系统,相当于企业的身份识别码 (就像是个人的身份证) ...
- 如何正确使用Profibus插头以及终端电阻
插头与终端电阻在Profibus通讯中有着非常重要的作用,它们使用起来非常简单,没有很多复杂的设置:但是正是由于使用简单,使得很多工程师在使用当中忽略了一些细节,导致很多通讯问题. 1 Profibu ...
- 包教包会之Open Live Writer设置代码样式
Open Live Writer(以下简称OLW),作为一个在本地写博文,然后发布到各个博客网站的客户端,在使用上个人觉得还是比较好用的.但是其对IT博文中代码部分的内容样式支持不是很友好.下面是本人 ...
- SQL Server Update 链接修改和when的应用
一.自链接方式 update b1 set b1.money = b1.money + b2.money from (select * from wallet where type='余额') b1 ...