《C语言程序设计教程》(第三版)课后习题参考答案

合集下载

《C语言程序设计教程》(第三版)李凤霞 主编——第一章习题答案

《C语言程序设计教程》(第三版)李凤霞 主编——第一章习题答案

第一章:程序设计基础知识一、单项选择题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语言程序设计(第3版)-参考答案

C语言程序设计(第3版)-参考答案

C语言程序设计(第3版)-参考答案C语言程序设计(第3版) - 参考答案C语言是一种广泛应用于软件开发领域的编程语言,它具有高效、简洁、灵活等特点。

《C语言程序设计(第3版)》是一本经典的教材,本文将提供一些参考答案,帮助读者更好地理解和掌握C语言程序设计。

一、基础知识1. 什么是C语言?C语言是一种通用的编程语言,由贝尔实验室的Dennis Ritchie开发,在20世纪70年代广泛流行起来。

它被设计为一种低级语言,可以直接操作计算机硬件,并提供了足够的抽象层次来方便高级程序设计。

2. 如何输出“Hello, World!”?在C语言中,使用printf函数可以输出文本信息。

要输出“Hello, World!”,可以使用以下代码:```#include <stdio.h>int main() {printf("Hello, World!\n");return 0;}```3. 如何定义和使用变量?在C语言中,可以使用关键字`int`、`float`、`char`等定义变量。

例如:```int age = 20;float weight = 60.5;char grade = 'A';```定义后的变量可以用于存储不同类型的值,并在程序中进行操作和输出。

二、控制流程1. 什么是条件语句?条件语句允许程序通过判断条件来选择性地执行不同的代码块。

在C语言中,常用的条件语句是`if`语句。

例如:```if (score >= 60) {printf("Pass\n");} else {printf("Fail\n");}```根据变量`score`的值,判断学生是否及格并输出相应结果。

2. 什么是循环语句?循环语句可以重复执行一段代码块,以达到多次执行的目的。

在C 语言中,常用的循环语句有`for`、`while`和`do while`。

《C语言程序设计教程》第三版课后习题参考答案

《C语言程序设计教程》第三版课后习题参考答案

《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语言第三版课后习题答案

谭浩强c语言第三版课后习题答案

谭浩强c语言第三版课后习题答案谭浩强教授的《C程序设计》第三版是一本广受欢迎的C语言教材,其课后习题也是很多学习者检验学习成果的重要方式。

以下是部分课后习题的答案,供参考:第一章:C语言概述1. C语言的特点是什么?- C语言具有高级语言的特点,同时具有低级语言的许多功能。

- C语言具有丰富的运算符和数据类型。

- C语言具有结构化编程的特点。

- C语言具有很好的移植性。

2. C语言的主要应用领域有哪些?- 系统软件开发。

- 嵌入式系统开发。

- 应用软件的开发。

第二章:数据类型及其运算1. C语言中的基本数据类型有哪些?- 整型(int)- 浮点型(float, double)- 字符型(char)2. 什么是算术运算符?- 加(+)、减(-)、乘(*)、除(/)、模(%)第三章:简单的输入输出1. C语言中标准输入输出函数有哪些?- `printf()` 用于格式化输出。

- `scanf()` 用于格式化输入。

2. 如何使用`printf()`函数进行输出?- 使用`printf()`函数时,需要在括号内提供格式字符串,格式字符串中可以包含转义序列和格式说明符。

第四章:分支结构1. C语言中的条件语句有哪些?- `if`语句- `if...else`语句- `switch`语句2. 如何使用`if`语句实现分支?- 使用`if`语句时,首先需要一个条件表达式,如果条件为真,则执行`if`语句块内的代码。

第五章:循环控制1. C语言中的循环语句有哪些?- `for`循环- `while`循环- `do...while`循环2. 如何使用`for`循环?- `for`循环需要三个部分:初始化表达式、条件表达式和迭代表达式。

第六章:数组1. 数组的基本概念是什么?- 数组是一种数据结构,可以存储固定大小的同类型元素集合。

2. 如何声明一个数组?- 使用数组类型和数组名来声明,例如:`int arr[10];`第七章:指针1. 什么是指针?- 指针是一种变量,它存储了另一个变量的内存地址。

c语言程序设计第三版谭浩强课后习题及答案

c语言程序设计第三版谭浩强课后习题及答案

c语言程序设计第三版谭浩强课后习题及答案C语言程序设计是一门基础而重要的编程课程,谭浩强教授的《C语言程序设计》第三版是许多高校计算机专业学生的必修教材。

课后习题是检验学生对课程内容掌握程度的重要手段,以下是部分习题及答案的示例。

# 第一章:C语言概述习题1:简述C语言的特点。

答案: C语言是一种结构化编程语言,具有以下特点:1. 简洁、紧凑、贴近硬件。

2. 丰富的运算符和数据类型。

3. 具有结构化控制语句。

4. 支持模块化程序设计。

5. 可移植性好。

习题2:为什么说C语言具有“高级语言”的特点?答案: C语言被称为高级语言,因为它:1. 抽象了机器语言的复杂性。

2. 允许使用变量名代替内存地址。

3. 提供了丰富的控制结构和数据类型。

4. 支持高级的编程概念,如函数、数组和指针。

# 第二章:数据类型、运算符和表达式习题3:写出C语言中的基本数据类型。

答案: C语言中的基本数据类型包括:- 整型:`int`- 浮点型:`float` 和 `double`- 字符型:`char`习题4:解释赋值运算符的右结合性。

答案:赋值运算符的右结合性意味着当多个赋值运算符出现在同一个表达式中时,它们将从右向左进行计算。

例如,在表达式 `a = b = c;` 中,首先计算 `b = c`,然后将结果赋值给 `a`。

# 第三章:控制语句习题5:描述if语句的基本用法。

答案: if语句用于基于条件执行代码块。

基本语法如下:```cif (条件) {// 条件为真时执行的代码} else {// 条件为假时执行的代码}```其中条件是一个表达式,如果其值为真(非零),则执行if块中的代码;如果为假(零),则执行else块中的代码。

习题6:举例说明for循环的使用。

答案: for循环用于重复执行一段代码,直到给定条件不再满足。

基本语法如下:```cfor (初始化表达式;条件表达式;更新表达式) {// 循环体}```例如,打印0到9的数字:```cfor (int i = 0; i < 10; i++) {printf("%d ", i);}```以上是部分习题及答案的示例。

谭浩强C语言程序设计教程(第三版)课后习题答案

