建材秒知道
登录
建材号 > 设计 > 正文

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

可爱的方盒
独特的鸡翅
2022-12-28 16:21:41

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

最佳答案
坚强的麦片
鳗鱼金针菇
2026-05-09 21:40:07

#include<iostream>

using namespace std

#define N 10

void input(int a[N]){

int i

printf("shuru\n")

for(i=0i<Ni++){

scanf("%d",&a[i])

}

}

void exchange(int a[N]){

int t,m=0,n=0

int i

int t1=a[0],t2=a[0]

for(i=0i<10i++){

if(a[i]>t1){

t1=a[i]

m=i

}

if(a[i]<t2){

t2=a[i]

n=i

}

}

t=a[0]a[0]=a[n]a[n]=t

t=a[9]a[9]=a[m]a[m]=t

}

void ___exchange(int a[N]){

//int t,m=0,n=0

int i

int t1,t2 //t1=max.t2=min

 t1=t2=a[0]

 // max = num[0]

for(i=0i<10i++){

if(t1<a[i])

t1=a[i]

if(t2>a[i])

t2=a[i]

}

a[0]=t1

a[9]=t2

//return a

}

void output(int a[]){

int i

printf("dayin\n")

for(i=0i<Ni++)

printf("%d ",a[i])

printf("\n")

}

int main(){

int a[N]

input(a)

___exchange(a)

output(a)

return 1

}

先mark~~看看你的代码先~~

之前的OK了~~就是一个比较~~遍历比较~~

最新回答
威武的短靴
暴躁的萝莉
2026-05-09 21:40:07

什么是C语言?C语言的简介。

C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。

它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。

因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都需要用到C语言,具体应用比如单片机以及嵌入式系统开发。

语言特点:C是中级语言/C是结构式语言/C语言功能齐全/C语言适用范围大/简洁紧凑、灵活方便/运算符丰富/数据类型丰富/C是结构式语言/语法限制不太严格,程序设计自由度大/适用范围大,可移植性好。

洁净的紫菜
痴情的大米
2026-05-09 21:40:07

链接:

提取码: f1bt

     谭浩强老师C语言视频教程是2007年5月17日发布的网络课程,参考于C语言程序设计。C语言程序设计作为大学理工课大一下学期必修的课程,学习该课程并不是要求大家能用C设计一个复杂的程序,最主要是掌握一种结构化设计的编程思想,对编程不再恐惧陌生,该课程的知识点的讲解通俗易懂,使即使没有任何基本的朋友也可以很好的掌握。学完本课程后对后继的编辑语言的学习将会有很大的帮助!

幸福的百褶裙
明亮的电源
2026-05-09 21:40:07
我想自学编程, 想学自己做一些实用软件, 能给我推荐本书吗, 我新手,谢谢,

你要学哪门编程语言 热门的就C C++ C# JAVA

C:谭浩强的 《C程序设计》 清华出版社严蔚敏的《数据结构》

C++:谭浩强《 c++语言程序设计教程》

JAVA: java编程语言(第三版)---java四大名著----James Gosling(java之父)

java编程思想(第2版)----java四大名著----Bruce Eckel

java编程思想(第3版)----java四大名著----------------Bruce Eckel

java 2核心技术 卷I:基础知识(原书第7版)---java四大名著-----Cay Horstmann

java 2核心技术 卷II:高级特性(原书第7版)----java四大名著-----Cay Horstmann

Effective java中文版------java四大名著--------Joshua Bloch

然后有一本厚厚的《算法导论》,我忘了谁写的了,外国的,厚厚的一大本,里面有各种经典算法 ACM比赛大部分算法那本书都找得到,基础学了以后可以看看那个

请给我推荐一些实用软件,谢谢!

美图秀秀,360安全卫士,360安全浏览器超速版,win7美化大师,Smart Dfrag(磁盘清理),酷狗2012,暴风影音。

想自学编程,推荐基本书给我。谢谢大家啦

《C程序设计》第二版 作者:谭浩强

本人觉得这个讲得比较好

我想自学编程,给推荐本书吧!

C++ Premiere,楼下有没有意见

我想学编程 推荐我本书

谭浩强:《C程序设计》第三版,清华大学出版社!

我想自己做一个魔兽DOTA视频,推荐编辑软件和录制软件,谢谢

如果电脑技术不佳推荐一下简单易用的会声会影

做DOTA视频,想把很好,顶一个

谁能给我的6670推荐几款实用软件

appman

Fileman

智能助手

完美风暴

UCWEB

A4输入法

来电通

好帮手

手机上wapampm. 有更多的内容

