C语言程序设计教程CJ_03C语言程序的流程控制_潭浩强第3版.
C语言程序设计(第三版)谭浩强著 各章习题答疑

以八、 /* 以八、十六进制输出 */
} ???? 是对应的带符号短整数。 输出结果是八进制整数 十六进制整数
2
3.9 计算某个表达式的值。 通用程序清单如下: stdio.h” #include ”stdio.h stdio.h void main() { ?????? x; 计算表达式值存入x x=( 表达式 );/* 计算表达式值存入x */ printf(”% printf( %?\n”,x); ,x); } ?????? 表达式对应的数据类型符(需事先判断) ? 表达式为整型,则为d 表达式为实型,则为f 3
第七章习题答疑(二)
折半查找法在排序数组中查找某个数。 上课时已有提示。 7.13 字符串连接(b[]中字符串连接到a[]中字符串后) 设:a[10]=”12 ,b[]=”abc 12”, abc” 12 abc (1)找到a串的’\0’的下标(i=2) ’ (2)j=0; 当型循环(b[j]!=’\0’) ’\ ’ a[i]=b[j],i++,j++ (3)a[i]=’\0’ \ 7.15 字符串复制(b[]中字符串复制到a[]中) 设:a[10]=”12”,b[]=”abc” (1)i=0; 当型循环(b[i]!=’\0’) a[i]=b[i],i++ (2)a[i]=’\0’ 7.9
18
第十章习题答疑(一)
输入3个整数,按照由小到大顺序输出。 int x,y,z,*px=&x,*py=&y,*pz=&x; 用以前的程序,其中的x、y、z换成*px、*py、*pz 10.3 输入10个整数存入一维数组a[10],将其中最小数与第1 个数交换,最大数与最后一个数交换。 要求编3个函数: 10 10 输入10个整数、交换、输出交换后的10个整数。 输入函数: void in(int *p,int n) 输出函数: void out(int *p,int n) 交换函数: void change(int *p,int n) 其中寻找最大最小数的方法: int *q,*max,*min; for (max=min=p,q=p+1;q<p+n;q++) { if(*max<*q) max=q; if(*min>*q) min=q; } 19 交换的方法:*p和*min,*(p+n-1)和*max 10.1
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程序设计第三版课后习题答案全解File->New->Project在打开的New Project对话框中最左侧一栏中选择Visual C++下面的CLR,之后在其右侧的区域中选择CLR Empty Application并在下面的三个文本框中填入工程名称(Name),工程位置(Location)以及解决方案名称(Solution Name)之后单击OK然后可以解决方案浏览器中看到刚才新建的工程,右击工程名,选择Properties(属性),在打开的对话框中选择Configuration Properties(配置属性)下面的General(一般),然后将右边对话框中的Common Language Runtime Support(CLR支持)改为"No Common Language Runtime Support",然后点击确定退出接下来右击工程中的Source Files,选择Add->New Item...,在打开的对话框中选择"C++ File(.cpp)",并在下方输入一个以.c结尾的文件名,之后点击Add,之后就可以在这个文件中加入C语言代码,按F5就可以调试运行了。
1.5请参照本章例题,编写一个C程序,输出以下信息:**************************Very Good!**************************解:main(){printf("**************************");printf("\n");printf("Very Good!\n");printf("\n");printf("**************************");}1.6 编写一个程序,输入a、b、c三个值,输出其中最大值。
第2章算法--C语言程序设计(谭浩强第三版)概要