谭浩强C语言程序设计教程(第三版)课后习题答案
scanf("%d",&n);
for(i=1;i<=n;i++)
{
t=t*i; /* 实现阶乘*/
sum=sum+1/t;
}
printf("e=%lf",sum);
}
源程序二:(2)用while循环实现
#include<math.h>
}
——————————————————————————————————————
5.19 编写程序,输出从公元1000年至2000年所有闰年的年号 每输出3个年号换一行。
判断公元年是否闰年的条件是:
(1)公元年数如能被4整除,而不能被100整除,则是闰年。
(2)公元年数能被400整除也是闰年。
if(d1<d0)m1=m1-1;
if(m1<m0)y1=y1-1;
age=y1-y0;
printf("\nAge=%d",age);
}
——————————————————————————————————————
4.23 编写程序,输入一个整数,打印出它是奇数还是偶数。
3.33 编写程序,读入三个整数给a,b,c,然后交换它们中的数,把a中原来的值给b,
把b中原来的值给c,把c中的值给a。
※程序如下※
main( )
{
int a,b,c,t=0;
printf("input a b c:\n");
scanf("%d%d%d",&a,&b,&c);
else if(x==0)

c语言程序设计教程第三版习题答案

c语言程序设计教程第三版习题答案

c语言程序设计教程第三版习题答案C语言程序设计教程第三版习题答案第一章:C语言概述1. 简述C语言的特点。

C语言是一种结构化编程语言,具有高级语言的特点,同时支持底层硬件操作。

其特点包括:简洁、高效、可移植、丰富的运算符、数据结构支持、广泛的库函数等。

2. 什么是编译型语言?编译型语言是指源代码在执行前需要通过编译器转换成机器语言的程序设计语言。

C语言就是一种编译型语言。

第二章:数据类型、运算符和表达式1. 列出C语言的基本数据类型。

C语言的基本数据类型包括:整型(int)、字符型(char)、浮点型(float和double)。

2. 说明赋值运算符的用法。

赋值运算符(=)用于将右侧表达式的值赋给左侧的变量。

例如:`int a = 10;` 将整数值10赋给变量a。

第三章:控制结构1. 什么是条件语句?条件语句用于根据条件的真假来执行不同的代码块。

C语言中的条件语句主要有if语句和switch语句。

2. 循环语句有哪些?C语言中的循环语句主要有for循环、while循环和do-while循环。

第四章:数组和字符串1. 数组的声明和初始化方式。

数组声明的一般形式为:`type arrayName[arraySize];`。

初始化可以使用花括号一次性赋值,如:`int arr[5] = {1, 2, 3, 4, 5};`。

2. 字符串在C语言中的表示方法。

在C语言中,字符串以字符数组的形式存在,以空字符('\0')作为结束标志。

第五章:函数1. 函数的定义和调用。

函数定义的一般形式为:`returnTypefunctionName(parameterList) { /* function body */ }`。

调用函数时,使用其名称和必要的参数。

2. 函数的参数传递方式有哪些?C语言中函数的参数传递方式主要有值传递(pass by value)和引用传递(pass by reference)。

C语言程序设计教程李凤霞第三版课后答案

C语言程序设计教程李凤霞第三版课后答案

1 【C语言】《C语言程序设计教程(第二版)》习题答案说明1. 本文所指的《C语言程序设计教程(第二版)》是李凤霞主编、北京理工大学出版社出版的,绿皮。

2 第1章程序设计基础知识一、单项选择题(第23页)1-4.CBBC 5-8.DACA二、填空题(第24页)1.判断条件2.面向过程编程3.结构化4.程序5.面向对象的程序设计语言7.有穷性8.直到型循环9.算法10.可读性11.模块化12.对问题的分析和模块的划分三、应用题(第24页)2.源程序:main(){int i,j,k; /* i:公鸡数,j:母鸡数,k:小鸡数的1/3 */printf("cock hen chick\n");for(i=1;i<=20;i++)for(j=1;j<=33;j++)for(k=1;k<=33;k++)if (i+j+k*3==100&&i*5+j*3+k==100)printf(" %d %d %d\n",i,j,k*3);}执行结果:cock hen chick4 18 788 11 8112 4 843.现计算斐波那契数列的前20项。

递推法源程序:main(){long a,b;int i;a=b=1;for(i=1;i<=10;i++) /*要计算前30项,把10改为15。

*/ {printf("%8ld%8ld",a,b);a=a+b;b=b+a;}}递归法源程序:main(){int i;for(i=0;i<=19;i++)printf("%8d",fib(i));}fib(int i){return(i<=1?1:fib(i-1)+fib(i-2));}执行结果:1 123 5 8 13 21 34 5589 144 233 377 610 987 1597 2584 4181 6765 4.源程序:#include "math.h";main(){double x,x0,deltax;x=1.5;do {x0=pow(x+1,1./3);deltax=fabs(x0-x);x=x0;}while(deltax>1e-12);printf("%.10f\n",x);}执行结果:1.32471795725.源程序略。

c程序设计第三版习题参考解答(全)

c程序设计第三版习题参考解答(全)

c程序设计第三版习题参考解答(全) C程序设计第三版习题参考解答本文为《C程序设计第三版习题参考解答》的全文内容。

为了更好地适应题目要求,文章将按照解答问题的方式进行分段,每个问题对应一个小节。

以下是各个问题的解答:第一章:C概述和程序设计基本原则1. 什么是计算机程序?计算机程序是一系列指令的集合,用于告诉计算机执行特定的任务。

它由一系列语句组成,每条语句都包含了计算机可以理解和执行的命令。

2. C语言的起源和发展历程是什么?C语言是由贝尔实验室的Dennis Ritchie于20世纪70年代初开发的一种通用高级编程语言。

C语言基于早期的B语言进行了扩展和改进,成为了应用广泛且高效的编程语言。

3. 编译和解释有什么区别?编译是将源代码一次性转换为机器语言的过程。

它将整个源代码文件编译成可执行文件,然后可以直接在计算机上运行。

解释是逐行解析源代码并立即执行的过程。

解释器逐行读取源代码并将其转换为机器代码,然后立即执行转换后的代码。

4. C程序的一般结构是什么样的?C程序的一般结构包括预处理指令、函数声明、全局变量声明、main函数以及其他函数的定义。

预处理指令用于包含头文件、定义宏等。

函数声明用于声明函数的名称和参数。

全局变量声明用于声明全局变量。

main函数是C程序的入口点,也是程序执行的起始位置。

第二章:C基本语法和数据类型1. C中的注释有哪些类型?在C中,注释分为单行注释和多行注释。

单行注释以"//"开头,多行注释以/*开头,以*/结尾。

2. 什么是变量?变量是在程序中用来存储数据的存储区域。

每个变量都有一个名称和一个数据类型,可以通过变量名来引用它所存储的数据。

3. C语言中的常量有哪些类型?C语言中的常量分为整型常量、实型常量、字符常量和字符串常量。

整型常量表示整数值,实型常量表示实数值,字符常量表示单个字符,字符串常量表示一串字符。

4. C语言中的运算符有哪些类型?C语言中的运算符包括算术运算符、关系运算符、逻辑运算符、赋值运算符、自增自减运算符等。

《C语言程序设计教程》(第三版)课后习题参考答案

《C语言程序设计教程》(第三版)课后习题参考答案

C语言程序设计课后习题参考答案习题一一、单项选择题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、A4、C5、A6、D7、B8、D9、B 10、C 11、A 12、D 13、C 14、B 15、C 16、A17、B 18、C 19、C 20、D 21、A 22、D 23、D 24、D、A25、D 26、A二、填空题1、补码2、10^-138~10^138、15~163、实4、单目运算符、自右向左5、函数调用6、65,89习题四一、单项选择题1、D2、C3、D4、A5、D6、B7、A8、C9、B 10、B二、填空题1、两, ;2、5.1690003、-200 2500、i=-200,j=2500回车、i=-200回车j=2500回车4、a=98,b=765.000000,c=4321.0000005、100 25.81 1.89234、100,25.81,1.89234、100回车25.81回车1.89234回车6、0,0,37、38、scanf(“%lf %lf %lf”,&a,&b,&c);9、13 13.000000 13.00000010、c=b-a;a=b+c;习题五一、单项选择题1、B2、D3、C4、B5、B6、D7、A8、B9、D二、填空题1、1 、02、k!=03、if(x>4||x<-4)printf(“%d”,x);else printf(“error!”);4、if(((x>=1&&x<=10)||(x>=200&&x<=210))&&(x%2!=0))Printf(“%d”,x);5、16、17、10!Right!8、a=09、2,110、0<a<b习题六一、单项选择题1、B2、C3、C4、B5、C6、B7、C8、A二、填空题1、无穷次2、83、204、115、3.66、*#*#*#$7、8 5 28、d=1.0 、k++、k<=n9、!(x<0)、x<amin习题七一、单项选择题1、B2、D3、C4、C5、A6、A7、D8、A二、填空题1、1 2 4 8 16 32 64 128 256 5122、a[age]++、i=18;i<263、break、i==84、a[i]>b[i]、i<3、j<55、b[j]=0、b[j]=a[j][k]习题八一、单项选择题1、B2、C3、C4、A5、A6、A7、C8、D9、D 10、B 11、A 12、C 13、A 14、C 15、B二、填空题1、return 1、return n+sum(n-1)2、return 1、n*facto(n-1)习题九一、单项选择题1、D2、C3、D4、A5、C6、C7、C8、C9、B 10、C 11、A 12、C 13、B 14、A 15、D 16、B17、C 18、A 19、B 20、C二、填空题1、int 、return z2、*p++3、’\0’、++4、p、max<*q、min>*q习题十一、单项选择题1、D2、D3、A4、5、B6、A7、C8、B9、D 10、11、C 12、D 13、D 14、C二、填空题1、34 122、ARRAY a[10],b[10],c[10];3、2 34、ab、cd5、(*b).day、b->day6、adabc defghi mnohi no7、(struct node *)、!=’\n’、p=top;8、p1=p1->next9、(struct list *)、(struct list *)、return (n)习题十一一、单项选择题1、A2、A3、B4、A5、B6、D7、B8、A9、A 10、B 11、B 12、B 13、C 14、C 15、D 16、A17、D二、填空题1、ASCII(文本)、二进制2、pf=fopen(“A:\\zk04\\data\\txfile.dat”,”w”);3、fputc()、fputs()、fscanf()、fread()4、(后两个空)文件结束符、非0值。

《C语言程序设计》第三版课后答案

《C语言程序设计》第三版课后答案

《C语言程序设计》第三版课后答案第一章:C语言基础知识1.1 C语言的历史和特点C语言是由贝尔实验室的Dennis Ritchie在20世纪70年代初开发的一种高级计算机编程语言。

C语言具有简洁、高效、可移植性强等特点,成为了编写系统软件和应用软件的首选语言。

1.2 C语言的开发环境为了编写和运行C语言程序,我们需要安装并配置相应的开发环境。

常用的开发环境包括Code::Blocks、Dev-C++和Eclipse等。

这些开发环境提供了编辑器、编译器和调试器等工具,方便我们进行程序开发和调试。

1.3 C语言的基本语法C语言的基本语法包括关键字、标识符、数据类型、变量、常量、运算符和控制语句等。

关键字是C语言预先定义的词汇,如int、if、for等。

标识符是程序中自定义的名称,用于标识变量、函数等。

数据类型包括整型、浮点型、字符型和指针型等。

变量是存储数据的位置,常量是不可修改的数据。

运算符用于进行数学和逻辑运算。

控制语句包括条件语句和循环语句,用于控制程序的执行流程。

第二章:C语言基本程序设计2.1 程序的结构C语言程序由多个函数组成,其中main函数是程序的入口,是程序执行的起点。

在main函数中,我们可以调用其他函数来完成具体的任务。

一个基本的C语言程序结构包括包含头文件、定义变量、执行语句和返回值等部分。

2.2 输入和输出输入和输出是C语言程序中常见的操作。

标准库提供了一系列函数,如printf和scanf,用于输出和输入数据。

其中printf函数用于格式化输出数据,scanf函数用于接收用户的输入。

2.3 运算和赋值C语言支持多种运算符,如算术运算符、关系运算符、逻辑运算符和位运算符等。

这些运算符可以用于数值计算和条件判断。

赋值运算符用于给变量赋值。

2.4 条件语句条件语句根据条件的成立与否来决定程序的执行路径。

C语言提供了if语句和switch语句来实现条件控制。

if语句根据条件的真假来执行不同的代码块。

c程序设计第三版课后答案完整版

c程序设计第三版课后答案完整版

c程序设计第三版课后答案完整版C程序设计第三版课后答案完整版C程序设计是一门基础而重要的计算机科学课程,它不仅教授编程语言本身,还涵盖了程序设计的基本概念和技巧。

第三版的教材在内容上进行了更新和扩充,以适应现代编程教育的需求。

以下是基于第三版C 程序设计教材的课后答案完整版,供同学们参考学习。

第一章:C语言概述1. C语言的历史和特点- C语言由Dennis Ritchie在1972年开发,用于UNIX操作系统。

- 特点包括跨平台、高效、灵活、可移植。

2. C语言的基本组成- C程序由函数、变量、表达式和控制语句组成。

3. C程序的编写和运行过程- 编写源代码,编译,链接,生成可执行文件,运行。

第二章:数据类型、运算符和表达式1. 基本数据类型- 整型(int)、浮点型(float)、双精度型(double)、字符型(char)。

2. 变量声明和初始化- 使用类型说明符声明变量,初始化赋予初值。

3. 运算符- 算术运算符、关系运算符、逻辑运算符、位运算符等。

4. 表达式- 表达式由操作数和运算符组成,用于计算结果。

第三章:控制语句1. 条件语句- if语句、switch语句。

2. 循环语句- while循环、do-while循环、for循环。

3. 跳转语句- break语句、continue语句、return语句、goto语句。

第四章:函数1. 函数的定义和声明- 函数由返回类型、函数名、参数列表和函数体组成。

2. 函数的调用- 调用函数时,需要传递参数并接收返回值。

3. 函数的作用域和生命周期- 局部变量的作用域仅限于函数内部,全局变量可在程序中多处访问。

第五章:数组和字符串1. 数组的基本概念- 存储相同类型元素的集合。

2. 字符串的操作- 字符串是字符数组,以空字符'\0'结尾。

3. 常用字符串处理函数- strcpy、strcat、strlen、strcmp等。

第六章:指针1. 指针的基本概念- 指针变量存储另一个变量的地址。

C语言程序设计(第三版)课后习题答案

C语言程序设计(第三版)课后习题答案

C程序设计(第三版)答案-谭浩强程序是在VC6.0下编译的,所以头文件和TC的不太一样!4-8#include <iostream>#define pi 3.1415void main(){float r,h,rl,ra,ss,sv,cv;printf("输入圆的半径和圆柱的高\n\n");scanf("%f%f",&r,&h);rl=2*pi*r;ra=pi*r*r;ss=4*pi*r*r;sv=4*pi*r*r*r/3;cv=ra*h;printf("圆周长为:%f\n\n圆面积为:%f\n\n圆球表面积为:%f\n\n圆球体积为:%f\n\n 圆柱体积为:%f\n\n",rl,ra,ss,sv,cv);}4-9#include <iostream>void main(){float F,c;printf("输入一个华氏温度\n\n");scanf("%f",&F);c=5*(F-32)/9;printf("摄氏温度为:%.2f\n\n",c);}第五章5-4#include <iostream>void main(){int a,b,c,max;printf("输入三个整数a,b,c\n\n"); scanf("%d%d%d",&a,&b,&c);if(a>b) max=a;else max=b;if(max<c) max=c;printf("最大的数为:%d\n\n",max); }5-5#include <iostream>void main(){float x,y;printf("输入x\n\n");scanf("%f",&x);if(x<1) y=x;else if(x<10) y=2*x-1;else y=3*x-11;printf("y=%f\n\n",y);}5-6#include <iostream>void main(){float m;int n;printf("输入成绩\n\n");scanf("%f",&m);n=m/10;switch(n){case 0:case 1:case 2:case 3:case 4:case 5:printf("E\n\n");break;case 6:printf("D\n\n");break;case 7:printf("C\n\n");break;case 8:printf("B\n\n");break;case 9:case 10:printf("A\n\n");break;}}5-7#include <iostream>#include <math.h>void main(){int a,b,c,i,j,n;printf("输入五位正整数\n\n");scanf("%d",&a);printf("\n\n");c=a;for(i=1;;i++){b=c%10;c=c/10;printf("%d",b);if(c==0){printf("\n\n");printf("正整数为%d位数\n\n",i);break;}}c=a;for(j=i-1;j>=0;j--){n=pow(10,j);b=c/n;c=c%n;printf("%d\n",b);}}5-8if语句:#include <iostream>void main(){int I;float bonus;printf("输入当月利润I\n\n");scanf("%d",&I);if(I<=100000) bonus=I/10;else if(I<=200000) bonus=10000+(I-100000)*7.5/100;else if(I<=400000) bonus=10000+7500+(I-200000)*5/100;else if(I<=600000) bonus=10000+7500+10000+(I-400000)*3/100;else if(I<=1000000)bonus=10000+7500+10000+6000+(I-600000)*1.5/100;else bonus=10000+7500+10000+6000+6000+(I-1000000)*1/100; printf("应发奖金数为:%f\n\n",bonus);}switch语句:#include <iostream>void main(){int I,n;float bonus;printf("输入当月利润I\n\n");scanf("%d",&I);if(I>1000000) n=10;else n=I/100000;switch(n){case 0:bonus=I/10;break;case 1:bonus=10000+(I-100000)*7.5/100;break;case 2:case 3:bonus=10000+7500+(I-200000)*5/100;break;case 4:case 5:bonus=10000+7500+10000+(I-400000)*3/100;break;case 6:case 7:case 8:case 9:bonus=10000+7500+10000+6000+(I-600000)*1.5/100;break;case 10:bonus=10000+7500+10000+6000+6000+(I-1000000)*1/100;break; }printf("应发奖金数为:%f\n\n",bonus);}5-9#include <iostream>void main(){int a,b,c,d,temp,min;printf("输入四个数a,b,c,d\n\n");scanf("%d%d%d%d",&a,&b,&c,&d);if(a>b){temp=a;a=b;b=temp;}if(a>c){temp=a;a=c;c=temp;}if(a>d){temp=a;a=d;d=temp;}printf("由小到大排列为:\n\n"); printf("%d ",a);if(b>c){temp=b;b=c;c=temp;}if(b>d){temp=b;b=d;d=temp;}printf("%d ",b);if(c>d){temp=c;c=d;d=temp;}printf("%d ",c);printf("%d",d);}5-10#include <iostream>#include <math.h>void main(){float x,y,a,b,c,d;printf("输入点的坐标\n\n");scanf("%f%f",&x,&y);a=sqrt((2-x)*(2-x)+(2-y)*(2-y));b=sqrt((2-x)*(2-x)+(-2-y)*(-2-y));c=sqrt((-2-x)*(-2-x)+(-2-y)*(-2-y));d=sqrt((-2-x)*(-2-x)+(2-y)*(2-y));if(a<=1||b<=1||c<=1||d<=1) printf("该点建筑高度为:10m"); else printf("该点建筑高度为:0m");}第六章:6-1#include <iostream>#include <math.h>void main(){int m,n,max,min,i,k;printf("输入两个正整数\n\n");scanf("%d%d",&m,&n);if(m>n) k=n;else k=m;for(i=1;i<=k;i++){if((m%i==0)&&(n%i==0)) max=i;}printf("最大公约数为:%d\n\n",max);if(m>n) k=m;else k=n;for(i=k;;i++){if((i%m==0)&&(i%n==0)){min=i;break;}}printf("最小公倍数为:%d\n\n",min);}6-2#include <iostream>void main(){char c;int l=0,b=0,n=0,e=0;printf("输入一行字符\n\n");while((c=getchar())!='\n'){if((c>='a'&&c<='z')||(c>='A'&&c<='Z')) l+=1;else if(c==' ') b+=1;else if(c>=48&&c<=57) n+=1;else e+=1;}printf("英文字母个数为:%d\n\n空格个数为:%d\n\n数字个数为:%d\n\n其他字符个数为:%d\n\n",l,b,n,e);}6-3#include <iostream>#include <math.h>void main(){int n,k,i;float a,s=0;printf("输入n和a\n\n"); scanf("%d%f",&n,&a);for(i=0;i<n;i++){k=pow(10,i);s=s+(n-i)*a*k;}printf("和s=%f\n\n",s); }6-4#include <iostream>void main(){int n,s,S=0,i,j;printf("输入n\n\n"); scanf("%d",&n);for(i=1;j<=n;i++){s=1;for(j=1;j<=i;j++){s=s*j;}S+=s;}printf("和S=%d\n\n",S); }6-5#include <iostream>void main(){int i,m,n,t;int s1=0,s2=0;float s3=0,s,l;printf("输入m,n,t的值\n\n"); scanf("%d%d%d",&m,&n,&t);for(i=1;i<=m;i++){s1+=i;}for(i=1;i<=n;i++){s2+=i*i;}for(i=1;i<=t;i++){l=1.0/i;s3+=l;}s=s1+s2+s3;printf("和s=%f",s);}6-6#include <iostream>void main(){int m,n,k,i,j;printf("水仙花数为:\n");for(i=100;i<=999;i++){j=i;m=j%10;j=j/10;n=j%10;k=j/10;if(i==m*m*m+n*n*n+k*k*k) printf("%d ",i); }}6-7#include <iostream>#include <math.h>void main(){int i,j,k,s;for(i=1;i<=1000;i++){s=0;for(j=1;j<i;j++){if(i%j==0) s+=j;}if(s==i){printf("\n\n");printf("%d its factors are ",i);for(j=1;j<i;j++){if(i%j==0) printf("%d ",j);}}}}6-8#include <iostream>void main(){int n,i;float f1,f2,s,temp;printf("输入n\n\n");scanf("%d",&n);f1=2.0;f2=3.0;s=f1;for(i=1;i<=n-1;i++){s+=f2/f1;temp=f2;f2=f1+f2;f1=temp;}printf("前%d项和为%f",n,s);}6-9#include <iostream>#include <math.h>void main(){int i,n,l=100;float m,s=0;printf("输入n\n\n");scanf("%d",&n);m=l;for(i=1;i<=n;i++){s+=2*m;m=m*0.5;}printf("第%d次落地时经过%f米\n\n",n,s-l); printf("第%d次落地后反弹%f米\n\n",n,m); }6-10void main(){int m=1,n,i;printf("输入n\n\n");scanf("%d",&n);for(i=1;i<n;i++){m=(m+1)*2;}printf("一共摘了%d个桃子\n\n",m);}6-11#include <iostream>#include <math.h>void main(){float a,x1,x2;printf("输入a\n\n");scanf("%f",&a);x1=a/2;loop:x2=(x1+a/x1)/2;if(fabs(x1-x2)>1e-5){x1=x2;goto loop;}else printf("\n\na的平方根为%f\n\n",x2); }6-12#include <math.h>void main(){float f(float);float xpoint(float,float);float root(float,float);float x,x1,x2,f1,f2;do{printf("输入x1,x2\n\n");scanf("%f%f",&x1,&x2);f1=f(x1);f2=f(x2);}while(f1*f2>0);x=root(x1,x2);printf("方程在1.5附近的根为:%f\n\n",x); }float f(float x){float y;y=2*x*x*x-4*x*x+3*x-6;return(y);}float xpoint(float x1,float x2){float y;y=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1)); return(y);}float root(float x1,float x2){float x,y,y1;y1=f(x1);do{x=xpoint(x1,x2);y=f(x);if(y*y1>0){y1=y;x1=x;}elsex2=x;}while(fabs(y)>1e-4);return(x);}6-13#include <iostream>#include <math.h>void main(){float f(float);float root(float,float);float x,x1,x2,f1,f2;do{printf("输入x1,x2\n\n");scanf("%f%f",&x1,&x2);f1=f(x1);f2=f(x2);}while(f1*f2>0);x=root(x1,x2);printf("方程的根为:%f\n\n",x); }float f(float x){float y;y=2*x*x*x-4*x*x+3*x-6;return(y);}float root(float x1,float x2){float x,y;do{y=f((x1+x2)/2);if(y<-1e-4){x1=(x1+x2)/2;}else if(y>1e-4){x2=(x1+x2)/2;}else x=(x1+x2)/2;}while(fabs(y)>1e-4);return(x);}6-14#include <iostream>void 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");}}6-15#include <iostream>void main(){char i,j,k;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("\nA--%c\nB--%c\nC--%c\n",i,j,k);}}}}第七章7-1#include <iostream>#include <math.h>void main(){int i,j;int a[101];printf("素数为:\n\n");for(i=1;i<=100;i++){a[i]=i;}for(i=3;i<=100;i++){for(j=2;j<=sqrt(a[i]);j++){if(a[i]%j==0){a[i]=0;break;}}}for(i=2;i<=100;i++){if(a[i]!=0) printf("%d ",a[i]); }}7-2#include <iostream>void main(){int a[10],i,j,temp;printf("输入10个整数\n\n");for(i=0;i<10;i++){scanf("%d",&a[i]);}for(i=0;i<10;i++){for(j=i+1;j<10;j++){if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}}printf("排序后的输出为:\n\n"); for(i=0;i<10;i++){printf("%d ",a[i]);}printf("\n\n");}7-3#include <iostream>void main(){int a[9],i,s=0;printf("输入一个3*3整型矩阵\n\n"); for(i=0;i<9;i++){scanf("%d",&a[i]);}for(i=0;i<9;i+=4){s+=a[i];}printf("对角线元素之和为:%d\n\n",s); }7-4#include <iostream>void main(){int a[11]={1,2,3,4,5,6,7,8,9,10};int i,j,n,temp1,temp2;printf("输入一个数n\n\n");scanf("%d",&n);if((a[0]-a[9])>0){if(n<=a[9]){a[10]=n;}else{for(i=0;i<10;i++)if(a[i]<n){temp1=a[i];a[i]=n;for(j=i+1;j<11;j++){temp2=a[j];a[j]=temp1;temp1=temp2;}break;}}}}if((a[9]-a[0])>0){if(n>=a[9]){a[10]=n;}else{for(i=0;i<10;i++){if(a[i]>n){temp1=a[i];a[i]=n;for(j=i+1;j<11;j++){temp2=a[j];a[j]=temp1;temp1=temp2;}break;}}}for(i=0;i<11;i++){printf("%d ",a[i]);}}7-5#include <iostream>#define N 5void main(){int a[N];int i,temp;printf("输入5个个数\n\n"); for(i=0;i<N;i++){scanf("%d",&a[i]);}for(i=0;i<=N/2;i++){temp=a[i];a[i]=a[N-i-1];a[N-i-1]=temp;}for(i=0;i<N;i++){printf("%d ",a[i]);}printf("\n\n");}7-6#include <iostream>#include <stdio.h>void main(){int a[10][10]={1};int i,j;for(i=1;i<10;i++){for(j=0;j<=i;j++){a[i][0]=a[i-1][0];a[i][j]=a[i-1][j-1]+a[i-1][j];}}for(i=0;i<10;i++){for(j=0;j<=i;j++){printf("%4d",a[i][j]);}printf("\n\n");}}7-7#include <iostream>#define N 7void main(){int a[N][N]={0};int i,j,k;i=0;j=(N-1)/2;a[i][j]=1;for(k=2;k<=N*N;k++) {i=i-1;j=j+1;if((i<0)&&(j>N-1)){i=i+2;j=j-1;}else{if(i<0) i=N-1;if(j>N-1) j=0;}if(a[i][j]==0){a[i][j]=k;}else{i=i+2;j=j-1;a[i][j]=k;}}for(i=0;i<N;i++){for(j=0;j<N;j++){printf("%4d",a[i][j]);}printf("\n\n");}}7-8#include <iostream>void main(){int a[4][4],i,j,max,min,k1,k2,flag; printf("输入一个4*4的数组\n\n"); for(i=0;i<4;i++){for(j=0;j<4;j++){scanf("%d",&a[i][j]);}}printf("鞍点为:\n\n");for(i=0;i<4;i++){max=a[i][0];for(j=0;j<4;j++){if(max<=a[i][j]){max=a[i][j];k1=j;}}min=a[0][k1];for(j=0;j<4;j++)if(min>=a[j][k1]){min=a[j][k1];k2=j;}}if((max!=min)) flag=0;else{flag=1;printf("%d\n",max);break;}}if(flag==0) printf("不存在\n\n");}7-9#include <iostream>void main(){float a[15]={100,98,65,55,34,23,23,12,11,9,7,6,4,3,2},n; int i,low,high,mid;printf("原数组为:\n\n");for(i=0;i<15;i++){printf("%6.2f",a[i]);}printf("\n\n输入一个数n\n\n");scanf("%f",&n);low=0;high=14;while(low<=high){mid=(low+high)/2;if(a[mid]==n){printf("该数是数组中第%d个元素\n\n",mid+1);i++;break;}else if(a[mid]<n) high=mid-1;else low=mid+1;}if(i==0) printf("无此数!!\n\n");}7-10#include <iostream>void main(){char a[3][80];int i,j,upon=0,low=0,num=0,spa=0,oth=0;for(i=0;i<3;i++){printf("输入第%d行文字\n\n",i);gets(a[i]);for(j=0;j<80&&a[i][j]!='\0';j++){if(a[i][j]>='A'&&a[i][j]<='Z') upon+=1;else if(a[i][j]>='a'&&a[i][j]<='z') low+=1;else if(a[i][j]>=48&&a[i][j]<=57) num+=1;else if(a[i][j]==' ') spa+=1;else oth+=1;}printf("英文大写字母:%d个\n\n",upon);printf("英文小写字母:%d个\n\n",low);printf("数字: %d个\n\n",num); printf("空格: %d个\n\n",spa); printf("其他字符: %d个\n\n",oth);}7-11#include <iostream>void main(){int i,j;for(i=0;i<5;i++){for(j=0;j<=i;j++){printf(" ");}for(j=i;j<i+5;j++){printf("* ");}printf("\n");}}7-12#include <iostream>void main(){char a[80],b[80];int i,j;printf("输入密码\n\n");gets(a);for(i=0;i<80&&a[i]!='\0';i++){if((a[i]>='A')&&(a[i]<='Z')){b[i]=155-a[i];}else if((a[i]>='a')&&(a[i]<='z')){b[i]=219-a[i];}else b[i]=a[i];}b[i]='\0';printf("密文为:\n\n");puts(a);printf("原文为:\n\n");puts(b);}7-13#include <iostream>void main(){char a[80],b[80];int i,j,k;printf("输入第1个字符串\n\n");gets(a);printf("输入第2个字符串\n\n");gets(b);for(i=0;i<80;i++){if(a[i]=='\0'){k=i;for(j=0;j<80&&b[j]!='\0';j++){a[k]=b[j];k++;}a[k]='\0';break;}}printf("连接后字符串为:\n\n");puts(a);}7-14#include <iostream>void main(){char a[80],b[80];int i,j,k;printf("输入第1个字符串\n\n");gets(a);printf("输入第2个字符串\n\n");gets(b);for(i=0;(i<80)&&(a[i]!='\0')&&(b[i]!='\0');i++) {k=a[i]-b[i];if(k>0){printf("\n\n字符串a大于字符串b:%4d\n\n",k);break;}else if(k<0){printf("\n\n字符串a小于字符串b:%4d\n\n",k);break;}else k=0;}if(k==0) printf("\n\n字符串a等于字符串b:%4d\n\n",k); }7-15#include <iostream>void main(){char s1[80],s2[80];int i,j;printf("输入数组s1\n\n");gets(s1);printf("输入数组s2\n\n");gets(s2);for(i=0;i<80&&s2[i]!='\0';i++){s1[i]=s2[i];}s1[i]='\0';printf("\n\n复制后的数组为:\n\n");puts(s1);}第八章8-1#include <iostream>void main(){int max_div(int,int);int min_mul(int,int);int m,n;printf("输入两个整数\n\n");scanf("%d%d",&m,&n);if(max_div(m,n)==0) printf("\n\n无最大公约数为\n\n"); else printf("\n\n最大公倍数为:%d\n\n",max_div(m,n)); printf("\n\n最大公倍数为:%d\n\n",min_mul(m,n));}int max_div(int k1,int k2){int min(int,int);int i,k,flag;k=min(k1,k2);for(i=k;i>1;i--){if((k1%i==0)&&(k2%i==0)){return(i);flag=1;break;}else flag=0;}if(flag==0) return(0);}int min_mul(int k1,int k2){int max(int,int);int i,k;k=max(k1,k2);for(i=k;;i++){if((i%k1==0)&&(i%k2==0)){return(i);}}}int min(int k1,int k2){int min;min=k1;if(k1>k2) min=k2;return(min);}int max(int k1,int k2){int max;max=k1;if(k1<k2) max=k2;return(max);}8-2#include <iostream>#include <math.h>void main(){void root1(float,float,float);void root2(float,float,float);void root3(float,float,float);float a,b,c,k;printf("输入a,b,c的值\n\n");scanf("%f%f%f",&a,&b,&c);k=b*b-4*a*c;if(k>0) root1(a,b,c);else if(k==0) root2(a,b,c);else root3(a,b,c);}void root1(float a,float b,float c){float p,q;p=-b/(2*a);q=sqrt(b*b-4*a*c)/(2*a);printf("\n\n方程的两个根为:x1=%6.2f,x2=%6.2f\n\n",p+q,p-q); }void root2(float a,float b,float c){p=-b/(2*a);printf("\n\n方程的两个根为:x1=x2=%6.2f\n\n",p);}void root3(float a,float b,float c){float p,q;p=-b/(2*a);q=sqrt(-b*b+4*a*c)/(2*a);printf("\n\n方程的两个根为:x1=%6.2f+%6.2fi,x2=%6.2f-%6.2fi\n\n",p,q,p,q); }8-3#include <iostream>void main(){int prime(int);int x;printf("输入一个正整数\n\n");scanf("%d",&x);if(prime(x)==0) printf("\n\n此数为素数\n\n");else printf("\n\n此数不是素数\n\n");}int prime(int x){int i,flag;for(i=2;i<x;i++){if(x%i==0){flag=1;break;}else flag=0;}return(flag);}8-4#include <iostream>void main(){void exchange(int a[3][3]);int a[3][3],i,j;printf("输入一个3*3的矩阵\n\n"); for(i=0;i<3;i++){for(j=0;j<3;j++){scanf("%d",&a[i][j]);}}exchange(a);printf("\n\n转置后的矩阵为:\n\n"); for(i=0;i<3;i++){for(j=0;j<3;j++){printf("%d ",a[i][j]);}printf("\n");}}8-5#include <iostream>void main(){void exchange(char str[]);char str[80];printf("输入一个字符串\n\n");gets(str);exchange(str);printf("\n\n反序字符串为:\n\n"); puts(str);}void exchange(char str[]){int i,j,k;char temp;for(i=0;;i++){if(str[i]=='\0') break;}k=i/2;for(j=0;j<=k;j++){temp=str[j];str[j]=str[i-1-j];str[i-1-j]=temp;}str[i]='\0';}8-6#include <iostream>void main(){void strcat(char str1[],char str2[]);char str1[80],str2[80];printf("输入str1\n\n");gets(str1);printf("\n\n输入str2\n\n");gets(str2);strcat(str1,str2);printf("\n\n连接后的字符串为:\n\n"); puts(str1);}void strcat(char str1[],char str2[]){int i,j;for(i=0;;i++){if(str1[i]=='\0'){for(j=0;str2[j]!='\0';j++){str1[i]=str2[j];i+=1;}break;}}str1[i]='\0';}8-7#include <iostream>void main(){void strcpy(char str1[],char str2[]);char str1[80],str2[80];printf("输入str2\n\n");gets(str2);strcpy(str1,str2);printf("\n\n复制后的字符串为:\n\n");puts(str1);}void strcpy(char str1[],char str2[]){int i,j=0;for(i=0;str2[i]!='\0';i++){if((str2[i]=='a')||(str2[i]=='e')||(str2[i]=='i')||(str2[i]=='o')||(str2[i]=='u')) {str1[j]=str2[i];j++;}}str1[j]='\0';}8-8#include <iostream>void main(){void stradd(char str[]);char str[80];printf("输入一串数字\n\n");gets(str);stradd(str);printf("\n\n加空格后的字符串\n\n");puts(str);}void stradd(char str[]){char a[80];int i=0,j;for(j=0;str[j]!='\0';j++){a[i]=str[j];a[i+1]=' ';i+=2;}a[i]='\0';for(i=0;a[i]!='\0';i++){str[i]=a[i];}str[i]='\0';}8-9#include <iostream>void main(){void num(char str[],int a[]);char str[80];int a[4]={0};printf("输入一个字符串\n\n");gets(str);num(str,a);printf("字母个数为:%d\n",a[0]);printf("数字个数为:%d\n",a[1]);printf("空格个数为:%d\n",a[2]);printf("其它字符个数为:%d\n",a[3]);}void num(char str[],int a[]){int i,word=0,num=0,span=0,oth=0;for(i=0;str[i]!='\0';i++){if((str[i]>='A'&&str[i]<='Z')||(str[i]>='a'&&str[i]<='z')) word+=1; else if(str[i]>=48&&str[i]<=57) num+=1;else if(str[i]==' ') span+=1;else oth+=1;}a[0]=word;a[1]=num;a[2]=span;a[3]=oth;}8-10#include <iostream>void main(){int word(char c);int longest(char str[]);int i;printf("输入一行字符串\n\n");gets(str);printf("\n\n最长的单词为:\n\n");for(i=longest(str);word(str[i]);i++)printf("%c",str[i]);printf("\n");}int word(char c){if((c>='a'&&c<='z')||(c>='A'&&c<='Z')) return 1; else return 0;}int longest(char str[]){int i,flag=1,len=0,point,max_len=0,max_point; for(i=0;i<=strlen(str);i++){if(word(str[i])){if(flag==1){point=i;flag=0;}else len++;}else{flag=1;if(len>max_len){max_len=len;max_point=point;}len=0;}}return (max_point);}8-11#include <iostream>{char str[80];void sort(char str[]);printf("输入一个字符串\n\n");gets(str);sort(str);printf("\n\n字符由小到大排序为:\n\n");puts(str);}void sort(char str[]){int i,j;char temp;for(i=0;i<strlen(str);i++){for(j=0;j<strlen(str)-i-1;j++){if(str[j]>str[j+1]){temp=str[j];str[j]=str[j+1];str[j+1]=temp;}}}}8-12#include <iostream>#include <math.h>void main(){int a,b,c,d;float root(int a,int b,int c,int d);printf("输入a,b,c,d\n\n");scanf("%d%d%d%d",&a,&b,&c,&d);printf("\n\n在1附近的根为:%f\n\n",root(a,b,c,d)); }float root(int a,int b,int c,int d){float x=1,x1,f,f1;do{x1=x;f=((a*x1+b)*x1+c)*x1+d;f1=(a*x1+b)*x1+c;x=x1-f/f1;}while(fabs(x-x1)>=1e-5);return(x);}8-13#include <iostream>void main(){float p(int,float);int n;float x;printf("输入n和x\n\n");scanf("%d%f",&n,&x);printf("\n\n%d阶勒德让多项式的值为:%f\n\n",n,p(n,x)); }float p(int n,float x){if(n==0) return 1;else if(n==1) return x;else return ((2*n-1)*x-p(n-1,x)-(n-1)*p(n-2,x))/n;}8-14#include <iostream>#define n1 2#define n2 5float a_stu[n1],a_cou[n2];void main(){void input(float a[][n2]);void stu_aver(float a[][n2]);void cou_aver(float a[][n2]);int hightest(int *s,int *c,float a[][n2]);float d(float a[][n2]);int i,j,s=0,c=0;float score[n1][n2],h;input(score);stu_aver(score);cou_aver(score);printf("\n\n 序号课程1 2 3 4 5 平均成绩\n\n");for(i=0;i<n1;i++){printf(" NO.%d ",i+1);for(j=0;j<n2;j++){printf("%8.2f",score[i][j]);}printf("%8.2f\n\n",a_stu[i]);}printf("课程平均");for(i=0;i<n2;i++){printf("%8.2f",a_cou[i]);}h=hightest(&s,&c,score);printf("\n\n最高成绩为:%f 是第%d号学生,第%d门课的成绩\n\n",h,s,c); printf("平均方差为:%f\n\n",d(score));}void input(float a[][n2]){int i,j;for(i=0;i<n1;i++){printf("\n\n输入%d个学生的5个成绩\n\n",i+1);for(j=0;j<n2;j++){scanf("%f",&a[i][j]);}}}void stu_aver(float a[][n2]){int i,j;float s;for(i=0;i<n1;i++){s=0;for(j=0;j<n2;j++){s+=a[i][j];}a_stu[i]=s/n2;}void cou_aver(float a[][n2]){int i,j;float s;for(i=0;i<n2;i++){s=0;for(j=0;j<n1;j++){s+=a[j][i];}a_cou[i]=s/n1;}}int hightest(int *s,int *c,float a[][n2]) {float hightest=0;int i,j;for(i=0;i<n1;i++){for(j=0;j<n2;j++){if(a[i][j]>hightest){hightest=a[i][j];*s=i+1;*c=j+1;}}}return(hightest);}float d(float a[][n2]){int i;float x=0,y=0;for(i=0;i<n1;i++){x+=a_stu[i]*a_stu[i];y+=a_stu[i];}return(x/n1-(y/n1)*(y/n1));8-15#include <iostream>#define N 3void main(){void input(int num[],char name[N][8]);void sort(int num[],char name[N][8]);void search(int num[],char name[N][8],int n); int flag,n,num[N];char c,name[N][8];input(num,name);sort(num,name);for(flag=1;flag;){printf("输入要查找的职工号\n\n");scanf("%d",&n);search(num,name,n);printf("是否继续查找?Y/N ?\n\n");c=getchar();if(c=='N'||c=='n') flag=0;}}void input(int num[],char name[N][8]){int i;for(i=0;i<N;i++){printf("输入职工号\n\n");scanf("%d",&num[i]);printf("输入职工姓名\n\n");getchar();gets(name[i]);}}void sort(int num[],char name[N][8]){int i,j,min,temp1;char temp2[8];for(i=0;i<N;i++){min=i;。

c程序设计第三版习题参考解答(全).

c程序设计第三版习题参考解答(全).

3.12 出下面表达式运算后 a 的值,设原来 a=12。设 a 和 n 都已定义为整型变量。 (1)a+=a (3)a*=2+3 (5)a%=(n%=2),n 的值等于 5 (2)a-=2 (4)a/=a+a (6)a+=a-=a*=a
解: (1)24 (3)60 (5)0 (2)10 (4)0 (6)0
注:如果没有学过二进制和补码,此题可以不做。
解:各数据在内存中的存储形式如下表所示: 变量的类型 int 型 long 型 short 型 signed char(8 位) unsigned int 型 unsigned long 型 unsigned short 型 unsigned char 型
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); }
第 4 章 最简单的 C 程序设计——顺序程序 设计
4.4 若 a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51247,n=128765,c1=’a’,c2=’b’, 想得到以下的输出格式和结果,请写出程序(包括定义变量类型和设计输出) 。 要求输出的结果如下: a=□3□□b=□4□□c=□5 x= 1.200000,y= 2.400000,z= -3.600000 x+y=□3.60□□y+z=-1.20□□z+x=-2.40 u= □51247□□n=□□□128765 c1=‟a‟□or□97(ASCII) c2=‟b‟□or□98(ASCII) 解: main ( ) { int a,b,c; long int u,n; float x,y,z; char c1,c2; a=3;b=4;c=5; x=1.2;y=2.4;z= -3.6; u=51247;n=128765; c1=‟a‟;c2=‟b‟; printf(“\n”); printf(“a=%2d□□b=%2d□□c=%2d\n”,a,b,c); printf(“x=%.6f,y=%.6f,z=%.6f\n”,x,y,z); printf(“x+y=□%.2f□□y+z=%.2f□□z+x=%.2f\n”,x+y,y+z,z+x); printf(“u=%6ld□□n=%9ld\n”,u,n); printf(“c1=‟%c‟ or %d(ASCII)\n”,c1,c1); printf(“c2=‟%c‟ or %d(ASCII)\n”,c2,c2); }