我想学习SQL 能给我推荐本书吗 基础一些的

MYSQL 快速入门。这本书你可以看看

我想学自学3D,帮我推荐个软件,要免费的,谢谢各位

现在晚上都有很多3D MAX的软件了··几乎都是免费的··用注册机注册号了就行了···我用的MAX9 还比较好用··比8 要好

推荐一些HTC DIAMOND2 的游戏与实用软件. 谢谢

去592ppc论坛,里面很多的,呵呵

内向的绿茶
可靠的奇迹
2026-05-09 21:40:07
C语言课程设计任务书

一、题目: 学生成绩管理

二、目的与要求

1. 目的:

(1)基本掌握面向过程程序设计的基本思路和方法;

(2)达到熟练掌握C语言的基本知识和技能;

(3)能够利用所学的基本知识和技能,解决简单的程序设计问题

2. 要求

基本要求:

1. 要求利用C语言面向过程的编程思想来完成系统的设计;

2. 突出C语言的函数特征,以多个函数实现每一个子功能;

3. 画出功能模块图;

4. 进行简单界面设计,能够实现友好的交互;

5. 具有清晰的程序流程图和数据结构的详细定义;

6. 熟练掌握C语言对文件的各种操作。

创新要求:

在基本要求达到后,可进行创新设计,如系统用户功能控制,对管理员级和一般级别的用户系统功能操作不同

三、信息描述

输入一个班10个学生的学号和每个学生考试三门功课(数学、英语、计算机基础)的成绩。编程计算出每个学生的总分和平均分,并按学生成绩优劣排序,最后打印一张按高分到低分名次排序的成绩单。要求:

1)排序用一个函数实现。

2)打印的成绩单表项包括:序号,学号、数学、英语、计算机、总分、平均分。

3)按实验报告电子模板格式填写实验内容。

四、功能描述

1. 学生基本信息及成绩所选科目成绩的录入。

2. 基本信息的查询(分系、班级;分科目)与修改。

3. 对每系或每班各科成绩进行分析(即求单科平均成绩、及格率和优秀率);

4. 对所开课程的成绩分析(求其平均成绩,最高分和最低分);

5. 对学生考试成绩进行排名(单科按系别或班级进行排名,对每一个班级,同一学期学生总体成绩进行排名,并显示各科成绩信息)

五、解决方案

1. 分析程序的功能要求,划分程序功能模块。

2. 画出系统流程图。

3. 代码的编写。定义数据结构和各个功能子函数。

4. 程序的功能调试。

5. 完成系统总结报告以及使用说明书

六、进度安排

此次课程设计时间为两周,分四个阶段完成:

1. 分析设计阶段。指导教师应积极引导学生自主学习和钻研问题,明确设计要求,找出实现方法,按照需求分析、总体设计、详细设计这几个步骤进行。

2. 编码调试阶段:根据设计分析方案编写C代码,然后调试该代码,实现课题要求的功能。

3. 总结报告阶段:总结设计工作,写出课程设计说明书,要求学生写出需求分析、总体设计、详细设计、编码、测试的步骤和内容。

4. 考核阶段。

#include <stdio.h>

#include <stdlib.h>

#define STU_NUM 10

struct student

{

char stu_id[20]

float score[3]

float total

float aver

}

void SortScore(student *stu,int n)

{

student stud

for(int i = 0i <n-1i++)

for(int j = i+1 j <nj++)

{

if(stu[i].total <stu[j].total)

{

stud = stu[i]

stu[i] = stu[j]

stu[j] = stud

}

}

}

int main( )

{

student stu[STU_NUM]

for(int i = 0i<STU_NUMi++)

{

printf("请输入第%d个学生的学号:",i+1)

scanf("%s",&stu[i].stu_id)

printf("输入第%d个学生的数学成绩:",i+1)

scanf("%f",&stu[i].score[0])

printf("输入第%d个学生的英语成绩:",i+1)

scanf("%f",&stu[i].score[1])

printf("输入第%d个学生的计算机成绩:",i+1)

scanf("%f",&stu[i].score[2])

stu[i].total = stu[i].score[0]+stu[i].score[1]+stu[i].score[2]

stu[i].aver = stu[i].total/3

}

printf("\n")

SortScore(stu,STU_NUM)

for(i = 0 i <STU_NUMi++)

{

printf("序号: %d\t",i)

printf("学号:%s\t",stu[i].stu_id)

printf("数学:%f\t",stu[i].score[0])

printf("英语:%f\t",stu[i].score[1])

printf("计算机:%f\t",stu[i].score[2])

printf("平均成绩:%f\t",stu[i].aver)

printf("总分:%f\t",stu[i].total)

printf("\n\n")

}

return 0

}

