C语言程序设计教程第三版(李凤霞)习题答案
- 格式:doc
- 大小:20.31 KB
- 文档页数:30
第一章:程序设计基础知识一、单项选择题1、面向过程的程序设计语言是________。
A)机器语言 B)汇编语言 C)高级语言 D)第四代语言2、程序设计一般包含以下四个步骤,其中其中首先应该完成的是_________。
A)设计数据结构和算法B)建立数学模型C)编写程序 D)调试和运行程序3、以下常用算法中适合计算等差级数的算法是_________。
A)枚举法B)递推法 C)分治法 D)排序法4、以下不属于算法基本特征的是__________。
A)有穷性 B)有效性C)可靠性 D)有一个或多各输出5、以下描述中不正确的是___________。
A)程序就是软件,但软件不仅仅是程序。
B)程序是指令的集合,计算机语言是编写程序的工具。
C)计算机语言都是形式化的语言,它有一个语法规则和定义。
D)计算机语言只能编写程序而不能表示算法。
6、下面描述中,正确的是_____________。
A)结构化程序设计方法是面向过程程序设计的主流。
B)算法就是计算方法。
C)一个正确的程序就是指程序书写正确。
D)计算机语言就是编写程序的工具而不是表示算法的工具。
7、下面描述中,不正确的是______________。
A)递归法的关键是必须有一个递归终止的条件。
B)递归算法要求语言具有反复自我调用子程序的能力。
C)对于同一个问题,递推算法比递归算法的执行时间要长。
D)递推算法总可以转换为一个递归算法。
8、N-S图与传统流程图比较,主要优点是_________。
A)杜绝了程序的无条件转移。
B)具有顺序、选择和循环三种基本结构。
C)简单、只管。
D)有利于编写程序。
A)B)C)D)二、填空题1、在流程图符号中,判断框中应该填写的的是________。
(判断条件)2、结构化程序设计是__________应遵循的方法和原则。
(面向过程编程)3、结构化程序必须用__________程序设计语言来编写。
(具有结构化控制语句)4、可以被连续执行的一条条指令的集合称为计算机的________。
C 语言程序设计(第三版)习题库1、设圆半径r=1。
5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。
用scanf 输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。
请编程序. #include <stdio 。
h>main(){float r ,h,C1,Sa ,Sb ,Va,Vb;scanf(__”%f ”__,&r );scanf (”%d",__&h _);;C1=2*3.14*r;Sa=3。
14*r*r;Sb=4*Sa ;Va=4*3.14*r *r *r/3;Vb=Sa*h ;printf (___"Cl=%.2fSa=%.2fSb=%.2fVa=%。
2fVb=%。
2f ”,Cl ,Sa ,Sb ,Va,Vb ); }2、输入一个华氏温度,要求输出摄氏温度。
公式为 c=5(F-32)/9输出要求有文字说明,取位2小数。
#include <stdio.h 〉main(){float F,c ;scanf("%f",&F);____c=5*(F-32)/9______;printf ("c=%.2f”,c);}3、有一函数:⎪⎩⎪⎨⎧≥-<≤-<=10113101121x x x x x x y 写一程序,输入x 值,输出y 值。
#include <stdio.h 〉main(){int x,y;printf(”输入x :”);scanf("%d",&x);if (x<1) { /* x<1 */y=x;printf("x=%3d, y=x=%d\n",x ,y);} else if (____x 〈10_______){ /* 1≤x—10 */_____y=2*x-1_______;printf("x=%3d , y=2*x —1=%d\n",x,y );} else { /* x≥10 */y=3*x —11;printf (”x=%3d, y=3*x —11=%d\n”,x # include "stdio 。
习题九一、单选题1、已知:int *p,a;则语句"p=&a;"中的运算符"&"的含义是()。
A)位与运算 B)逻辑与运算 C)取指针内容D)取变量地址2、已知:int a,x;则正确的赋值语句是()。
A)a=(a[1]+a[2])/2 B)a*=*a+1; C)a=(x=1,x++,x+2); D)a="goog";3、已知:int a,*p=&a; 则下列函数调用中错误的是()。
A)scanf("%d",&a); B)scanf("%d",p); C)printf("%d",a); D)printf("%d",p);4、main(argc,argv)中形式参数argv的正确说明形式应当为()。
A)char *argv[ ] B)char argv[ ][ ] C)char argv[ ] D)char *argv5、说明语句"int (*p)(); "的含义是()。
A)p是一个指向一维数组的指针变量B)p是一个指针变量,指向一个整型数据C)p是一个指向函数的指针,该函数的返回值是一个整型D)以上都不对6、设有说明int(*ptr)[M];其中的标识符ptr是()。
A)M个指向整型变量的指针B)指向M个整型变量的函数指针C)一个指向有M个整型元素的一维数组的指针D)具有M个指针元素的一维指针数组,每个元素都只能指向整型变量7、已知:double *p[6]; 它的含义是()。
A)p是指向double型变量的指针 B)p是double型数组C)p是指针数组 D)p是数组指针8、已知函数说明语句:void *f(); 则它的含义是()。
A)函数f的返回值是一个通用型的指针 B)函数f的返回值可以是任意的数据类型C)函数f无返回值D)指针f指向一个函数,该函数无返回值9、已知:char s[10],*p=s,则在下列语句中,错误的语句是()。
C 语言程序设计(第三版)习题库1、设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。
用scanf 输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。
请编程序。
#include <stdio.h>main(){float r,h,C1,Sa,Sb,Va,Vb;scanf(__”%f ”__,&r);scanf(”%d ”,__&h _);;C1=2*3.14*r;Sa=3.14*r*r;Sb=4*Sa;Va=4*3.14*r*r*r/3;Vb=Sa*h;printf(___”Cl=%.2fSa=%.2fSb=%.2fVa=%.2fVb=%.2f ”,Cl,Sa,Sb,Va,Vb );}2、输入一个华氏温度,要求输出摄氏温度。
公式为 c=5(F-32)/9输出要求有文字说明,取位2小数。
#include <stdio.h>main(){float F,c;scanf("%f",&F);____c=5*(F-32)/9______;printf("c=%.2f",c);}3、有一函数:⎪⎩⎪⎨⎧≥-<≤-<=10113101121x x x x x x y 写一程序,输入x 值,输出y 值。
#include <stdio.h>main(){int x,y;printf("输入x :");scanf("%d",&x);if(x<1) { /* x<1 */y=x;printf("x=%3d, y=x=%d\n",x,y);} else if (____x<10_______){ /* 1≤x -10 */_____y=2*x-1_______;printf("x=%3d, y=2*x-1=%d\n",x,y);} else{ /* x≥10 */y=3*x-11;printf("x=%3d, y=3*x-11=%d\n",x# include "stdio.h"main(){int x,y;scanf("%d",&x);if(x<1){ y=x;}else if(x>=1 && x<10){ y=2*x-1;}else{ y=3*x-11;}printf("%d",y);}# include "stdio.h"main(){int x,y;scanf("%d",&x);if(x<1){ y=x;}else if(x>=1 && x<10){ y=2*x-1;}else{ y=3*x-11;}printf("%d\n",y);}# include "stdio.h"main(){int x,y;scanf("%d",&x);if(x<1){ y=x;}else if(x>=1 && x<10){ y=2*x-1;}else{ y=3*x-11;}printf("%d",y);}scanf("%d",&x);if(x<1){ y=x;}else if(x>=1 && x<10){ y=2*x-1;}else{ y=3*x-11;}# include "stdio.h" main(){int x,y;scanf("%d",&x);if(x<1)y=x;else if(x>=1 && x<10)y=2*x-1;elsey=3*x-11;printf("%d",y);},y);}}4、给定一个不多于5位的正整数,要求:①求它是几位数;②按逆序打印出各位数字。
《C语言程序设计教程》第三版课后习题参考答案C语言程序设计教程第三版课后习题参考答案第一章:C语言概述1.1 C语言的特点答案:C语言是一种通用的、面向过程的程序设计语言,具有高效、简洁、灵活等特点。
它提供了丰富的程序设计元素和功能,适用于各种不同的应用领域。
1.2 C语言程序的基本结构答案:C语言程序由预处理指令、函数声明、函数定义、变量声明和语句组成。
其中,预处理指令用来引入头文件或定义宏,函数声明用来声明函数的名称和参数,函数定义用来实现函数的功能,变量声明用来声明变量的类型和名称,语句用来表达具体的计算过程。
1.3 C语言的数据类型答案:C语言提供了多种数据类型,包括基本类型(整型、浮点型、字符型等)和派生类型(数组、指针、结构体等)。
每种数据类型在内存中占据一定的存储空间,并具有特定的取值范围和操作规则。
1.4 C语言的运算符和表达式答案:C语言支持各种运算符和表达式,例如算术运算符(+、-、*、/等)、关系运算符(>、<、==等)、逻辑运算符(&&、||、!等)等。
通过运算符和表达式可以进行各种数值计算和逻辑判断。
第二章:基本数据类型与运算2.1 整型数据类型答案:C语言提供了不同长度的整型数据类型,包括有符号整型(int、long等)和无符号整型(unsigned int、unsigned long等)。
整型数据类型可以表示整数值,并具有不同的取值范围。
2.2 浮点型数据类型答案:C语言提供了浮点型数据类型(float、double等),用来表示带小数部分的实数值。
浮点型数据可以表示较大或较小的数值,并具有一定的精度。
2.3 字符型数据类型答案:C语言提供了字符型数据类型(char),用来表示单个字符。
字符型数据可以用于表示各种字符(包括字母、数字、符号等)。
2.4 布尔型数据类型答案:C语言不直接支持布尔型数据类型,但可以使用整型数据类型来表示布尔值(0表示假、非零表示真)。
C语言程序设计(第三版)习题答案习题一一、名词解释(1)程序P1 (2)程序设计P1 (3)机器语言P1 (4)高级语言P2(5)汇编程序P3 (6)编译程序P4 (7)算法P5 (8)结构化程序设计方法P10二、简答题1. 设计程序时应遵循哪些基本原则?P4答:正确性、可靠性、简明性、有效性、可维护性、可移植性。
2. 算法具有哪些特点?答:有穷性、确定性、有效性、有零个或多个输入、有一个或多个输出。
3. 算法的表示形式有哪几种?答:自然语言、伪代码、传统流程图、N-S流程图、计算机语言。
4. 结构化程序设计方法的三种基本结构是什么?答:顺序结构、选择结构和循环结构。
5. 传统流程图与N-S流程图最大的区别是什么?答:N-S流程图去掉了在传统流程图中常用的流程线,使得程序的结构显得更加清晰、简单。
三、用传统流程图或N-S流程图表示求解以下问题的算法。
1. 从键盘输入10个整数,求出其中的最小数并输出。
2. 求1+2+3+…+100的值。
3. 求10~50的所有素数之和。
4. 求下列分段函数的值。
四、请参照本章例题,编写一个简单的C 程序,输出以下三行信息。
**************************Yangtze University**************************#include <stdio.h>void main(){printf("**************************\n");printf(" Yangtze University\n");printf("**************************\n");}4X-1 (X ≤1) 5(X-1)+6 (1<X<5) 6-3X (X ≥5)习题二一、选择题1~10: B C D C D D B C A A11~20: D A C D B D B A C D二、填空题1.字母 L 或字母 l2. %c(或字符) 、 %d(或整数)3.在程序运行过程中,其值可以在一定的范围内变化的量4.'\0'5.小数形式、指数形式6.关键字、预定义标识符、用户标识符7.字母、数字、下划线、数字8. 189. 2 、 1 、 3010.双精度实数或double11.赋值、逗号、 20 、 20 、 20 、 412. 4 、 4习题三一、选择题1~10: B C C B C C C D C C注:第4题答案D为: 10 22↙33↙二、填空题1. printf 、 scanf2. h3."%5d"4.'\0'5. e 、 E6. 67. s 、 c8. *9. - 、 +10. i三、编程题1. 编写程序,从键盘输入一个以秒为单位的时间数,将其换算成几小时几分几秒,然后进行输出。
教材习题答案第一章习题一、单项选择题1. C2. B3. B4. C5. D6. A7. C8. A二、填空题1. 判断条件2. 面向过程编程3. 结构化4. 程序5. 面向对象的程序设计语言6. 基本功能操作、控制结构7. 有穷性8. 直到型循环结构9. 算法10.可读性11.模块化12.对问题的分解和模块的划分习题一、单项选择题1. B2. D3. C4. B5. A6. A7. B8.C二、填空题1. 主2. C编译系统3. 函数、函数4. 输入输出5. 头6. .OBJ7. 库函数8. 文本第三章习题一、单项选择题1. D2. B3. A5. C6. D7. D8. B9. B10.C11.A12.D13.C14.C15.C16.A17.C18.C19.C20.D21.A22.D23.D24.D,A25.D26.A27.B二、填空题1. 补码2. 30810-±~ ) 308 10 , 15 —6 2. 308 10 -±( ~ ) 308 10 , 1563.逻辑4. 单目,自右向左5. 函数调用6.a或b(题目有错,小括号后面的c<=98改成(c>=97&&c<=98)就可以得到所给的答案了)7.8.65,89第四章习题一、单项选择题1. D2. C3. D4. A5. D6. B7. A8. C9. B10.B二、填空题1.一2.5.1690003.(1)-200 2500(2)i=-200,j=2500(3)2500200=-=ji4.a=98,b=765.000000,c=4321.000000 5. 10025.811.89234,10025.81按Enter键)1.89234,100(按Tab键)25.81(按Tab键)1.892346.0,0,37.38.scanf(" %lf %lf %lf",&a,&b,&c);9.13 13.000000 13.00000010.b=a;a=c;c=b;a=a+b;c=c-b;(对于本题来说,后者的答案更好,不仅使a 与c的值进行交换而且能保持中间变量b的值不发生改变)第五章习题一、单项选择题1. D2. C3. B4. B5. D6. A7. B8. D二、填空题1.非零,零k= =02.k= =03.if(abs(x)>4) Printf(“%d”,x);elseprintf(“error!”);4.if(x%2==1&&( (x>=1)&&(x<=10)||(x>=200&&x<=210))printf("%d",x);5.k=1(原题最后一行漏了个d,如果认为原题正确,则输出k=%。
C程序设计(第三版)课后习题参考解答第1章C语言概述1.5 参照本章例题,编写一个C程序,输出以下信息:******************************Very Good!******************************解:main ( ){printf(“****************************** \n”);printf(“\n”);printf(“Very Good! \n”);printf(“\n”);printf(“****************************** \n”);}1.6 写一个程序,输入a,b,c三个值,输出其中最大者。
解:main ( ){int a,b,c,max;printf(“请输入三个数a,b,c: \n”);scanf(“%d,%d,%d”,&a,&b,&c);max=a;if (max<b)max=b;if (max<c)max=c;printf(“最大数为:%d ”,max);}第2章程序的灵魂——算法2.1 什么叫结构化的算法?为什么要提倡结构化的算法?解:由一些基本结构顺序组成的算法称为结构化的算法。
由于在基本结构之间不存在非顺序的跳转,流程的转移只存在于一个基本结构范围之内,因而提高了算法的质量。
2.7 什么叫结构化程序设计?它的主要内容是什么?解:结构化程序就是用高级语言表示的结构化算法。
它的主要内容包括“自顶向下,逐步细化”的分析方法和“模块化设计”的解决方法,以及“结构化编码”的实现方法。
第3章数据类型、运算符与表达式3.4将以下三各整数分别赋给不同类型的变量,请画出赋值后数据在内存中的存储形式。
注:如果没有学过二进制和补码,此题可以不做。
解:各数据在内存中的存储形式如下表所示:它是一个负数的补码,对其再求一次补码可得其真值,即-(65536-32769)=-32767。
习题十一、单选题1~5 DDDCC6~10 AABDB11~14 CADC二、填空题1、34 122、ARRAY a,b,c;3、1 34、a c5、(*b).day=? b->day=?5、分析下列程序执行结果。
#include “stdio.h”main(){static struct s1{char c[4],*s;s1={“abc”,”def”};static struct s2{char *cp;struct s1 ss1;}s2={“ghi”,{“jkl”,”mno”}};printf(“%c%c\n”,s1.c[0],*s1.s); /*output ab */printf(“%s%s\n”,s1.c,s1.s); /*output abcdef */printf(“%s%s\n”,s2.cp,s2.ss1.s); /*output ghimno */printf(“%s%s\n”,++s2.cp,++s2.ss1.s); /* output hino */}6、以下程序的功能是:读入一行字符(如:a,...,y,z),按输入时的逆序建立一个链式的结点序列,即先输入的位于链表尾(如下图),然后再按输入的相反顺序输出,并释放全部结点。
#define getnode(type)_________malloc(sizeof(type)) ( (struct node *))main(){struct node{char info;struct node *link;}*top,*p;char c;top=NULL;while((c=getchar())______________) (!='\n'){p=getnode(struct node);p->info=c;p->link=top;top=p;}while(top){_________________; (p=top)top=top->link;putchar(p->info);free(p);}}7、下面的函数将指针p2所指向的线性链表链接到p1所指向的的链表的末端。
教材习题答案
第一章
习题
一、单项选择题
1. C
2. B
3. B
4. C
5. D
6. A
7. C
8. A
二、填空题
1. 判断条件
2. 面向过程编程
3. 结构化
4. 程序
5. 面向对象的程序设计语言
6. 基本功能操作、控制结构
7. 有穷性
8. 直到型循环结构
9. 算法
10.可读性
11.模块化
12.对问题的分解和模块的划分
习题
一、单项选择题
1. B
2. D
3. C
4. B
5. A
6. A
7. B
8.C
二、填空题
1. 主
2. C编译系统
3. 函数、函数
4. 输入输出
5. 头
6. .OBJ
7. 库函数
8. 文本
第三章
习题
一、单项选择题
1. D
2. B
3. A
5. C
6. D
7. D
8. B
9. B
10.C
11.A
12.D
13.C
14.C
15.C
16.A
17.C
18.C
19.C
20.D
21.A
22.D
23.D
24.D,A
25.D
26.A
27.B
二、填空题
1. 补码
2. 308
10
-
±
~)308 10 ,15 —6
2. 308 10 -
±
(~)308 10 ,15
6
3.
逻辑
4. 单目,自右向左
5. 函数调用
6.
a
或
b
(
题目有错
,
小括号后面的
c<=98
改成(
c>=97&&c<=98
)就可以得到所给的答案了)
7.
8.
65
,
89
第四章
习题
一、单项选择题
1. D
2. C
3. D
4. A
5. D
6. B
7. A
8. C
9. B
10.B
二、填空题
1.
一
2.
5.169000
3.
(1)-200 2500
(2)i=-200,j=2500
(3)
2500
200
=
-
=
j
i
4
.
a=98,b=765.000000,c=4321.000000 5.
100
25.81
1.89234
,
100
25.81
按
Enter
键)
1.89234
,
100
(按
Tab
键)
25.81
(按
Tab
键)
1.89234
6.
0,0,3
7.
3
8.
scanf(" %lf %lf %lf",&a,&b,&c);
9.
13 13.000000 13.000000
10.
b=a;a=c;c=b;
a=a+b;c=c-b;
(对于本题来说,后者的答案更好,不仅使a
与
c
的值进行
交换而且能保持中间变量
b
的值不发生改变)
第五章
习题
一、单项选择题
1. D
2. C
3. B
4. B
5. D
6. A
7. B
8. D
二、填空题
1.
非零,零
k= =0
2.
k= =0
3.
if(abs(x)>4)
Printf(
“
%d
”
,x);
else
printf(
“
error!
”
);
4.
if(x%2==1&&( (x>=1)&&(x<=10)||(x>=200&&x<=210))printf("%d",x);
5.
k=1
(
原题最后一行漏了个
d,
如果认为原题正确
,
则输出
k=%。
)
6.
10!,Right!11 7.
$$$a=0
8.
a=2,b=1
9.
0<a<b
第六章
习题
一、单项选择题
1. B
2. C
3. C
4. B
5. C
6.B
8. A
二、填空题
1.
无穷次
2.
8
(原题有误。
应该把b=1
后面的逗号改为分号)
3.
20
4.
11
5.
2.400000
6.
*#*#*#$
7. 8 5 2
8.
①
d=1.0
②
k++
③
k<=n
①
x>=0
②
x<amin
第七章
习题
一
、单项选择题
1. B
2. B
3. C
4. C
5.A
3
6. A
7. B
8. A
二、填空题
1.
512
256
128
64
32
8
4
2
1
2.
①
a[age]++ ②
i=18;i<26 3.
①
break
②
i==8
4.
①
a[i]>b[j] ②
③
j<5
5.
①
b[j]=a[j][0]
②
b[j]<a[j][k]
6.
a[k++]=a[j]
第八章
习题
一、单项选择题
1. B
2. C
3. C
4. A
5. A
6. C
7. C
8. D
10.B
11.A
12.C
13.A
14.C
15.B
二、填空题
1.
①
return(0)
②
return(n+sum(n-1)) 2.
①
return(1)
②
n*facto(n-1)
第九章
习题
一、单项选择题
2. C
3. D
4. A
5. C
6. C
7. C
8. A
9. B
10.C
11.A
12.A
13.B
14.B
15.B
16.D
17.C
18.D
19.B
20.D
三、填空题
1.
①
int *
②
* z
2.
①
*p++
①
’
\0
’
②
++
4.
①
q=p+1
②
q<p+10
③
*q>max
④
*q<min
4
第十章习题
一、单项选择题
1. D
2. D
3. A
4.C
5. B
6. A
7. A
8. B
9.D
10.B
11. C
12.B
13.D
14.C
二、填空题
1. 0x
34,0x12
2.
ARRAY a[10],b[10],c[10];
3.
2,3
4.
“
ab
”
,
cd
”
5.
(*b).day,b->day 6.
abcdef
ghimno
hino 7.
①
node*
②
!=NULL
③
p=top
8
p1->next
9.
①
list*
②
③
return h;
第十一章
习题
一、单项选择题
1. A
2. A
3. B
5. B
6. D
(
题目有错,将D
中的
\
改成
\\)
7. B
8. B
9. B
10.B
11.B
12.B
13.C
14.C
15.D
16.A
17.D
二、填空题
1.
ASCII
,二进制
2.
pf=fopen(
“
A:\\zk04\\data\\txfile.dat ”
,
”
w
”
);
3.
4.
ASCII
二进制,文件尾,非0
值。