《C语言程序设计教程》(第三版)课后习题参考答案(精选5篇)[修改版]
- 格式:docx
- 大小:33.15 KB
- 文档页数:58
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语言概述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语言概述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语言概述习题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语言程序设计教程第三版习题答案第一章: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程序,输出“Hello, World!”答案:```c#include <stdio.h>int main() {printf("Hello, World!\n");return 0;}```2. 请编写一个C程序,输入两个整数并求和。
答案:```c#include <stdio.h>int main() {int num1, num2, sum;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("两数之和为:%d\n", sum);return 0;}```3. 请编写一个C程序,输入一个半径,计算并输出对应圆的周长和面积。
答案:```c#include <stdio.h>#define PI 3.14159int main() {double radius, circumference, area;printf("请输入圆的半径:");scanf("%lf", &radius);circumference = 2 * PI * radius;area = PI * radius * radius;printf("圆的周长为:%lf\n", circumference);printf("圆的面积为:%lf\n", area);return 0;}```第二章:条件与循环习题答案1. 请编写一个C程序,判断一个整数是否是偶数。
答案:```c#include <stdio.h>int main() {int number;printf("请输入一个整数:");scanf("%d", &number);if (number % 2 == 0) {printf("%d 是偶数。
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概述和程序设计基本原则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语言基础知识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语言概述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程序设计(第三版)答案-谭浩强程序是在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程序设计(第三版)课后习题参考解答第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语言程序设计(第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请参照本章例题,编写一个c程序,输出以下信息:廿**廿***甘**廿**脊*并********甘**甘**Very good!甘**甘**************************解:程序如下所示。
番include <stdio.h> int main ()( printf ("**************************\n\n"); printf (" Very Good!\n\n");printf ("**************************\n n); return 0;运行结果如下:****************************** Very good!#******#**#******#**#***#**#**1.2编写一个C程序,输入a、b、c3个值,输出其中最大者。
解:程序如下所示。
番include <stdio.h>int main(){int a,b, c,max;printf ("please input a,b,c: \n");scanf %d",&a,Sb/ &c);max=a;if (max<b)max=b;if (max<c)max=c;printf ("The largest number is % d\n*\max);return 0;运行结果如下:please input a,b,c:38,93,-84The largest number is 931.3上机运行本章3个例题,熟悉所用系统的上机方法与步骤。
解:略。
1.4上机运行你为本章习题1.1和4题1.2所编写的程序。
解:略。
2. 1假如我国国民生产总值的年增长率为10%,汁界10年后我国国民生产总值与现在相比增长多少。
汁箅公式为:P=(l + r)n「为年增长率,〃为年数,P为与现在相比的百分比。
第一篇:《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、A二、填空题1、主2、C编译系统3、结构化4、程序5、面向对象方法6、.OBJ7、库函数8、直到型循环结构习题三一、单项选择题1、D2、B3、A4、C9、B10、C11、A12、D13、C17、B18、C19、C20、D21、A25、D26、A二、填空题1、补码2、10^-138~10^1 38、15~166、A7、B6、D7、B14、B15、C22、D8、C8、D16、A24、D、A3、实4、单目运算符、自右向左5、函数调用6、65,89习题四一、单项选择题1、D2、C3、D4、A5、D6、B7、A8、C9、B10、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、B二、填空题1、1 、02、k!=03、if(x>4||xelse printf(“error!”); 4、if(((x>=1&&x=200&&x Printf(“%d”,x);5、16、17、10! Right!8、a=09、2,110、0习题六一、单项选择题9、D1、B2、C3、C4、B5、C6、B7、C8、A二、填空题1、无穷次2、83、205、3.66、*#*#*#$7、828、d=1.0 、k++、k9、!(x习题七一、单项选择题1、B2、D3、C4、C5、A二、填空题1、1 2 4 8 16 32 64 128 256 5122、a[age]++、i=18;i3、break、i==84、a[i]>b[i]、i3、j5、b[j]=0、b[j]=a[j][k]习题八一、单项选择题1、B3、C4、A5、A9、D10、B11、A12、C13、A二、填空题1、return1、return n+sum(n-1)2、return1、n*facto(n-1)习题九一、单项选择题1、D2、C3、D4、A5、C9、B10、C11、A13、B17、C18、A19、B20、C二、填空题1、int 、return z2、*p++3、’\0’、++4、p、max*q6、A7、D6、A7、C14、C15、B6、C7、C14、A15、D8、A8、D8、C习题十一、单项选择题1、D2、D3、A4、5、B6、A7、C8、B9、D10、11、C12、D13、D14、C二、填空题1、34 122、ARRAY a[10],b[10],c[10];3、2 34、ab、cd5、(*b).day、b->day6、adghi mnohi no7、(struct node *)、!=’\n’、p=top;8、p1=p1->next9、(struct list *)、(struct list *)、return (n)习题十一一、单项选择题1、A2、A3、B4、A5、B9、A10、B11、B12、B13、C17、D二、填空题1、ASCII(文本)、二进制2、pf=fopen(“A:\zk04\data xfile.dat”,”w”);3、fputc()、fputs()、fscanf()、fread()4、(后两个空)文件结束符、非0值7、B14、C15、D8、A16、A第二篇:C语言程序设计教程课后习题参考答案《C语言程序设计教程》课后习题参考答案习题1 1. (1)编译、链接.exe (2)函数主函数(或main函数)(3)编辑编译链接2.(1)-(5):DDBBC (6)-(10):ABBBC 3.(1)答:C语言简洁、紧凑,使用方便、灵活;C语言是高级语言,同时具备了低级语言的特征;C 语言是结构化程序设计语言,具有结构化的程序控制语句;C语言有各种各样的数据类型;C语言可移植性好;生成目标代码质量高,程序执行效率高。
(2)编辑、编译、链接、执行(3)一个C程序由一或多个函数组成,一函数若干条语句构成,每条语句的末尾必须以分号结束。
(4)标识符,关键字,运算符,分隔符,常量,注释符等4. 从键盘输入一个双精度小数,打印出它的余弦值。
#include #include main( ) { double x; scanf(“%lf”, &x); printf(“%lf\n”, cos(x) ); }第2章1. (1)BDE、ACFG (2)D (3) C (4) C2.(1)错(2)错(3)错(4)对(5)错3.(1)a=3,b=-27 (2)a=11,b=6,c=6 (3)3 (4)1 0 1 0 1 1 0 (5)-9 9 8 (6)1)20 2)8 3)70 4)0 5)0 6)0 4. (1)#include main( ) { double r, h ,v; r = 2.5; h = 3.5; v = 3.14*r*r*h; printf(“v=%lf\n”, v); } (2) #include main( ) { char ch; ch = getchar( ); printf(“%c\n”, ch + 32); } (3) #include main( ) { printf(“*\n”); printf(“***\n”); printf(“*****\n”); printf(“*******\n”); } (4) #include main( ) { double x; scanf(“%lf”, &x); printf(“%d , %lf\n”, (int)x, x –(int)x ); } (5) #include main( ) { double a=3, b=5; double result = (-2 * a + ( 4*a –b )/( 2*a + b ) )/( (a32); }第4章1. (1)-(5):CAACA 2. (1)BBB (2)AAABBBCCC (3)end (4)d=20 (5)s=2,t=3 (6)firstthird (7)y=0 y=5 y=10 y=5 3. (1)y=‟A‟&& chch>=‟a‟&&chch = ch-32 (3)x>2&&xx>-1&&x main( ) { int x, y , z, t; scanf(“%d%d%d”, &x, &y, &z);if ( x>y ) { t=x; x=y; y=t; } if( x > z ) { t = x; x = z; z= t; } if( y > z ) { t = y; y= z; z = t; } printf(“%d %d %d\n”, x, y ,z); } (2) #include main( ) { int score; scanf(“%d”, &score);if ( score < 0 || score > 100 )printf(“成绩不合理\n”);else if( score>=90 )printf(“优秀\n”);else if( score>=80 )printf(“良好\n”);else if( score >= 70 )printf(“中等\n”);else if( score >= 60 )printf(“及格\n”);elseprintf(“不及格\n”); } (3) #include main( ) { int n; int g,s,b,q;//各位上的数值scanf(“%d”, &n);g = n%10; //个位s = n/10%10; //十位b = n/100%10; //百位q = n/1000%10; //千位if( n < 10 ) //一位数{printf(“%d\n”, 1);//位数printf(“%d\n”, g); //各位上的数值} else if ( n < 100 ) //两位数{printf(“%d\n”, 2);//位数printf(“%d %d\n”, g,s); } else if ( n < 1000 ) //三位数{printf(“%d\n”, 3);//位数printf(“%d %d %d\n”, g, s, b);} else if ( n < 10000 ) //四位数{printf(“%d\n”, 4);//位数printf(“%d %d %d %d\n”, g, s, b, q);} } (4) #include main( ) { int n; scanf(“%d”, &n);if( n % 3==0 && n%5==0 && n%7==0 )printf(“能同时被3、5、7整除\n”);else if( n%3==0 && n%5==0)printf(“能被3和5整除\n”);else if( n%3==0 && n%7==0 )printf(“能被3和7整除\n”);else if( n%5==0 && n%7==0 )printf(“能被5和7整除\n”);else if( n%3==0 || n%5==0 || n%7==0 ) {if( n%3==0 )printf(“能被3整除\n”);else if( n%5==0 )printf(“能被5整除\n”);elseprintf(“能被7整除\n”);} elseprintf(“不能被3、5、7中任一个数整除\n”); } (5) #include main( ) { intcarType;//车型。