注:(源程序中主要标识符含义说明)

#define STU_NUM 10

struct student

{

char stu_id[20]

float score[3]

float total

float aver

}

实验结果:

输入 :(只输入后面的数字,前面的文字是自己产生的)。

请输入第1个学生的学号:001

输入第1个学生的数学成绩:1

输入第1个学生的英语成绩:1

输入第1个学生的计算机成绩:1

请输入第2个学生的学号:002

输入第2个学生的数学成绩:2

输入第2个学生的英语成绩:2

输入第2个学生的计算机成绩:2

请输入第3个学生的学号:003

输入第3个学生的数学成绩:3

输入第3个学生的英语成绩:3

输入第3个学生的计算机成绩:3

请输入第4个学生的学号:004

输入第4个学生的数学成绩:4

输入第4个学生的英语成绩:4

输入第4个学生的计算机成绩:4

请输入第5个学生的学号:005

输入第5个学生的数学成绩:5

输入第5个学生的英语成绩:5

输入第5个学生的计算机成绩:5

请输入第6个学生的学号:006

输入第6个学生的数学成绩:6

输入第6个学生的英语成绩:6

输入第6个学生的计算机成绩:6

请输入第7个学生的学号:007

输入第7个学生的数学成绩:7

输入第7个学生的英语成绩:7

输入第7个学生的计算机成绩:7

请输入第8个学生的学号:008

输入第8个学生的数学成绩:8

输入第8个学生的英语成绩:8

输入第8个学生的计算机成绩:8

请输入第9个学生的学号:009

输入第9个学生的数学成绩:9

输入第9个学生的英语成绩:9

输入第9个学生的计算机成绩:9

请输入第10个学生的学号:010

输入第10个学生的数学成绩:10

输入第10个学生的英语成绩:10

输入第10个学生的计算机成绩:10

输出:

序号: 0 学号:010 数学:10.000000 英语:10.000000 计算机:10.000000

平均成绩:10.000000 总分:30.000000

序号: 1 学号:009 数学:9.000000 英语:9.000000 计算机:9.000000

平均成绩:9.000000 总分:27.000000

序号: 2 学号:008 数学:8.000000 英语:8.000000 计算机:8.000000

平均成绩:8.000000 总分:24.000000

序号: 3 学号:007 数学:7.000000 英语:7.000000 计算机:7.000000

平均成绩:7.000000 总分:21.000000

序号: 4 学号:006 数学:6.000000 英语:6.000000 计算机:6.000000

平均成绩:6.000000 总分:18.000000

序号: 5 学号:005 数学:5.000000 英语:5.000000 计算机:5.000000

平均成绩:5.000000 总分:15.000000

序号: 6 学号:004 数学:4.000000 英语:4.000000 计算机:4.000000

平均成绩:4.000000 总分:12.000000

序号: 7 学号:003 数学:3.000000 英语:3.000000 计算机:3.000000

平均成绩:3.000000 总分:9.000000

序号: 8 学号:002 数学:2.000000 英语:2.000000 计算机:2.000000

平均成绩:2.000000 总分:6.000000

序号: 9 学号:001 数学:1.000000 英语:1.000000 计算机:1.000000

平均成绩:1.000000 总分:3.000000

七、撰写课程设计报告或课程设计总结

课程设计报告要求:

总结报告包括需求分析、总体设计、详细设计、编码(详细写出编程步骤)、测试的步骤和内容、课程设计总结、参考资料等,不符合以上要求者,则本次设计以不及格记。

C语言常见错误

书写标识符时,忽略了大小写字母的区别

main()

{

int a=5

printf("%d",A)

}

编译程序把a和A认为是两个不同的变量名,而显示出错信息。C认为大写字母和小写字母是两个不同的字符。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。

2.忽略了变量的类型,进行了不合法的运算。

main()

{

float a,b

printf("%d",a%b)

}

%是求余运算,得到a/b的整余数。整型变量a和b可以进行求余运算,而实型变量则不允许进行“求余”运算。

3.将字符常量与字符串常量混淆。

char c

c="a"

在这里就混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列。C规定以“\”作字符串结束标志,它是由系统自动加上的,所以字符串“a”实际上包含两个字符:‘a'和‘\',而把它赋给一个字符变量是不行的。

4.忽略了“=”与“==”的区别。

在许多高级语言中,用“=”符号作为关系运算符“等于”。如在BASIC程序中可以写

if (a=3) then …

