求C语言程序设计习题集与上机指导-第三版 (及答案)......

求C语言程序设计习题集与上机指导-第三版 (及答案)......,第1张

C语言程序设计第三版谭浩强课后习题答案完整版

第一章

1.5请参照本章例题,编写一个C程序,输出以下信息:

**************************

Very Good!

**************************

解:

mian()

{printf(“**************************”)

printf(“\n”)

printf(“Very Good!\n”)

printf(“\n”)

printf(“**************************”)

}

1.6 编写一个程序,输入a、b、c三个值,输出其中最大值。

解:

mian()

{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)

}

第三章

3.6写出以下程序运行的结果。

main()

{char c1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’

printf(“a%cb%c\tc%c\tabc\n”,c1,c2,c3)

printf(“\t\b%c %c”,c4,c5)

}

解:

aaㄩbbㄩㄩㄩccㄩㄩㄩㄩㄩㄩabc

AㄩN

3.7 要将"China"译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母.例如,字母"A"后面第4个字母是"E"."E"代替"A"。因此,"China"应译为"Glmre"。请编一程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为,’C’、’h’、’i’、’n’、’a’,经过运算,使c1、c2、c3、c4、c5分别变为’G’、’l’、’m’、’r’、’e’,并输出。

解:

#include <stdio.h>

main()

{ char c1=’C’,c2=’h’,c3=’i’,c4=’n’,c5=’a’

c1+=4

c2+=4

c3+=4

c4+=4

c5+=4

printf("密码是%c%c%c%c%c\n",c1,c2,c3,c4,c5)

}

运行结果:

密码是Glmre

3.9求下面算术表达式的值。

(1)x+a%3*(int)(x+y)%2/4

设x=2.5,a=7,y=4.7

(2)(float)(a+b)/2+(int)x%(int)y

设a=2,b=3,x=3.5,y=2.5

(1)2.5

(2)3.5

3.10写出程序运行的结果。

main()

{int i,j,m,n

i=8

j=10

m=++i

n=j++

printf(“%d,%d,%d,%d”,i,j,m,n)

}

解:

9,11,9,10

3.12 写出下面表达式运算后a的值,设原来a=12。设a和n都已定义为整型变量。

(1)a+=a (2) a-=2 (3) a*=2+3 (4)a/=a+a

(5) a%=(n%=2),n的值等于5

(6)a+=a-=a*=a

解:

(1) 24 (2) 10 (3) 60 (4) 0 (5) 0 (6) 0

第四章

4.4若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=’a’,c2=’b’。想得到以下输出格式和结果,请写出程序(包括定义变量类型和设计输出)。

a=_3_ _b=_4_ _c=_5

x=1.200000,y=2.400000,z=-3.600000

x+y=_3.600_ _y+z=-1.20_ _z+x=-2.40

c1=ˊaˊ_or_97(ASCII)

c2=ˊbˊ_or_98(ASCII)

main()

{int a=3,b=4,c=5

long int u=51274,n=128765

float x=1.2,y=2.4,z=3.6

char c1=’a’,c2=’b’

printf("a=%2d b=%2d c=%2d\n",a,b,c)

printf("x=%f,y=%f,z=%f\n",x,y,z)

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

printf("u=%6ld n=%9ld\n",u,n)

printf("%s %s %d%s\n","c1=’a’","or",c1,"(ASCII)")

printf("%s %s %d%s\n","c2=’a’","or",c2,"(ASCII)")

}

4.7用scanf下面的函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=ˊAˊ,c2=ˊaˊ,问在键盘上如何输入?

main()

