C语言课后习题答案

更新时间:2023-10-28 17:40:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C语言课后习题答案

第一章 习题答案 一、选择题

1~5:BDCDA 6~10:DABBB 11~12:CC 二、填空题

1、main()

2、函数首部 ,函数体 3、函数

4、编辑、编译、连接、运行 5、.cpp、.obj、 .exe 6、; 或 分号 三、编程题

#include /* 包含标准库的信息 */

void main() /* 定义名为main 的函数,它不接受参数值 */ { /* main函数的语句都被括在花括号中 */ printf(\

/* main 函数调用库函数printf 以显示字符序列,其中\\n代表换行符 */ }

第二章 习题答案 一、选择题

1~5:CBABB 6~10:CDCDD 11~15:CADBC 16~20:BDAAD 二、填空题

1、整型,实型,字符型,枚举类型 2、1 3、9 4、12353514 5、2,1 6、2,2 7、10 20 0 8、a=14 9、2,3,1

10、double

第三章 习题答案

一、选择题

1~5:CBBBC 6~10:DDDBB 二、填空题

1、控制语句,表达式语句, 复合语句 2、 ; 3、{} 4、1 5、a

6、c:dec=120,oct=170,hex=78,ASCII=x 7、32767,32767 8、10,A,10 9、3 3 10、

(1) 123.456001

(2) □□□□□□□ 123.456 (3) 123.4560 (4) 8765.456700

(5) □□□□□□ 8765.457 (6) 8765.4567 (7) 8765.4567 三、编程题 1、参考答案: #include

void 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=51274;n=128765; c1='a';c2='b'; printf(\

printf(\ b=- c=-\\n\ printf(\

printf(\ y+z=%5.2f z+x=%5.2f\\n\

printf(\ n=%9ld\\n\

printf(\ printf(\ }

2、参考答案:

#include void main() {

float a, b, c, t;

printf(\ scanf (\ t=(a+b+c)/3;

printf (\、%6.2f and %6.2f }

3、参考答案: #include

main() {

int R, d; float s;

printf(\请输入圆的半径\ scanf(\ d=2*R;

c=2*3.14159*R;

printf(\ }

4、参考答案:

#include void main() {

int h, f, x, y; /* x为鸡的数量,y为兔的数量 */ printf(\请输入鸡兔的总头数h,总脚数 f:\ scanf(\ x=(4*h-f)/2; y=(f-2*h)/2;

printf(\笼中有鸡%d 只,有兔%d只。\\n\}

第四章 习题答案 一、选择题 CDDDD CDBBC 二、填空题

is %6.2f\\n\ 1、&&, || , !, ! , | | 2、(y%2 0) 3、1

4、(a+b>c&&a+c>b&&b+c>a) 5、2 3 3 6、7 三、编程题 1、参考答案: #include void main() { int x;

scanf( \

if (x%5 0 && x%7 0) printf(\ else

printf(\ }

2、参考答案: #include

void main( )

{ int a, b, c, max ;

printf (\请输入三个整数:%%d%%d%%d\\n\ scanf( \ if ( a>=b )

if ( a>=c ) max=a; else max=c; else

if ( b>=c ) max=b; else max=c;

printf (\最大数为:%d\\n\ }

3、参考答案: #include

void main ( ) {

float x , y ;

printf( \请输入x 的值:\

scanf( \ if (x<1) y=1; else if (x<10) y=2*x-1; else

y=3*x-11;

printf(\ }

4、参考答案: #include

void main( ) {

int year;

float money,rate,total; /* money:本金 rate:月利率 total:本利合计 */

printf(\

scanf(\ /* 输入本金和存款年限 */ if(year 1) rate=0.00315; /* 根据年限确定利率 */

else if(year 2) rate=0.00330; else if(year 3) rate=0.00345; else if(year 5) rate=0.00375; else if(year 8) rate=0.00420; else rate=0.0;

total=money + money * rate * 12 * year; /* 计算到期的本利合计 */ printf(\ }

第五章 习题答案 一、选择题 1~5: ACCBA 6~10:ACDCB 二、填空题

1、(1) i<=9 或 i<10 (2) j%3!=0 2、7

3、(1) ch=ch+1、(2) printf(\ 三、编程题 1、参考答案: #include

{ int a[11]={3,4,7,9,10,13,14,15,18,20}; int i,j,n;

scanf (\ i=0;

while (i<10) { if (n

for (j=10; j>i; j--) a[j]=a[j-1]; a[i]=n; break; } i++; }

if (i>=10) a[10]=n;

for (i=0;i<11;i++) printf(\ }

第八章 习题答案 一、选择题

1?5 A B C C B 6?10 D A C B B 11?15 D A C C C 二、填空题

1. (1)* (2) &

2. (1) *p (2) **a (3) 2 3. 10 4. *p>*s 5. *(++p) 三、编程题

1. 编程实现从键盘输入一个字符串, 将其字符顺序颠倒后重新存放, 并输出这个字符串。 #include #include

void Inverse(char *pStr)? main() {

char str[80]?

printf(\

gets(str)? /*输入字符串*/

Inverse(str)? /*将存于 str 数组中的字符串逆序存放*/ printf(\

puts(str)? /*输出字符串*/

}

/*函数功能: 实现字符串逆序存放

函数参数: 字符指针变量,所指向的存储单元存放源字符串,逆序后的字符串也存放于此 返回值: 无*/

void Inverse(char *pStr) {

int len? char temp?

char *pStart? /*指针变量 pStart 指向字符串的第一个字符*/

char *pEnd? /*指针变量 pEnd指向字符串的最后一个字符*/ len = strlen(pStr)? /*求出字符串长度*/

for (pStart=pStr,pEnd=pStr+len?1? pStart

temp = *pStart? *pStart = *pEnd? *pEnd = temp? } }

2.从键盘任意输入 10 个整数,用函数编程实现计算最大值和最小值,并返回它们所在数组 中的位置。

#include

int FindMax(int num[], int n, int *pMaxPos)? int FindMin(int num[], int n, int *pMinPos)?

main() {

int num[10], maxValue, maxPos, minValue, minPos, i? printf(\ for (i=0? i<10? i++) {

scanf(\ /* 输入 10 个数*/ }

maxValue = FindMax(num, 10, &maxPos)? /* 找最大值及其所在下标位置 */ minValue = FindMin(num, 10, &minPos)? /* 找最小值及其所在下标位置 */ printf(\ maxValue, maxPos, minValue, minPos)? }

/*函数功能:求 n个数中的最大值及其所在下标位置

函数入口参数:整型数组 num,存储 n个整数,整型变量 n,表示数组元素个数

函数出口参数:整型指针变量 pMaxPos,指向的地址单元存储最大值在数组中的下标位置

函数返回值: 最大值*/

int FindMax(int num[], int n, int *pMaxPos)

{

int i, max?

max = num[0]? /*假设 num[0]为最大*/

*pMaxPos = 0? /*假设最大值在数组中的下标位置为 0 */ for (i = 1? i < n? i++) {

if (num[i] > max) {

max = num[i]? *pMaxPos = i? } }

return max ? }

/*函数功能: 求 n个数中的最小值及其所在下标位置

函数入口参数: 整型数组 num,存储 n个整数,整型变量 n,表示数组元素个数 函数出口参数: 整型指针变量 pMinPos,指向的地址单元存储最小值在数组中的下标位置 函数返回值: 最小值*/

int FindMin(int num[], int n, int *pMinPos) {

int i, min?

min = num[0]? /*假设 num[0]为最小*/

*pMinPos = 0? /*假设最小值在数组中的下标位置为 0 */ for (i = 1?i < 10?i++) {

if (num[i] < min) {

min = num[i]? *pMinPos = i? } }

return min ? }

3. 将 5 个字符串从小到大排序后输出。

#include void main(void) { int i?

char *pcolor[5]={ \ \ \ \ void fsort(char *color[ ], int n)? fsort( pcolor, 5 )? for(i = 0? i < 5? i++)

printf(\ }

void fsort(char *color[ ], int n)

{ int k, j?

char *temp?

for(k = 1? k < n? k++)

for(j = 0? j < n?k? j++)

if(strcmp(color[j],color[j+1])>0) {

temp = color[j]?

color[j] = color[j+1]? color[j+1] temp? } }

4. 编写一个能对任意m×n阶矩阵进行转置运算的函数 Transpose()。 #include #define ROW 3 #define COL 4

void Transpose(int (*a)[COL], int (*at)[ROW], int row, int col)? void InputMatrix(int (*s)[COL], int row, int col)? void PrintMatrix(int (*s)[ROW], int row, int col)? main() {

int s[ROW][COL]? /*s 代表原矩阵*/

int st[COL][ROW]? /*st 代表转置后的矩阵*/

printf(\

InputMatrix(s, ROW, COL)? /*输入原矩阵,s 指向矩阵 s的第 0行,是行指针*/ Transpose(s, st, ROW, COL)?/*对矩阵 s 进行转置,结果存放于 st 中*/ printf(\

PrintMatrix(st, COL, ROW)? /*输出转置矩阵,*st 指向 st 的第 0 行,是行指针*/ }

/* 函数功能:对任意row行 col 列的矩阵转置

函数入口参数:指向一维整型数组的指针变量a,指向单元存放转置前的矩阵元素 整型变量 row,矩阵的行数即二维整型数组的行数 整型变量 col,矩阵的列数即二维整型数组的列数

函数出口参数:指向一维整型数组的指针变量at,指向单元存放转置后的矩阵元素 函数返回值: 无*/

void Transpose(int (*a)[COL], int (*at)[ROW], int row, int col) {

int i, j?

for (i=0? i

for (j=0? j

*(*(at+j)+i) = *(*(a+i)+j)? } }

}

void InputMatrix(int (*s)[COL], int row, int col) /*输入矩阵元素*/

{

int i, j?

for (i=0? i

for (j=0? j

scanf(\*(s+i)+j)? /*这里*(s+i)+j 等价于&s[i][j]*/

} }

} void PrintMatrix(int (*s)[ROW], int row, int col) /*输入矩阵元素*/

{

int i, j?

for (i=0? i

for (j=0? j

printf(\这里*(*(s+i)+j)等价于 s[i][j]*/ }

printf(\ } }

第九章 习题答案 一、选择题

1?5 B D D A C 6?10 B C A D C 二、填空题

1. struct DATA d={2006,10,1}? 2. sizeof(struct node) 3. person[i].sex 4. 13431

5. (1)struct node* (2)*s (3)p 三、编程题

1. 定义一个能正常反映教师情况的结构体 teacher,包含教师姓名、性别、年龄、所在部门和 薪水; 定义一个能存放两人数据的结构体数组 tea, 并用如下数据初始化:{{ “Mary “, ?W?,40,

?Computer? , 1234 },{“Andy“, ?M?,55, ?English? , 1834}};要求:分别用结构体数组 tea 和指针

p输出各位教师的信息,写出完整定义、初始化、输出过程。

本文来源:https://www.bwwdw.com/article/d942.html

Top