但C语言中,“=”是赋值运算符,“==”是关系运算符。如:

if (a==3) a=b

前者是进行比较,a是否和3相等,后者表示如果a和3相等,把b值赋给a。由于习惯问题,初学者往往会犯这样的错误。

5.忘记加分号。

分号是C语句中不可缺少的一部分,语句末尾必须有分号。

a=1

b=2

编译时,编译程序在“a=1”后面没发现分号,就把下一行“b=2”也作为上一行语句的一部分,这就会出现语法错误。改错时,有时在被指出有错的一行中未发现错误,就需要看一下上一行是否漏掉了分号。

{ z=x+y

t=z/100

printf("%f",t)

}

对于复合语句来说,最后一个语句中最后的分号不能忽略不写(这是和PASCAL不同的)。

6.多加分号。

对于一个复合语句,如:

{ z=x+y

t=z/100

printf("%f",t)

}

复合语句的花括号后不应再加分号,否则将会画蛇添足。

又如:

if (a%3==0)

I++

本是如果3整除a,则I加1。但由于if (a%3==0)后多加了分号,则if语句到此结束,程序将执行I++语句,不论3是否整除a,I都将自动加1。

再如:

for (I=0I<5I++)

{scanf("%d",&x)

printf("%d",x)}

本意是先后输入5个数,每输入一个数后再将它输出。由于for()后多加了一个分号,使循环体变为空语句,此时只能输入一个数并输出它。

7.输入变量时忘记加地址运算符“&”。

int a,b

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

这是不合法的。Scanf函数的作用是:按照a、b在内存的地址将a、b的值存进去。“&a”指a在内存中的地址。

8.输入数据的方式与要求不符。①scanf("%d%d",&a,&b)

输入时,不能用逗号作两个数据间的分隔符,如下面输入不合法:

3,4

输入数据时,在两个数据之间以一个或多个空格间隔,也可用回车键,跳格键tab。

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

C规定:如果在“格式控制”字符串中除了格式说明以外还有其它字符,则在输入数据时应输入与这些字符相同的字符。下面输入是合法的:

3,4

此时不用逗号而用空格或其它字符是不对的。

3 4 3:4

又如:

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

输入应如以下形式:

a=3,b=4

9.输入字符的格式与要求不一致。

在用“%c”格式输入字符时,“空格字符”和“转义字符”都作为有效字符输入。

scanf("%c%c%c",&c1,&c2,&c3)

如输入a b c

字符“a”送给c1,字符“ ”送给c2,字符“b”送给c3,因为%c只要求读入一个字符,后面不需要用空格作为两个字符的间隔。

10.输入输出的数据类型与所用格式说明符不一致。

例如,a已定义为整型,b定义为实型

a=3b=4.5

printf("%f%d\n",a,b)

编译时不给出出错信息,但运行结果将与原意不符。这种错误尤其需要注意。

11.输入数据时,企图规定精度。

scanf("%7.2f",&a)

这样做是不合法的,输入数据时不能规定精度。

12.switch语句中漏写break语句。

例如:根据考试成绩的等级打印出百分制数段。

switch(grade)