本例中,变量i作为下标,用它来控制序号(第几个学生, 第几个成绩)。当 i超过50时,表示已对50个学生的成绩处理 完毕,算法结束。
描述对数据的 操作步骤
完整的程序设计应该是:
数据结构+算法+程序设计方法+语言工具
程序设计方法:结构化程序设计方法
3
语言工具:c语言
二、简单的程序设计一般包括: 1、确定数据结构 2、确定算法 3、编码 4、调试程序 5、整理并写出文档资料
4
2.1 算法的概念
1、算法定义:广义地说,为解决一个问题而采取的方法和步 骤,就称为“算法”。
34
模块设计的方法 是一种“分而治之”的思想,把一个大任务分为若干个子
任务,每一个子任务就相对简单了。 拿到一个程序模块以后,根据程序模块的功能将它划分为
若干个子模块,如果这些子模块的规模还嫌大,还再可以 划分为更小的模块。这个过程采用自顶向下方法来实现。
子模块一般不超过50行。 划分子模块时应注意模块的独立性,即:使一个模块完成 一项功能,耦合性愈少愈好。 结构化编码 将设计好的算法用计算机语言来实现,实现时使用的是与 三种基本结构对应的语句。
取得必要的信息。 (4)有一个或多个输出。算法的目的是为了求解,“解”就是输
出。 (5)有效性。算法中的每一个步骤都应当能有效地执行,并得到
确定的结果。
6
2.3 算法的表示
为了表示一个算法,可以用不同的方法。归纳为两大类: (1)文字 (2) 图形(符号)
常用的方法有: 自然语言 传统流程图 N-S流程图 伪代码 PAD图等。
谭浩强C语言程序设计教程(第三版)课后习题答案

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语言的基础知识、语法规则、程序设计技巧以及一些高级主题。
以下是对这本教程的详细内容概述。
第一章:C语言概述本章介绍了C语言的发展历程、特点和应用领域,让读者对C语言有一个整体的认识。
同时,也介绍了C语言程序的基本结构和编译、链接过程。
第二章:数据类型、运算符和表达式这一章详细讲述了C语言中的基本数据类型,包括整型、浮点型、字符型等,以及它们在内存中的存储方式。
此外,还介绍了各种运算符的用法和优先级,以及如何构建表达式。
第三章:控制语句控制语句是程序设计中非常重要的部分,本章讲解了条件语句(if、switch)、循环语句(for、while、do-while)以及跳转语句(break、continue、goto)的用法和应用场景。
第四章:数组数组是C语言中一种基本的数据结构,用于存储具有相同类型的多个数据项。
本章介绍了一维数组和二维数组的声明、初始化和访问方法。
第五章:指针指针是C语言的核心概念之一,本章深入讲解了指针的基本概念、指针与数组的关系、指针的运算以及指针在函数中的应用。
第六章:函数函数是程序模块化的基础,本章介绍了函数的定义、声明、调用以及参数传递机制。
同时,也讨论了递归函数和内联函数的概念。
第七章:预处理指令预处理指令是C语言编译过程中的指令,用于在编译前对源代码进行处理。
本章介绍了宏定义、文件包含、条件编译等预处理指令的用法。
第八章:结构体和联合体结构体和联合体是C语言中用于创建复杂数据类型的工具。
本章讲解了它们的声明、初始化以及在程序中的应用。
第九章:位运算位运算是直接对数据的二进制位进行操作的运算。
本章介绍了位运算符的用法和一些常见的位运算技巧。
第十章:文件操作文件操作是程序与外部数据交互的重要方式。
C语言程序设计第三版谭浩强课后习题答案完整版