{

int a,b;float x,y;char c1c2;

scanf("a=%d_b=%d",&a,&b);

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设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。

main()

{float r,h,C1,Sa,Sb,Va,Vb

scanf("%f,%f",&r,&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("C1=%.2f\n",C1)

printf("Sa=%.2f\nSb=%.2f\nVa=%.2f\nVb=%.2f\n",Sa,Sb,Va,Vb)

}

4.9输入一个华氏温度,要求输出摄氏温度。公式为

c=5(F-32)/9

输出要求有文字说明,取位2小数。

main()

{float F,c

scanf("%f",&F)

c=5*(F-32)/9

printf("c=%.2f",c)

}

4.10编程序,用getchar函数读入两个字符给c1、c2,然后分别用函数和函数输出这两个字符。并思考以下问题:(1)变量c1、c2应定义为字符型或整形?抑二者皆可?(2)要求输出c1和c2值的ASCII码,应如何处理?用putchar函数还是printf函数?(3)整形变量与字符变量是否在任何情况下都可以互相代替?如:

char c1,c2;

int c1,c2;

是否无条件的等价?

#include"stdio.h"

main()

{char c1,c2

c1=getchar()c2=getchar()

putchar(c1)putchar(’\n’)putchar(c2)putchar(’\n’)

file:///C|/Documents and Settings/Administrator/桌面/C语言程序设计第三版谭浩强课后习题答案完整版.txt(第 1/19 页)[2010-5-10 9:14:34]

file:///C|/Documents and Settings/Administrator/桌面/C语言程序设计第三版谭浩强课后习题答案完整版.txt

1.5请参照本章例题,编写一个C程序,输出以下信息:

**************************

Very Good!

**************************

解:

mian()

{printf(“**************************”)

printf(“\n”)

printf(“Very Good!\n”)

printf(“\n”)

printf(“**************************”)

}

1.6 编写一个程序,输入a、b、c三个值,输出其中最大值。

解:

mian()

{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)

}

第三章

3.6写出以下程序运行的结果。

main()

{char c1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’

printf(“a%cb%c\tc%c\tabc\n”,c1,c2,c3)

printf(“\t\b%c %c”,c4,c5)

}

解:

aaㄩbbㄩㄩㄩccㄩㄩㄩㄩㄩㄩabc

AㄩN

3.7 要将"China"译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母.例如,字母"A"后面第4个字母是"E"."E"代替"A"。因此,"China"应译为"Glmre"。请编一程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为,’C’、’h’、’i’、’n’、’a’,经过运算,使c1、c2、c3、c4、c5分别变为’G’、’l’、’m’、’r’、’e’,并输出。

解:

#include <stdio.h>

main()

{ char c1=’C’,c2=’h’,c3=’i’,c4=’n’,c5=’a’

c1+=4

c2+=4

c3+=4

c4+=4

c5+=4

printf("密码是%c%c%c%c%c\n",c1,c2,c3,c4,c5)

}

运行结果:

密码是Glmre

3.9求下面算术表达式的值。

(1)x+a%3*(int)(x+y)%2/4

设x=2.5,a=7,y=4.7

(2)(float)(a+b)/2+(int)x%(int)y

设a=2,b=3,x=3.5,y=2.5

(1)2.5

(2)3.5

3.10写出程序运行的结果。

main()

{int i,j,m,n

i=8

j=10

m=++i

n=j++

printf(“%d,%d,%d,%d”,i,j,m,n)

}

解:

9,11,9,10

3.12 写出下面表达式运算后a的值,设原来a=12。设a和n都已定义为整型变量。

(1)a+=a (2) a-=2 (3) a*=2+3 (4)a/=a+a

(5) a%=(n%=2),n的值等于5

(6)a+=a-=a*=a

解:

(1) 24 (2) 10 (3) 60 (4) 0 (5) 0 (6) 0

第四章

4.4若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=’a’,c2=’b’。想得到以下输出格式和结果,请写出程序(包括定义变量类型和设计输出)。

a=_3_ _b=_4_ _c=_5

x=1.200000,y=2.400000,z=-3.600000

x+y=_3.600_ _y+z=-1.20_ _z+x=-2.40

c1=ˊaˊ_or_97(ASCII)

c2=ˊbˊ_or_98(ASCII)

main()

{int a=3,b=4,c=5

long int u=51274,n=128765

float x=1.2,y=2.4,z=3.6

char c1=’a’,c2=’b’

printf("a=%2d b=%2d c=%2d\n",a,b,c)

printf("x=%f,y=%f,z=%f\n",x,y,z)

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

printf("u=%6ld n=%9ld\n",u,n)

printf("%s %s %d%s\n","c1=’a’","or",c1,"(ASCII)")

printf("%s %s %d%s\n","c2=’a’","or",c2,"(ASCII)")

}

4.7用scanf下面的函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=ˊAˊ,c2=ˊaˊ,问在键盘上如何输入?

main()

{

int a,b;float x,y;char c1c2;

scanf("a=%d_b=%d",&a,&b);

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设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。

main()

{float r,h,C1,Sa,Sb,Va,Vb

scanf("%f,%f",&r,&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("C1=%.2f\n",C1)

printf("Sa=%.2f\nSb=%.2f\nVa=%.2f\nVb=%.2f\n",Sa,Sb,Va,Vb)

}

4.9输入一个华氏温度,要求输出摄氏温度。公式为

c=5(F-32)/9

输出要求有文字说明,取位2小数。

main()

{float F,c

scanf("%f",&F)

c=5*(F-32)/9

printf("c=%.2f",c)

}

4.10编程序,用getchar函数读入两个字符给c1、c2,然后分别用函数和函数输出这两个字符。并思考以下问题:(1)变量c1、c2应定义为字符型或整形?抑二者皆可?(2)要求输出c1和c2值的ASCII码,应如何处理?用putchar函数还是printf函数?(3)整形变量与字符变量是否在任何情况下都可以互相代替?如:

char c1,c2;

int c1,c2;

是否无条件的等价?

#include"stdio.h"

main()

{char c1,c2

c1=getchar()c2=getchar()

putchar(c1)putchar(’\n’)putchar(c2)putchar(’\n’)

switch(place)

{ case 5: printf("%d,%d,%d,%d,%d",ten_thousand,thousand,hundred,ten,indiv)

printf("\n反序数字为;")

printf("%d%d%d%d%d\n",indiv,ten,hundred,thousand,ten_thousand)

break

case 4: printf("%d,%d,%d,%d",thousand,hundred,ten,indiv)

printf("\n反序数字为:")

printf("%d%d%d%d\n",indiv,ten,hundred,thousand)

break

case 3: printf("%d,%d,%d",hundred,ten,indiv)

printf("\n反序数字为:")

printf("%d%d%d\n",indiv,ten,hundred)

break

case 2: printf("%d,%d",ten,indiv)

printf("\n反序数字为:")

printf("%d%d\n",indiv,ten)

break

case 1: printf("%d",indiv)

printf("\n反序数字为:")

printf("%d\n",indiv)

break

}

}

第五章

5.8 企业发放的奖金根据利润提成。利润I低于或等于10万元时,奖金可提成10% ;利润高于10万元,低于20万元(100000<I≤200000)时,其中10万元按10%提成,高于10万元的部分,可提成7.5% ;200000<I≤400000时,其中20万元仍按上述办法提成(下同),高于20万元的部分按5%提成;400000<I≤600000时,高于40万元的部分按3%提成;600000〈I≤1000000时,高于60万的部分按1.5%提成;I>1000000时,超过100万元的部分按1%提成。从键盘输入当月利润I,求应发放奖金总数。要求:(1)用if语句编程序;(2)用switch语句编程序。

解:计算利润时,要特别注意不同利润的不同提成比例。例如,利润为15万元,其中有10万元按10%的比例提成,另外5万元则按7.5%提成。

(1) 用if语句编程序。

#include <stdio.h>

main()

{ long i

float bonus,bon1,bon2,bon4,bon6,bon10

bon1=100000*0.1/*利润为10万元时的奖金*/

bon2=bon1+100000*0.075/*利润为20万元时的奖金*/

bon4=bon2+200000*0.05/*利润为40万元时的奖金*/

bon6=bon4+200000*0.03/*利润为60万元时的奖金*/

bon10=bon6+400000*0.015/*利润为100万元时的奖金*/

printf("请输入利润i:")

scanf("%ld",&i)

if(i<=100000)

bonus=i*0.1/*利润在10万元以内按0.1提成奖金*/

else if(i<=200000)

bonus=bon1+(i-100000)*0.075/*利润在10万至20万元时的奖金*/

else if(i<=400000)

bonus=bon2+(i-200000)*0.05/*利润在20万至40万元时的奖金*/

else if(i<=600000)

bonus=bon4+(i-400000)*0.03/*利润在40万至60万元时的奖金*/

else if(i<=1000000)

bonus=bon6+(i-600000)*0.015/*利润在60万至100万元时的奖金*/

else

bonus=bon10+(i-1000000)*0.01/*利润在100万元以上时的奖金*/

printf(”奖金是%10.2f\n",bonus)

}

此题的关键在于正确写出每一区间的奖金计算公式。例如利润在10万元至20万时,奖金应由两部分组成:①利润为10万元时应得的奖金。即100000ⅹ0.1;②10万元以上部分应得的奖金。即(num-100000)ⅹ0.075。同理,20万~40万这个区间的奖金也应由两部分组成:①利润为20万元时应得的奖金,即100000ⅹ0.1ⅹ10万ⅹ0.075;②20万元以上部分应得的奖金,即(num-200000)ⅹ0.05。程序中先把10万、20万、40万、60万、100万各关键点的奖金计算出来,即bon1、bon2、bon4、bon6、hon10;然后再加上各区间附加部分的奖金。

(2) 用switch语句编程序。

输入利润i,确定相应的提成等级branch

根据branch确定奖金值

0 奖金=i*0.1

1 奖金=bon1+(i-105)*0.075

2 奖金=bon2+(i-2*105)*0.05

3

4 奖金=bon4+(i-4*105)*0.03

5

6 奖金=bon6+(i-6*105)*0.015

7

8

9

10 奖金=bon10+(i-106)*0.01

输出奖金

#include <stdio.h>

main()

{ long i

float bonus, bon1, bon2, bon4, bon6, bon10

int c

bon1=100000*0.1

bon2=bon1+100000*0.075

bon4=bon2+200000*0.05

bon6=bon4+200000*0.03

bon10=bon6+400000*0.015

printf("请输入利润i:")

scanf("%ld",&i)

c=i/100000

if(c>10) c=10

switch(c)

{ case 0: bonus=1*0.1break

case 1: bonus=bon1+(i-100000)*0.075break

case 2 :

case 3: bonus=bon2+(i-200000)*0.05break

case 4:

case 5: bonus=bon4+(i-400000)*0.03break

case 6:

case 7:

case 8:

case 9: bonus=bon6+(i-600000)*0.015break

case 10: bonus=bon10+(i-1000000)*0.01

}

printf("奖金是%10.2f",bonus)

}

5.9 输入4个整数,要求按由大到小的顺序输出。

解:此题采用依次比较的方法排出其大小顺序。在学习了循环和数组以后,可以有更多的排序方法。

#include <stdio.h>

main()

{ int t,a,b,c,d

printf("请输入4个整数:")

scanf("%d,%d,%d,%d",&a,&b,&c,&d)

printf("\n a=%d,b=%d,c=%d,d=%d\n",a,b,c,d)

if(a>b) {t=aa=bb=t}

if(a>c) {t=aa=cc=t}

if(a>d) {t=aa=dd=t}

if(b>c) {t=ab=cc=t}

if(b>d) {t=bb=dd=t}

if(c>d) {t=cc=dd=t}

printf("排序结果如下:\n")

第一章 程序设计的基本概念

第一节 C语言的发展历史与特点

第二节 程序与程序设计

第三节 算法与算法的描述

第四节 C语言的上机 *** 作

思考题与习题

第二章 C语言程序设计基础

第一节 C语言的程序结构

第二节 数据类型

第三节 运算符与表达式

思考题与习题

第三章 C程序控制结构

第一节 C程序的三种基本控制结构

第二节 顺序结构

第三节 选择结构

第四节 循环结构

思考题与习题

第四章 数组

第一节 数组与数组元素的概念

第二节 一维数组

第三节 二维数组及多维数组

第四节 字符串与字符数组

思考题与习题

第五章 指针

第一节 指针与指针变量的概念

第二节 指针变量的定义和引用

第三节 指针变量与数组

思考题与习题

第六章 函数

第一节 函数的定义

第二节 函数的嵌套调用

第三节 数组作为函数参数

第四节 指针与函数

第五节 变量的使用范围与存储类别

第六节 不同文件中的函数使用

思考题与习题

第七章 编译预处理

第一节 宏定义

第二节 文件包含

第三节 条件编译

思考题与题

第八章 结构体与共用体

第一节 结构体基础

第二节 结构体数组

第三节 结构体指针

第四节 链表

第五节 位段

第六节 共用体

第七节 枚举类型与自定义类型

思考题与习题

第九章 文件

第一节 文件概述

第二节 文件的打开与关闭

第三节 文件的读/写

第四节 文件的定位

思考题与习题

第十章 程序设计方法

第一节 程序设计的基本概念

第二节 结构化程序设计方法

第三节 程序效率

第四节 程序设计风格

思考题与习题

附录

附录A C语言实验

附录B 标准ABSII码表

附录C C语言中的关键字

附录D 运算符的优先级与结合性


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11099034.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存