{ case 'A':printf("85~100\n")

case 'B':printf("70~84\n")

case 'C':printf("60~69\n")

case 'D':printf("<60\n")

default:printf("error\n")

由于漏写了break语句,case只起标号的作用,而不起判断作用。因此,当grade值为A时,printf函数在执行完第一个语句后接着执行第二、三、四、五个printf函数语句。正确写法应在每个分支后再加上“break”。例如

case 'A':printf("85~100\n")break

13.忽视了while和do-while语句在细节上的区别。

(1)main()

{int a=0,I

scanf("%d",&I)

while(I<=10)

{a=a+I

I++

}

printf("%d",a)

}

(2)main()

{int a=0,I

scanf("%d",&I)

do

{a=a+I

I++

}while(I<=10)

printf("%d",a)

}

可以看到,当输入I的值小于或等于10时,二者得到的结果相同。而当I>10时,二者结果就不同了。因为while循环是先判断后执行,而do-while循环是先执行后判断。对于大于10的数while循环一次也不执行循环体,而do-while语句则要执行一次循环体。

14.定义数组时误用变量。

int n

scanf("%d",&n)

int a[n]

数组名后用方括号括起来的是常量表达式,可以包括常量和符号常量。即C不允许对数组的大小作动态定义。

15.在定义数组时,将定义的“元素个数”误认为是可使的最大下标值。

main()

{static int a[10]={1,2,3,4,5,6,7,8,9,10}

printf("%d",a[10])

}

C语言规定:定义时用a[10],表示a数组有10个元素。其下标值由0开始,所以数组元素a[10]是不存在的。

16.初始化数组时,未使用静态存储。

int a[3]={0,1,2}

这样初始化数组是不对的。C语言规定只有静态存储(static)数组和外部存储(exterm)数组才能初始化。应改为:

static int a[3]={0,1,2}

17.在不应加地址运算符&的位置加了地址运算符。

scanf("%s",&str)

C语言编译系统对数组名的处理是:数组名代表该数组的起始地址,且scanf函数中的输入项是字符数组名,不必要再加地址符&。应改为:

scanf("%s",str)

18.同时定义了形参和函数中的局部变量。

int max(x,y)

int x,y,z

{z=x>y?x:y

return(z)

}

形参应该在函数体外定义,而局部变量应该在函数体内定义。应改为:

int max(x,y)

int x,y

{int z

z=x>y?x:y

return(z)

}

C语言心得体会

通过这次实训,增加了我学习软件技术的兴趣,虽然还不明确软件技术包含的具体内容,但从C语言这门课程开始,已发现程序设计的乐趣,在学习C语言的过程中也学到了许多计算机应用基础知识,对计算机的机体也有了一个大体的了解。

这次实训是老师给了范例程序,经过自己的改写,实现要求。先做简单的输出,一步步的再做其它图案,在实际操作过程中犯的一些错误还会有意外的收获,感觉实训很有意思。在具体操作中对这学期所学的C语言的理论知识得到巩固,达到实训的基本目的,也发现自己的不足之出,在以后的上机中应更加注意,同时体会到C语言具有的语句简洁,使用灵活,执行效率高等特点。发现上机实训的重要作用,特别是对数组和循环有了深刻的理解。

通过实际操作,学会 C语言程序编程的基本步骤、基本方法,开发了自己的逻辑思维能力,培养了分析问题、解决问题的能力。深刻体会到“没有做不到的,只有想不到的”,“团结就是力量”,“实践是检验真理的标准”,“不耻下问”……的寓意。

计时在此希望以后应多进行这样的实训,加长设间,培养学生独立思考问题的能力,提高实际操作水平。

八、参考资料 :《C语言程序设计教程》

等待的灰狼
欢呼的小蘑菇
2026-05-09 21:40:07
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 <br>printf("cock hen chick\n")<br>for(i=1i<=20i++) <br>for(j=1j<=33j++) <br>for(k=1k<=33k++) <br>if (i+j+k*3==100&&i*5+j*3+k==100) <br>printf(" %d %d %d\n",i,j,k*3)}

执行结果:

cock hen chick

4 18 78

8 11 81

12 4 84

3.现计算斐波那契数列的前20项。

递推法 源程序:

main()

{long a,bint i<br>a=b=1<br>for(i=1i<=10i++) <br>{printf("%8ld%8ld",a,b)<br>a=a+bb=b+a}}

递归法 源程序:

main()

{int i<br>for(i=0i<=19i++) <br>printf("%8d",fib(i))}

fib(int i)

{return(i<=1?1:fib(i-1)+fib(i-2))}

执行结果:

1 1 2 3 5 8 13 21 34 55

89 144 233 377 610 987 1597 2584 4181 6765

4.源程序:

#include "math.h"

main()

{double x,x0,deltax<br>x=1.5<br>do {x0=pow(x+1,1./3)<br>deltax=fabs(x0-x)<br>x=x0<br>}while(deltax>1e-12)

printf("%.10f\n",x)}

执行结果:

1.3247179572

5.源程序略。(分子、分母均构成斐波那契数列)

结果是32.66026079864

6.源程序:

main()