C语⾔程序设计第三版谭浩强课后习题答案完整版C语⾔程序设计第三版谭浩强课后习题答案完整版第⼀章1.5请参照本章例题,编写⼀个C程序,输出以下信息:**************************值,输出其中最⼤值。
解:mian(){int a,b,c,max;printf(“请输⼊三个数a,b,c:\n”);scanf(“%d,%d,%d”,&a,&b,&c);max=a;if(maxmax=b;if(maxmax=c;\1aaㄩbbㄩㄩㄩccㄩㄩㄩㄩㄩㄩabc AㄩN3.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’,并输{是%c%c%c%c%c\n",c1,c2,c3,c4,c5); }运⾏结果:密码是Glmre3.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设量。
(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=c1=c2=printf("a=%2d b=%2dc=%2d\n",a,b,c);printf("x=%f,y=%f,z=%f\n",x,y,z); printf("x+y=%5.2fy+z=%5.2fz+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)"); }ˊA ˊ,;); 4.8设圆半径r=1.5,圆柱⾼h=3,求圆周长、圆⾯积、圆球表⾯积、圆球体积、圆柱体积。
C语言程序设计(第三版)_谭浩强(3)

系统先把2.45678和4523.65作为双精度数,然后进行相乘的运算,得到 的乘也是一个双精度数。最后取其前7位赋给浮点型变量f。如是在数的 后面加字母f或F(如1.65f, 654.87F),这样编译系统就会把它们按单 精度(32位)处理。
§3.5字符型数据
§ 3.1 C的数据类型
C语言提供了以下一些数据类型。
数据类型
基本类型
构造类型 指针类型
整型 int
字符型 char 单精度实型
实型(浮点型)
float
数组类型
双精度实型
double
结构类型 struct
联合类型 union
枚举类型 enum
空类型(无值类型) void
§3.2 常量与变量3.2. Nhomakorabea 常量和符号常量 在程序运行过程中,其值不能被改变的量称为常量 常量区分为不同的类型:
total=num * PRICE; printf(″total=%d\n″,total); } 说• 明说:明用:程一如序个再中标用用识赋#符d值代e语f表in句e一给命个P令常R行IC量定E的义,称PR为IC符E号代常表量常,量即3以0,标此识后符凡形在式本
• 文出P件现R中的IC出常E=现量40的。; 符PR号IC常/E*都量错代的误表值,3在不0,其能可作给以用符和域号常(常量在量一本赋样例值进中。行为运主算函数)内不能 改变,也不能再被赋值。
类型 float double型 long double
位数 32 64 128
数的范围 10-37 ~ 1038 10-307~10308 10-4931~104932
有效数字 6~7 位 15~16位 18~19位
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.4.5 循环结构的中途退出与重复周期的中途结束
1.break——中途退出循环结构 格式: break; 在switch语句终止某个case语句 结束本层循环。 3. Goto语句 格式: goto 标号; 跳转到标号处语句 标号:语句
例0351:
2.continue——提前结束一个重复周期
假 score>=70 真
假
score>=60
等级A
Page 11
等级B
等级C
等级D
辽宁师范大学 蔡静
例:
例:求一元二次方程ax2+bx+c=0的根。
真
真 b=0
a=0 假 disc=b*b - 4*a*c
假
disc<0 真 假 输出“无解” 输出单根: 输出两复数根 输出两实根 x=-c/b
Page 12
辽宁师范大学
蔡静
3.3.3 switch语句
导入: 例1:键盘输入数字月份,输出该月的英文。 算法分析:
开始 输入月份 判断某月 ……
输出该月英文 ……
结束
……
Page 13
辽宁师范大学
蔡静
格式一:
表达式
常量表达式1
switch(表达式) { case 常量表达式1: 语句块1; break; case 常量表达式2: 语句块2; break; …... case 常量表达式n: 语句块n; break; default: 语句块n+1; break; }
开始 输入月份
判断某月 ……
输出该月英文 ……
……
结束
Page 16
辽宁师范大学
蔡静
思考题:
题1:给一个百分制成绩输出相应 的成绩等级A、B、C、D、E。 A:90-100; B:80-89; C:70-79; D:60-69; E:0-59 题2:编写一程序。在屏幕上显示 一菜单,并根据用户的选择执行 相应的功能。
例:(穷举)张丘建《算经》 “百鸡问题”: 鸡翁1值钱5,鸡母1值钱3,鸡雏3值钱1。百钱买百鸡, 方程组 问级翁、鸡母、鸡雏各几何? cock+hen +chick=100 cock*5+hen*3 +chick/3=100
一级算法:
for(cock = 0;cock<=19;cock++) 找满足方程组的hen , chick ;
•表达式2
假 •…...
continu e 真
if (表达式2)
•while循环的下一语句
continue;
•while循环的下一语句
}
Page 30
…….
循环小结:
循环次数已知与否: 循环变量初始值的赋值; 结束循环的方式。
Page 31
辽宁师范大学
蔡静
1. 有一函数 x (x<1) y = 2x - 1 (1≤x<10) 3x -11 (10≤x) 用 scanf 函数输入 x 的值, 求 y 值。
Page 17
辽宁师范大学
蔡静
3.4 循环型程序设计
3.4.1 迭代与穷举算法
迭代:不断用新值代替旧值,或由旧值递推出新值的过程.
迭代的要素:
初值 迭代公式 迭代次数或迭代终止标志 人口增长 兔子繁殖 一元方程的迭代解法
辽宁师范大学 蔡静
例:
Page 18
3.4.1 迭代与穷举算法(续)
穷举:对问题的所有状态都一一测试,直到找 到解或所有可能状态都测试过为止。 例:
录取新生 百钱买百鸡 搬砖
Page 19
辽宁师范大学
蔡静
3.4.2 while 结构
while (表达式) 循环体
表达式
真 假
循环体
说明:
循环体中必须有语句能改变表达式的值,否则死循环;
循环体可为单句或复句。
语句1 语句2
… 假
表达式 真 n 语句n
语句n+1
Page 10
例:
例:从键盘上输入一个学生三门课程的成绩, 计算其 平均成绩高于80分时, 输出A; 平均成绩在70~80分之 间,输出B; 60~70之间时,输出C;平均成绩不及格(小于 60分)时,输出*。
输入score
score>=80 真
蔡静
例:打印九九乘法表。
一级算法:
① 打印表头; ② for (i=1; i <=9; i++) {ⓐ 换行; ⓑ 打印第 i 行;
}
二级求精:
ⓑ 打印第 i 行:
for (j=1; j <= i; j++) /* 打印第 j 个乘式*/ { printf (“%d*%d = %2d”, j, i, j*i); printf (“\t”); }
•表达式1
假
•表达式2
真
表达式1; 相当于: while ( 表达式2) { 循环体 表达式3; }
Page 23
•循环体
•表达式3
辽宁师范大学
蔡静
说明:
表达式2多为关系、逻辑表达式或数值、字符型数据, 表达式1、3可为赋值、逗号表达式等; 表达式1、3皆可省略,此时等价为 while 语句,但分号不 可省略。表达式1、2、3都省略,即 for ( ; ;)循环体 ,相当于 while ( 1) 循环体,即死循环; 表达式3或循环体中必须有语句改变表达式2的值,否 则死循环。循环体为空语句时即 for ( 表达式1;表达式2;);
语句
表达式
真 假
功能:若表达式为“真”(非零),则执行语句, 语句 否则执行 if 语句的下一语句。
Page 8
辽宁师范大学
蔡静
例:
例1:键盘输入一个数,求其绝对值。
例2:从键盘上输入两个数,求最大数。
从键盘上输入三个数,求最大数。
例3:键盘输入某年,输出该年是否闰年。
Page 9
辽宁师范大学
蔡静
3.1.1 算法的组成要素与基本性质
1、算法的组成要素:
操作 控制结构
顺序
真 A C
选择
假 C
循环
假 真 A
B
A
B
A
真 C 假
Page 4
辽宁师范大学
蔡静
3.2 用C语句描述算法
语句 函数 文件模块 程序
(语句都以分号结束)
Page 5
辽宁师范大学
蔡静
5类C语句
表达式语句
赋值语句;函数调用语句;空语句;复合表达式语句 条件语句 if ( ) ~ else ~ 多分支选择语句 switch 循环语句for ( ) ~ while ( ) ~ do ~ while( ) if( ) ~
2. 给一个不多于5位的正整数,要求: 求出他是几位数; 分别打印出每一位数字; 按逆序打印出各位数字。 (如:原数是134,则输出431)
Page 32
3. 输入两个正整数, 求其中最大公约数 和最小公倍数。 4. 猴子吃桃问题. 猴子第一天摘下若干 桃子, 吃了一半, 不过瘾, 又吃了一个; 第二天又降剩下的桃子吃掉一半, 又 多吃了一个;以后每条都吃掉前一天剩 下的一半零一个.到第十天想吃时,见只 剩下一个桃子了. 求第一天共摘了多少 桃子. 5.一球从100米高度自由落下,每次落 地后发跳回原高度的一半,再落下。 求它第10次落地时共经过多少米?第 10次反弹多高?
Page 24
辽宁师范大学
蔡静
例:
累加求和:和置0
例1:求1到100 的整数的和。 累乘求积:积置1 例2:设有一张无穷大的纸,厚0.1mm,问对折多少次才 能达到珠峰高度(8848m)? 例3:打印九九乘法表 例4:兔子繁殖问题,fibonacci数列 例5:梯形法求数值积分
Page 25
辽宁师范大学
Page 14
switch控制结构
case分支可公用; ②常量表达式为 int, char 型; ⑥switch语句可嵌套。
辽宁师范大学 蔡静
格式二:
表达式 常量表达式1
语句块1
常量表达式2 语句块2 ┇ 常量表达式i 语句块i ┇ 常量表达式n 语句块n default 语句块n+1
switch(表达式) { case 常量表达式1: 语句块1; case 常量表达式2: 语句块2; …... case 常量表达式n: 语句块n; default: 语句块n+1; }
do 循环体 while (表达式)
循环体 表达式
假
真
说明: 循环体中必须有语句能改变表达式的值,否则死循环; 循环体可为单句或复句; 循环体至少执行一次。
Page 22
辽宁师范大学
蔡静
3.4.4 for 结构
•初始化 •循环变量更值 •循环终止条件
for ( 表达式1;表达式2;表达式3) 循环体
语句 1
else 语句 2
真
表达式
假
语句 1
语句 2
功能:对表达式进行判断,若为“真”(非零),就执行if分结 构(语句1);否则(值为0),就执行else分结构(语句2)。 说明:表达式为关系表达式、逻辑表达式或数值数据; 语句可为单句或复合语句。
Page 7
辽宁师范大学
蔡静
二、 if (表达式)
二级求精:找满足方程组的hen , chick
for(hen = 0;hen <= 33;hen++) 找满足方程组的 chick ;