c程序设计第三版习题参考解答(全)

c程序设计第三版习题参考解答(全)

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将以下三各整数分别赋给不同类型的变量,请画出赋值后数据在内存中的存储形式。

注:如果没有学过二进制和补码,此题可以不做。

解:各数据在内存中的存储形式如下表所示:变量的类型25 -2 32769int型00 (000011001)8 位111111111111111015100 … 001(溢出)14long型00 (000011001)24 11 (1110)3100... 0100 (001)16 14short型100 (000011001)8 111111111111111015100 … 001(溢出)14signed char(8位)100011001 11111110 00000001(溢出)unsigned int型00 (000011001)8 11 (110)15100 (001)14unsigned long型00 (000011001)24 11 (110)3100... 0100 (001)16 14unsigned short型00 (000011001)8 11 (110)15100 (001)8unsigned char型00011001 11111110 00000001其中int和short类型,其取值范围是-32768~32767。

C程序设计第三版课后习题答案全解

C程序设计第三版课后习题答案全解
}
5.5
#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,y);
}
}
5.6程序如下:
#include <stdio.h>
main()
{ float score;
char grade;
scanf("_x=%f_y=%e",&x,&y);
scanf("_c1=%c_c2=%c",&c1,&c2);
}
a=3_b=7
_x=8.5_y=71.82
_c1=A_c2=a
4.8
main()
{float r,h,C1,Sa,Sb,Va,Vb;
scanf("%f,%f",&r,&h);
C1=2*3.14*r;
printf("%d%d%d%d\n",indiv,ten,hundred,thousand);

C语言程序设计习题答案(第三版)

C语言程序设计习题答案(第三版)

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. 编写程序,从键盘输入一个以秒为单位的时间数,将其换算成几小时几分几秒,然后进行输出。

c语言程序设计(第3版)的习题答案

c语言程序设计(第3版)的习题答案

c语言程序设计(第3版)的习题答案c语言程序设计(第3版)的习题答案本文为《c语言程序设计(第3版)》中的习题答案汇总,旨在帮助读者更好地理解和掌握该教材。

以下是各章节习题的详细解答:第1章:计算机概述习题1:答案:计算机是一种能够接受输入数据、对其进行逻辑和算术运算,并产生输出结果的电子设备。

习题2:答案:计算机主要由中央处理器(CPU)、主存储器、输入设备和输出设备四个主要部分组成。

......第2章:c语言概述习题1:答案:C语言是一种通用的高级编程语言,由贝尔实验室的Dennis Ritchie于1972年开发。

习题2:答案:C语言的特点包括高效性、可移植性、灵活性和丰富的操作符与控制语句。

......第3章:数据类型、运算符和表达式习题1:答案:C语言中的基本数据类型包括int、float、double、char等。

习题2:答案:C语言中的运算符包括算术运算符、关系运算符、逻辑运算符等。

......第4章:程序控制结构习题1:答案:C语言中的程序控制结构主要包括顺序结构、选择结构和循环结构。

习题2:答案:顺序结构是指程序按照语句的顺序依次执行,没有分支和循环。

......第5章:函数习题1:答案:C语言中的函数由函数头和函数体组成。

习题2:答案:函数的定义包括函数名、返回类型、参数列表和函数体。

......第6章:数组和字符串习题1:答案:数组是一组相同类型的数据元素的集合。

习题2:答案:C语言中的字符串是以空字符'\0'结尾的字符数组。

......第7章:指针习题1:答案:指针是用来存储另一个变量的地址的变量。

习题2:答案:指针变量可以通过取地址运算符(&)获取普通变量的地址。

......第8章:结构和共用体习题1:答案:结构是由不同数据类型的成员组成的复合类型。

习题2:答案:共用体(union)是一种特殊的数据类型,它可以存储不同类型的数据,但在同一时间只能存储其中的一种。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言程序设计课后习题参考答案
习题一
一、单项选择题
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
4、C
5、A
6、D
7、B
8、D
9、B 10、C 11、A 12、D 13、C 14、B 15、C 16、A
17、B 18、C 19、C 20、D 21、A 22、D 23、D 24、D、A
25、D 26、A
二、填空题
1、补码
2、10^-138~10^138、15~16
3、实
4、单目运算符、自右向左
5、函数调用
6、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、-200 2500、i=-200,j=2500回车、i=-200回车j=2500回车
4、a=98,b=765.000000,c=4321.000000
5、100 25.81 1.89234、100,25.81,1.89234、100回车25.81回车1.89234回车
6、0,0,3
7、3
8、scanf(“%lf %lf %lf”,&a,&b,&c);
9、13 13.000000 13.000000
10、c=b-a;a=b+c;
习题五
一、单项选择题
1、B
2、D
3、C
4、B
5、B
6、D
7、A
8、B
9、D
二、填空题
1、1 、0
2、k!=0
3、if(x>4||x<-4)printf(“%d”,x);
else printf(“error!”);
4、if(((x>=1&&x<=10)||(x>=200&&x<=210))&&(x%2!=0))
Printf(“%d”,x);
5、1
6、1
7、10!
Right!
8、a=0
9、2,1
10、0<a<b
习题六
一、单项选择题
1、B
2、C
3、C
4、B
5、C
6、B
7、C
8、A
二、填空题
1、无穷次
2、8
3、20
4、11
5、3.6
6、*#*#*#$
7、8 5 2
8、d=1.0 、k++、k<=n
9、!(x<0)、x<amin
习题七
一、单项选择题
1、B
2、D
3、C
4、C
5、A
6、A
7、D
8、A
二、填空题
1、1 2 4 8 16 32 64 128 256 512
2、a[age]++、i=18;i<26
3、break、i==8
4、a[i]>b[i]、i<3、j<5
5、b[j]=0、b[j]=a[j][k]
习题八
一、单项选择题
1、B
2、C
3、C
4、A
5、A
6、A
7、C
8、D
9、D 10、B 11、A 12、C 13、A 14、C 15、B
二、填空题
1、return 1、return n+sum(n-1)
2、return 1、n*facto(n-1)
习题九
一、单项选择题
1、D
2、C
3、D
4、A
5、C
6、C
7、C
8、C
9、B 10、C 11、A 12、C 13、B 14、A 15、D 16、B
17、C 18、A 19、B 20、C
二、填空题
1、int 、return z
2、*p++
3、’\0’、++
4、p、max<*q、min>*q
习题十
一、单项选择题
1、D
2、D
3、A
4、
5、B
6、A
7、C
8、B
9、D 10、11、C 12、D 13、D 14、C
二、填空题
1、34 12
2、ARRAY a[10],b[10],c[10];
3、2 3
4、ab、cd
5、(*b).day、b->day
6、ad
abc def
ghi mno
hi no
7、(struct node *)、!=’\n’、p=top;
8、p1=p1->next
9、(struct list *)、(struct list *)、return (n)
习题十一
一、单项选择题
1、A
2、A
3、B
4、A
5、B
6、D
7、B
8、A
9、A 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、fputc()、fputs()、fscanf()、fread()
4、(后两个空)文件结束符、非0值。

相关文档
最新文档