{int a,b,c,m<br>printf("Please input a,b and c:")<br>scanf("%d %d %d",&a,&b,&c)<br>if(a<b){m=aa=bb=m}

if(a<c){m=aa=cc=m}

if(b<c){m=bb=cc=m}

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

执行结果:

Please input a,b and c:123 456 789

789 456 123

7.源程序:

main()

{int a<br>scanf("%d",&a)<br>printf(a%21==0?"Yes":"No")}

执行结果:

42

Yes

3 第2章 C语言概述

一、单项选择题(第34页)

1-4.BDCB 5-8.AABC

二、填空题(第35页)

1.主 2.C编译系统 3.函数 函数 4.输入输出 5.头 6. .OBJ 7.库函数 8.文本

三、应用题(第36页)

5.sizeof是关键字,stru、_aoto、file、m_i_n、hello、ABC、SIN90、x1234、until、cos2x、s_3是标识符。

8.源程序:

main()

{int a,b,c<br>scanf("%d %d",&a,&b)<br>c=aa=bb=c<br>printf("%d %d",a,b)}

执行结果:

12 34

34 12

4 第3章 数据类型与运算规则

一、单项选择题(第75页)

1-5.DBACC 6-10.DBDBC 11-15.ADCCC 16-20.CBCCD 21-25.ADDBC 26-27.AB

二、填空题(第77页)

1.补码 2.±(10^-308~10^308) 3.int(整数) 4.单目 自右相左 5.函数调用 6.a或b 7.1 8.65,89

三、应用题(第78页)

1.10 9

2.执行结果:

11

0

0

12

1

5 第4章 顺序结构程序设计

一、单项选择题(第90页)

1-5.DCDAD 6-10.BACBB

二、填空题(第91页)

1.一 ;2. 5.169000 3.(1)-2002500 (2)I=-200,j=2500 (3)i=-200

j=2500 4.a=98,b=765.000000,c=4321.000000 5.略 6.0,0,3 7.3 8.scanf("%lf%lf%lf",&a,&b,&c)9. 13 13.000000,13.000000 10.a=a^cc=c^aa=a^c(这种算法不破坏b的值,也不用定义中间变量。)

三、编程题(第92页)

1.仿照教材第27页例2-1。

2.源程序:

main()

{int h,m<br>scanf("%d:%d",&h,&m)<br>printf("%d\n",h*60+m)}

执行结果:

9:23

563

3.源程序:

main()

{int a[]={-10,0,15,34},i

for(i=0i<=3i++)

printf("%d\370C=%g\370F\t",a[i],a[i]*1.8+32)}

执行结果:

-10℃=14°F 0℃=32°F 15℃=59°F 34℃=93.2°F

4.源程序:

main()

{double pi=3.14159265358979,r=5<br>printf("r=%lg A=%.10lf S=%.10lf\n",r,2*pi*r,pi*pi*r)}

执行结果:

r=5 A=31.4159265359 S=49.3480220054

5.源程序:

#include "math.h"

main()

{double a,b,c<br>scanf("%lf%lf%lf",&a,&b,&c)<br>if (a+b>c&&a+c>b&&b+c>a) <br>{double s=(a+b+c)/2<br>printf("SS=%.10lf\n",sqrt(s*(s-a)*(s-b)*(s-c)))}

else printf("Data error!")}

执行结果:

4 5 6

SS=9.9215674165

6.源程序:

main()

{int a=3,b=4,c=5float d=1.2,e=2.23,f=-43.56<br>printf("a=%3d,b=%-4d,c=**%d\nd=%g\ne=%6.2f\nf=%-10.4f**\n",a,b,c,d,e,f)}

7.源程序:

main()

{int a,b,c,m<br>scanf("%d %d %d",&a,&b,&c)<br>m=aa=bb=cc=m<br>printf("%d %d %d\n",a,b,c)}

执行结果:

5 6 7

6 7 5

8.源程序:

main()

{int a,b,c<br>scanf("%d %d %d",&a,&b,&c)<br>printf("average of %d,%d and %d is %.2f\n",a,b,c,(a+b+c)/3.)<br>执行结果: <br>6 7 9 <br>average of 6,7 and 9 is 7.33 <br>9.不能。修改后的源程序如下: <br>main() <br>{int a,b,c,x,y<br>scanf("%d %d %d",&a,&b,&c)<br>x=a*by=x*c<br>printf("a=%d,b=%d,c=%d\n",a,b,c)<br>printf("x=%d,y=%d\n",x,y)}

6 第5章 选择结构程序设计

一、单项选择题(第113页)

1-4.DCBB 5-8.DABD

二、填空题(第115页)

1.非0 0 2.k==0

3.if (abs(x)>4) printf("%d",x)else printf("error!")

4.if((x>=1&&x<=10||x>=200&&x<=210)&&x&1)printf("%d",x)

5.k=1 (原题最后一行漏了个d,如果认为原题正确,则输出k=%。)

6. 8! Right!11 7.$$$a=0 8.a=2,b=1

三、编程题(第116页)

1.有错。正确的程序如下:

main()

{int a,b,c<br>scanf("%d,%d,%d",&a,&b,&c)<br>printf("min=%d\n",a>b?b>c?c:b:a>c?c:a)}

2.源程序:

main()

{unsigned long a<br>scanf("%ld",&a)<br>for(aprintf("%d",a%10),a/=10)}

执行结果:

12345

54321

3.(1)源程序:

main()

{int x,y<br>scanf("%d",&x)<br>if (x>-5&&x<0)y=x<br>if (x>=0&&x<5)y=x-1<br>if (x>=5&&x<10)y=x+1<br>printf("%d\n",y)}

(2)源程序:

main()

{int x,y<br>scanf("%d",&x)<br>if(x<10) if(x>-5) if(x>=0) if(x>=5)y=x+1<br>else y=x-1else y=x<br>printf("%d\n",y)}

(3)源程序:

main()

{int x,y<br>scanf("%d",&x)<br>if(x<10) if(x>=5)y=x+1<br>else if(x>=0)y=x-1<br>else if(x>-5)y=x<br>printf("%d\n",y)}

(4)源程序:

main()

{int x,y<br>scanf("%d",&x)<br>switch(x/5) <br>{case -1:if(x!=-5)y=xbreak<br>case 0:y=x-1break<br>case 1:y=x+1}

printf("%d\n",y)}

4.本题为了避免考虑每月的天数及闰年等问题,故采用面向对象的程序设计。

现给出Delphi源程序和C++ Builder源程序。

Delphi源程序:

procedure TForm1.Button1Click(Sender: TObject)

begin

edit3.Text:=format('%.0f天',[strtodate(edit2.text) -strtodate(edit1.text)])

end

procedure TForm1.FormCreate(Sender: TObject)

begin

Edit2.Text:=datetostr(now)

button1click(form1)

end

C++ Builder源程序:

void __fastcall TForm1::Button1Click(TObject *Sender)

{

Edit3->Text=IntToStr(StrToDate(Edit2->Text)-StrToDate(Edit1->Text))+"天"

}

void __fastcall TForm1::FormCreate(TObject *Sender)

{

Edit2->Text=DateToStr(Now())

Button1Click(Form1)

}

执行结果:(运行于Windows下) http://img378.photo.163.com/nxgt/41463572/1219713927.jpg

5.源程序:

main()

{unsigned a,b,c<br>printf("请输入三个整数:")<br>scanf("%d %d %d",&a,&b,&c)<br>if(a&&b&&c&&a==b&&a==c)printf("构成等边三角形\n")<br>else if(a+b>c&&a+c>b&&b+c>a) <br>if(a==b||a==c||b==c)printf("构成等腰三角形\n")<br>else printf("构成一般三角形\n")<br>else printf("不能构成三角形\n")}

执行结果:

请输入三个整数:5 6 5

构成等腰三角形

6.源程序:

main()

{int x,y<br>scanf("%d",&x)<br>if(x<20)y=1<br>else switch(x/60) <br>{case 0:y=x/10break<br>default:y=6}

printf("x=%d,y=%d\n",x,y)}

7.源程序:

main()

{unsigned mfloat n<br>scanf("%d",&m)<br>if(m<100)n=0<br>else if(m>600)n=0.06<br>else n=(m/100+0.5)/100<br>printf("%d %.2f %.2f\n",m,m*(1-n),m*n)}

执行结果:

450

450 429.75 20.25

8. 2171天(起始日期和终止日期均算在内)

本题可利用第4小题编好的程序进行计算。把起始日期和终止日期分别打入“生日”和“今日”栏内,单击“实足年龄”按钮,将所得到的天数再加上1天即可。

9.源程序:

#include "math.h"

main()

{unsigned long i<br>scanf("%ld",&i)<br>printf("%ld %d\n",i%10,(int)log10(i)+1)}

执行结果:

99887

7 5

10.源程序:

main()

{unsigned long iunsigned j[10],m=0<br>scanf("%ld",&i)<br>for(i){j[m++]=(i+2)%10i/=10}

for(mm--)i=i*10+j[m-1]

printf("%ld\n",i)}

执行结果:

6987

8109

(注:要加密的数值不能是0或以0开头。如果要以0开头需用字符串而不能是整数。)

7 第6章 循环结构程序设计

一、单项选择题(第142页)

1-4.BCCB 5-8.CBCA

二、填空题(第143页)

1.原题可能有误。如无误,是死循环 2.原题有误。如果把b=1后面的逗号改为分号,则结果是8。 3.20 4.11 5. 2.400000 6.*#*#*#$ 7.8 5 2 8.①d=1.0 ②++k ③k<=n 9.①x>=0 ②x<amin

三、编程题(第145页)

1. 源程序:

main()

{int i=1,sum=i<br>while(i<101){sum+=i=-i-2sum+=i=-i+2}

printf("%d\n",sum)}

执行结果:

51

2.源程序:

main()

{double p=0,n=0,fint i<br>for(i=1i<=10i++) <br>{scanf("%lf",&f)<br>if (f>0)p+=felse n+=f}

printf("%lf %lf %lf\n",p,n,p+n)}

3.源程序:

main()

{unsigned a<br>scanf("%ld",&a)<br>for (aprintf("%d,",a%10),a/=10)<br>printf("\b \n")}

执行结果:

23456

6,5,4,3,2

4.源程序:

main()

{unsigned long a,b,c,i<br>scanf("%ld%ld",&a,&b)<br>c=a%1000<br>for(i=1i<bi++)c=c*a%1000<br>if(c<100)printf("0")<br>if(c<10)printf("0")<br>printf("%ld\n",c)}

执行结果:

129 57

009

5.略

6.原题提供的计算e的公式有误(前面漏了一项1)。正确的公式是e= 1 + 1 + 1/2! + 1/3! + … + 1/n! + …

(1)源程序:

main()

{double e=1,f=1int n<br>for(n=1n<=20n++){f/=ne+=f}

printf("e=%.14lf\n",e)}

执行结果:

e=2.71828182845905

(2)源程序:

main()

{double e=1,f=1int n<br>for(n=1f>1e-4n++){f/=ne+=f}

printf("e=%.4f\n",e)}

执行结果:

e=2.7183

7.源程序:

main()

{unsigned long a=0,b=1,c=0int i,d<br>scanf("%d",&d)<br>for (i=1i<=(d+2)/3i++) <br>printf("%10ld%10ld%10ld",a,b,(a+=b+c,b+=c+a,c+=a+b))}

本题还可以用递归算法(效率很低),源程序如下:

unsigned long fun(int i)

{return i<=3?i:fun(i-1)+fun(i-2)+fun(i-3)}

main()

{int i,dscanf("%d",&d)<br>for(i=1i<=di++) <br>printf("%10ld",fun(i))}

执行结果:

15

1 2 3 6 11 20 37 68

125 230 423 778 1431 2632 4841

8.源程序:

main()

{int i<br>for(i=1010i<=9876i+=2) <br>if(i/100%11&&i%100%11&&i/10%100%11&&i/1000!=i%10&&i/1000!=i/10%10&&i/100%10!=i%10)printf(" %d",i)}

执行结果:

1024 1026 1028 1032 1034 1036 …… …… 9874 9876

9.源程序:

main()

{int i,j,k<br>printf("apple watermelon pear\n")<br>for(i=1i<=100i++) <br>for(j=1j<=10j++) <br>if((k=100-i-j)*2==400-i*4-j*40) <br>printf("%4d%7d%9d\n",i,j,k)}

执行结果:

apple watermelon pear

5 5 90

24 4 72

43 3 54

62 2 36

81 1 18

10.源程序:

#include "stdio.h"

#define N 4

main()

{int m=N*2,i,j<br>for(i=1i<mprintf("\n"),i++) <br>for(j=1j<m<br>putchar(N-abs(i-N)<=abs(j++-N)?' ':'*'))}

如果把N值改为5,则执行结果如下:

*

***

*****

*******

*********

*******

*****

***

*

尊敬的白昼
追寻的芝麻
2026-05-09 21:40:07

C语言程序设计

链接:https://pan.baidu.com/s/1lz9auia1FNkY8RTHW3g1Zg

 提取码:8uar复制这段内容后打开百度网盘手机APP,操作更方便哦!

若资源有问题欢迎追问~

耍酷的小刺猬
聪明的白猫
2026-05-09 21:40:07

C语言程序设计-谭浩强

链接:  https://pan.baidu.com/s/1oyinQqqzKorqQomnWekeDQ

?pwd=8zg5 提取码: 8zg5

本书内容先进,体系合理,概念清晰,讲解详尽,降低台阶,分散难点,例题丰富,深入浅出,文字流畅,通俗易懂,是初学者学习C程序设计的理想教材,可作为高等学校各专业的正式教材,也是一本自学的好教材。

活泼的大象
坦率的火龙果
2026-05-09 21:40:07

C语言程序设计

链接:https://pan.baidu.com/s/1lz9auia1FNkY8RTHW3g1Zg

 提取码:8uar复制这段内容后打开百度网盘手机APP,操作更方便哦!

若资源有问题欢迎追问~

单身的小丸子
曾经的冰淇淋
2026-05-09 21:40:07

谭浩强【004】

链接:https://pan.baidu.com/s/1D9ABrVGilTPcfh9iAamcCQ

提取码:ncnf 复制这段内容后打开百度网盘手机APP,操作更方便哦!

若资源有问题欢迎追问~