C语言课后习题答案 (2)_第1页
C语言课后习题答案 (2)_第2页
C语言课后习题答案 (2)_第3页
C语言课后习题答案 (2)_第4页
C语言课后习题答案 (2)_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 第一章 C 语言程序设计概述 习题答案 1 算法的描述有哪些基本方法 答 1 自然语言 2 专用工具 2 C 语言程序的基本结构是怎样的 举一个例子说明 答 1 C 语言程序由函数构成 2 与 之间的内容构成 C 语言程序的注释部分 3 用预处理命令 include define 可以包含有关文件或预定义信息 4 大小写字母在 C 语言中是有区别的 5 除 main 函数和标准库函数外 用户也可以自己编写函数 应用程序一般 由多个函数组成 这些函数指定实际所需要做的工作 3 C 语言有什么特点 答 1 具有结构语言的特点 程序之间很容易实现段的共享 2 主要结构成分为函数 函数可以在程序中被定义完成独立的任务 独立地编 译代码 以实现程序的模块化 3 运算符丰富 包含的范围很广 4 数据类型丰富 5 允许直接访问物理地址 即可直接对硬件进行损伤 实现汇编语言的大部分 功能 6 限制不太严格 程序设计自由度大 这样使 C 语言能够减少对程序员的束缚 7 生成的目标代码质量 程序执行效率高 同时 C 语言编写的程序的可移植性 好 4 指出合法与不合法的标识符命名 答 AB12 leed 3 a b2 8stu D K Jon EF3 3 PAS if XYZ43K2 AVE XY 762 DT5 C D 2 5 说明下列 Turbo C 热键的功能 答 F2 源文件存盘 F10 调用主菜单 F4 程序运行到光标所在行 用于调试程序 Ctrl F9 编译并链接成可执行文件 Alt F5 将窗口切换到 DOS 下 查看程 序运行结果 6 说明下列 Turbo C 方式下输入并运行下列程序 记录下运行结果 main printf n printf welcome you n printf very good n printf n main int a b c t printf please input three numbers scanf d d d 教材 S 是错误的 t max max a b c printf max number is d n t int max int x int y int z if x y z x else z y return z 答 运行结果 welcome you very good 运行结果 please input three numbers 3 1 4 左侧下划线内容为键盘输入 max number is 4 7 一个 C 程序是由若干个函数构成的 其中有且只能有一个 函数 3 答 main 8 在 Turbo C 环境下进行程序调试时 可以使用 Run 下拉菜单的 命令或按 键转到用户屏幕查看程序运行结果 答 1 User screen 2 Alt F5 9 C 语言对标识符与关键字有些什么规定 答 1 标识符用来表示函数 类型及变量的名称 它是由字母 下划线和数字组 成 但必须用字母或下划线开头 2 关键字是一种语言中规定具有特定含义的标识符 其不能作为变量或函数名 来使用 用户只能根据系统的规定使用它们 10 C 源程序输入后是如何进行保存的 答 是以 C 为扩展名保存的纯文本文件 第二章 C 语言程序的基本数据类型与表达式 习题答案 1 指出下列常数中哪些是符合 C 语法规定的 答 101 e3 019 0 x1e ab n 1 e5 2 3 e 4 2 5 2e2 5 2 请找出下列程序中的错误 改正后写出程序运行结果 4 void main int x y z 5 aver x 7 AVER x y z 3 printf AVER d n aver void main char c1 a c2 b c3 c int a 3 5 b A printf a db end n a b printf a cb c bc c tabc n c1 c2 c3 答 main int x y 5 z 5 aver x 7 aver x y z 3 printf AVER d n aver 运行结果 AVER 5 main char c1 a c2 b c3 c int a 3 b A printf a d b c end n a b printf a cb c bc c tabc n c1 c2 c3 运行结果 a 3 b A end aabcc abc 3 写出下列赋值的结果 表格中写了数值的是要将它赋给其他类型的变量 将所 有的空格填上赋值后的数据 实数保留到小数点后两位 int 99 1 char 5 h unsigned int 66 float 55 78 long int 68 答 int 99 104 66 55 68 1 char c 6 h B 7 D unsigned int 99 104 66 55 68 65535 float 99 00 104 00 66 00 55 78 68 00 1 00 long int 99 104 66 55 68 1 4 写出程序运行结果 void main int i j i 8 j 10 printf d d d d n i j i j main int a 1 b 2 c 30 printf d d d d n a b c a b c a b c a b c 7 注意 a b c a b c 之间应为逗号 教材有误 答 运行结果 9 11 9 10 运行结果 30 1 0 0 void main int a 10 b 20 c 30 d d a 20 c printf d d d d n a b c d 答 运行结果 11 19 30 1 5 写出下面表达式的值 设 a 10 b 4 c 5 d 1 x 2 5 y 3 5 a b 3 n a a a a float a c 2 int x int y a b c a c b a c b a b x A b c a b 18 b 4 3 a b a b x a 3 int x y 2 4 sizeof int a b a c0 x x 的功能是什么 答 如果 x 的值是一正数 则表达式的值为 x 值 如果 x 的值是一非正数 则表达 式的值为 x 其实该表达式的值即为 x 的绝对值 C 语言中提供了一个函数 fabs x 即可完成此功能 该函数包含在 math h 头文件中 8 用一个条件表达式描述从 a b c 中找出最大都赋给 max 答 max a b c b c a b c b c 9 若 x 为 int 型变量 则执行以下语句后 x 的值为 x 6 x x x x A 36 B 60 C 60 D 24 答 B 10 9 若有以下类型说明语句 char w int x float y double z 则表达式 w x z y 的结果为 类型 A float B char C int D double 答 D 第三章 顺序结构程序设计 习题答案 1 变量 k 为 float 类型 调用函数 scanf d 后的 输出是 答 1234 1234 分析如下 3d 为右对齐输出变量 且指定输出变量的值宽度为 3 个字符位 如果变量 实际位数小于 3 则左端补空格 如果变量实际位数大于 3 则按实际长度输出 不受限制 3d 为左对齐输出变量 在输出变量时 如是变量实际位数小于 3 则在右 端补空格 否则按实际输出 3 设有 int a 255 b 8 则 printf x o n a b 输出是 答 ff 10 如果 printf X o n a b 则输出为 FF 10 说明在输出十六进制字 母时 其大小写受格式修饰符的限制 如果是 x 则输出小写 如果是 X 则输出大写 如果希望在输出十六进制时输出前导符 0 x 或 0X 则以上输出语句应改 10 printf x o n a b 为或 printf X o n a b 本条解释 不必须掌握 4 以下程序输出的结果是 main int a1 1 a2 0 a3 2 printf d d d n a1 a1 a2 a3 a3 a1 答 1 3 1 5 printf 函数中用到格式符 5s 其中 5 表示输出字符占用 5 列 如果字符串长 度大于 5 则按 输出 如果字符串长度小于 5 则按 输出 答 实际 左端补空格 6 已定义变量如下 int a1 a2 char c1 c2 若要求输入 a1 a2 c1 和 c2 的值 正确的输入函数调用语句是 答 scanf d d c c 7 输入两个整型变量 a b 的值 输出下列算式以及运算结果 a b a b a b a b float a b a b 每个算式占一行 如 a 10 b 5 a b 输出为 10 5 15 答 设 int a 10 b 5 以下为输出语句及结果 printf d d d n a b a b 10 5 15 printf d d d n a b a b 10 5 5 printf d d d n a b a b 10 5 50 printf d d d n a b a b 10 5 2 printf float d d f n a b float a b float 10 5 2 000000 printf d d d n a b a b 10 5 0 11 8 输入一个非负数 计算以这个数为半径的圆周长和面积 答 define PI 3 1415926 main float r l area printf Input a positive scanf f l 2 PI r area PI r r printf l f tarea f n l area 9 输入任意一个 3 位数 将其各位数字反序输出 例如输入 123 输出 321 答 main int x y printf Input a number 100 999 scanf d y 100 x 10 10 x 10 10 x 100 注意分析此处算法 printf d d n x y 10 输入任意大小的 3 个整数 判断其中是否有两个奇数一个偶数 若是则输出 YES 不是则输 出 NOT 要求用条件表达式进行判断 不使用 if 语句 答 main int x y z oddcount 0 奇数数计数变量 printf Input x y z scanf d d d x 2 1 oddcount 0 y 2 1 oddcount 0 z 2 1 oddcount 0 oddcount 2 printf YES printf NOT 11 12 求前驱字符和后继字符 输入一个字符 找出它的前驱字符和后继字符 并按 ASCII 码值 按从大到小的顺序输出这 3 个字符及其对应的 ASCII 码值 答 本题考查同学们对字符类型数据的认识 如果在 ASCII 范围内则即可以显示为 字符 又可以显示为整数值 无论是否能够显示为字符 字符类型数据是可能 参与数值运算的 切记 main char c printf Input character scanf c printf c d n c 1 c 1 printf c d n c c printf c d n c 1 c 1 getch 为便于调试程序 运行至此程序停顿 此时可以看到运行结 果 按任意键程序真难得结束并返回到编辑环境 12 输入三角形的边长 求三角形面积 面积 sqrt s s a s b s c s a b c 2 答 include math h 由于程序中使用了开平方函数 sqrt 所以需要包含 数学头文件 main float a b c s area int ok 0 printf Input a b c scanf f f f a b c ok 0 以下 3 条语句为判断是否输入的数据是否构成封闭三角 形 a c b ok 0 b c a ok 0 ok 3 s a b c 2 area sqrt s s a s b s c printf area f area printf error getch 13 第四章 选择结构程序设计 习题答案 1 设 x t 均为 int 型变量 则执行语句 x 10 t x 后 t 的值为 答 0 2 假定所有变量均已正确定义 则程序段 int a 0 y 10 if a 0 y else if a 0 y else y y 运行后 y 的值是 答 20 3 能表述 20 x 30 或 x20 则以下语句执行结果是 if a 25 else printf a d b d c d n a b c 答 a 25 b 14 c 19 5 假定 i 和 j 为 int 型变量 则执行以下语句后 i 的值是 int i 1 switch i case 1 for j 0 j 9 j i j break case 2 for j 1 j 10 j i j break 14 case 3 i 答 37 分析 执行了 case 1 和 case 3 中的代码 同时 case 1 语句中的 是 可以取消的 6 以下两条 if 语句可合并成一条 if 语句 即 if ab printf y d n y else printf x d n x 答 if a1 printf outside else if d0 16 if a 30 m 1 else if a 40 m 2 else if a 50 m 3 else if a 60 m 4 else m 5 答 switch a 10 case 1 case 2 case 3 m 1 break case 4 m 2 break case 5 m 3 break case 6 m 4 break default m 5 12 有一函数 x 1 5 x 0 y x x 0 x 1 0 x 5 else if x 0 y 0 else y x 1 printf y f n y main float x y scanf f if x0 y x 1 else if x 0 y 0 else if x 5 y x 1 printf y f n y 使用多分支语句程序如下 main float x y int m printf Input x scanf f if x 5 else if x 0 m 0 else m 1 switch m case 1 y x 1 break case 0 y 0 break case 1 y x 1 break printf y f n y 以下为假设对 int 类型的变量进行处理 但毕竟不算完美 main int x y printf Input x 18 scanf d switch x case 4 case 3 case 2 case 1 y x 1 break case 0 y 0 break case 1 case 2 case 3 case 4 case 5 case 6 case 7 y x 1 break printf y d n y 第五章 循环结构程序设计 习题答案 1 输入 n 个整数 求这 n 个数之中的偶数平均值 并输出 答 main int n i x sum 0 count 0 printf Input n scanf d for i 0 i a getch 5 设某县 2000 年工业总产值为 200 亿元 如果该县预计平均年工业总产值增长 率为 4 5 那么多少年后该县年工业总产值将超 500 亿元 答 main float x 200 int n 0 do x 1 0 045 n while x 500 printf n d n getch 6 输出 1 999 中能被 3 整除 而且至少有一位数字是 5 的所有数字 答 main int x y flag for x 1 x 1000 x flag 0 y x if y 3 0 余数为 0 说明该数能够被 3 整除 while y 10 0 21 if y 10 5 flag 1 依个位 十位 百位顺序判断是否 余数为 5 y 10 if flag 1 printf d t x getch 7 求爱因斯坦数学题 有一条长阶 若每步跨 2 阶 则最后剩 1 阶 若每步跨 3 阶 则最后剩 2 阶 若每步跨 5 阶 则最后剩 4 阶每步跨 6 阶 则最后剩 5 阶 每步跨 7 阶 最后正好 1 阶 答 main int x 0 flag 0 while 1 x if x 2 1 if x 3 2 if x 5 4 if x 6 5 if x 7 0 printf d x break getch 8 输入一个 3 位数 判断是否是一个 水仙花数 水仙花数是指 3 位数的各位 数字的立方和等于这个 3 位数本身 例如 153 1 1 1 5 5 5 3 3 3 答 main int x a b c 22 printf Input number scanf d a x 100 变量 a 中记录 x 的百位数字 b x 10 10 变量 b 中记录 x 的十位数字 c x 10 变量 c 中记录 x 的个位数字 if a a a b b b c c c x printf d d d d d d d d d d n x a a a b b b c c c printf YES else printf NOT getch 9 计算斐波那契分数序列前 n 项之和 n 是某个常数 波那契分数序列为 2 1 3 2 5 3 8 5 答 main int i n 10 float f1 1 f2 2 f sum 0 for i 0 i n i sum f2 f1 f f1 f2 f1 f2 f2 f printf total d nsum f n sum getch 10 输入一个正整数 各输出 n 行的正 倒 三角形宝塔图案 答 main int n i j printf Input n scanf d 23 for i 0 i n i for j i 1 j n j printf for j 0 j 2 i 1 j printf printf n for i 0 i n 1 i for j 0 j i 1 j printf for j 2 i 1 j n 1 j printf printf n getch 11 输出九九乘法表 答 main int i j for i 1 i 9 i for j 1 j 0 y 10 y if x 0 continue else if x 0 if f 1 x x nsum x ncnt else psum x pcnt printf d n x 25 f 0 x 0 y 1 continue if x 0 if f 1 x x nsum x ncnt else psum x pcnt printf d n x printf n n printf Plus n printf Count d n pcnt printf Average f n psum pcnt printf n printf Negative n printf Count d n pcnt printf Average f n nsum ncnt getch 13 一个整数等于该数所有因子之和 则称该数是一个完数 例如 6 和 28 都是 完数 因为 6 1 2 3 28 1 2 4 7 14 输出 3 位数中所有的完数 答 main int k1 k2 k3 k4 k5 k6 k7 k8 k9 k10 int i a n s for a 100 a 999 a n 0 n 累计因子的个数 s a s 存放未求出的因子之和 初值为被测数本身 26 for i 1 i 1 printf d d k1 k2 n 1 表示 a 至少有 2 个因子 if n 2 printf d k3 注意以下 if 的用法 追加的 方法 if n 3 printf d k4 if n 4 printf d k5 if n 5 printf d k6 if n 6 printf d k7 if n 7 printf d k8 if n 8 printf d k9 if n 9 printf d k10 printf n getch 14 编写程序按下列公式计算 e 的值 精度为 1e 6 e 1 1 1 1 2 1 3 1 n 答 27 main int i double e 0 t 1 for i 1 t 0 000001 i for j 1 j i j t j t 1 t e t printf e f n e getch 15 用二分法求方程 2x3 4x2 3x 0 在 10 10 附近的根 二分法 先找到 a b 使 f a f b 异号 说明在区间 a b 内一定有零点 然后求 f a b 2 现 在假设 f a 0 a b 如果 f a b 2 0 该点就是零点 如果 f a b 2 0 则在区间 a b 2 b 内有零点 按上述方法再求该区间中点的函数值 通过每次把 f x 的零点所有小区间收缩一半的方法 使区间的两个端点逐步迫 近函数的零点 以求得零点的近似值 该值即是方程的根 答 include math h main double x fx fa fb a 10 b 10 z 0 0001 fa 2 a a a 4 a a 3 a fb 2 b b b 4 b b 3 b if fa fb 0 do x a b 2 fx 2 x x x 4 x x 3 x if fxz printf The root is lf n x getch 第六章 函数与编译预处理 习题答案 1 写两个函数 分别求两个整数的最大公约数和最小公倍数 用主函数调用这 两个函数 并输出结果 两个整数由键盘输入 答 main unsigned int m n p q for printf m n scanf d d if m 0 nn i m m n n i for i m i 0 i if m i 0 int funq int m int n int i if m n i m m n n i for i m i47 return 3 30 3 按照第 5 章第 8 题的要求编写判断水仙花数的函数 从主函数输入正整数 n 在主函数中调用判断水仙花数的函数 找出 n 以内所有的水仙花数 输入一个 3 位数 判断是否是一个 水仙花数 水仙花数是指 3 位数的各 位数字的立方和等于这个 3 位数本身 例如 153 1 1 1 5 5 5 3 3 3 答 main int x i f printf Input number scanf d for i 0 i x i f 0 f fun i if f 1 printf d t i getch int fun int x int a b c a x 100 b x 10 10 c x 10 if a a a b b b c c c x return 1 else return 0 4 定义一个宏 实现将两个数互换 并写出程序 输入两个数作为使用参数 并显示结果 答 define f a b a a b b a b a a b main int x y printf Input x y scanf d d printf d d x y f x y 31 printf d d n x y getch 5 已知二阶 Fibonacci 数列 0 若 n 0 Fib n 1 若 n 1 Fib n 1 Fib n 2 其它情况 定义递归函数求 Fib n 答 main int i n printf Input n scanf d for i 0 i n i printf d t fib i getch int fib int n if n 0 return 0 else if n 1 return 1 else return fib n 1 fib n 2 6 定义函数求 F n m n m n 均为任意正整数 要求使用递归调用 答 long int f int x main int i m n long int sum printf Input m n scanf d d sum f n m f n printf ld sum getch long int f int x 32 int i j if x 0 x 1 return 1 else return x f x 1 7 定义一个函数完成第 5 章第 11 题的功能 输出九九乘法表 答 main fun getch fun int i j for i 1 i 9 i for j 1 j i j printf d d 3d j i i j printf n 8 如果有两个数 每一个数的所有约数 除了它本身以外 的和正好等于对方 则称这两个数为互满数 求出 30000 以内所有的互满数 并显示输出 求一个 数它的所有约数 除了它本身以处 的和 用函数实现 答 main int x y for x 1 x 30000 x for y 1 y x y if facsum x y getch 33 facsum int n int i sum 0 for i 1 i n i if n i 0 sum i return sum 9 编写以下函数 输入职工的姓名和职工号 按职工号由小到大排序 姓名 顺序也随之调整 输入一个职工号 找出该职工的姓名 在主函数中调用这 些函数 答 10 设计程序完成下列计算 已经 y f x n f x 2 3 n f x 3 2 n 3 其中 f x n 1 x2 2 x4 4 1 n x2n 2n n 0 当 x 5 6 n 7 时 求 y 要求通过嵌套调用完成计算 答 include float f float x int n float f1 float x int m float f2 int m main float x 5 6 y int n 7 i y 1 f x n f x 2 3 n f x 3 2 n 3 printf y f n n y float f float x int n float sum 0 0 34 int i for i 1 i n i sum f1 1 i f1 x 2 i f2 2 i return sum float f1 float x int m int i float y 1 0 for i 1 i m i y x return y float f2 int m int i float y 1 for i 1 i m i y i return y 第七章 数 组 习题答案 1 以下各题中 选择一个正确的答案 1 能正确对一维数组 a 中所有元素进行初始化的是 A int a 5 B int a 0 C int a 5 0 0 0 0 0 D int a 5 0 2 有说明 int k 3 a 10 则下列可以正确引用数组元素的表达式是 35 A a k B a 10 C a 1 3 D a 3 5 3 有定义 int d 3 1 2 3 4 5 6 执行语句 printf c d 1 0 A 结果是 A A B B C D D E 4 有定义 char c A ch 20 a b c 0 d 0 若执行 printf s ch 结果是 A abc B abc C abcd D abc 0d 5 对数组进行初始化 char carr s t u d e n t barr student 则正确的是 A carr 与 barr 长度相同 B carr 比 barr 长 C carr 与 barr 相同 D carr 比 barr 短 答 1 BD 2 A 3 D 4 B 5 D 2 阅读下列程序 写出程序的执行结果 1 include include void main int i j temp d 4 4 1 2 3 4 5 6 7 8 4 3 2 1 1 2 3 4 for i 0 i 4 i for j 0 jd j i d j i d i j for i 0 i 4 i printf n for j 0 j i printf 6d d i j else printf c 2 若输入十进制数 3291 时 下列程序输出为 include void main int i d m n char s 8 scanf d 36 i 0 i 是用来存放转换后的数组元素下标 do m n 8 d n 8 s i 0 d i n m while n 0 for i i 0 i putchar s i 反向输出字符 答 1 1 5 4 4 6 7 8 2 3 4 2 6333 3 程序填空 在 处填写合适的语句 完善下列程序 1 从键盘输入一个数 将其插入到一个升序数组中 保持数组仍然按升序排列 include void main int data temp k static int a 9 10 2 4 8 10 15 25 50 printf nEnter a data scanf d for k 8 k if a k a k 1 a k a k 1 a k 1 temp else for k 0 k printf 7d a k 2 从键盘输入一串英文字符 不含空格与其他字符 统计每个字符的个数 并输出字母及相应的个数 include 37 include 本行代码教材中应该加上 因为程序中有 putchar void main int i 0 c 52 0 m 0 char str 80 printf Input a string scanf str while str i if str i A if str i a i for i 0 i 26 i if c i if m 8 0 putchar n m printf c d i A c i for i 0 i 1 temp a k break k 8 2 s str i Z c str i a 26 i A 4 求一组成绩的平均分数以及高于平均分的成绩 设给定的成绩为 90 85 92 77 80 62 答 main int score 6 90 85 92 77 80 62 int i sum 0 38 float aver for i 0 i 6 i sum score i aver sum 6 0 printf nAverage f n aver printf High score for i 0 iaver printf d t score i 5 编写程序 输入一组整数 将它们排序后由小到大输出 提示 假设为具有 10 个元素的正整数数组 外层循环从数组的第一个元素 开始选取 内层循环从外层循环选定的元素下一个元素开始选取 依次与外层 循环选定的元素进行比较 将小者放入外层循环选定的元素中 答 define N 10 main int a N i j t for i 0 i N i 提示并为数组元素赋值 printf nInput a d i scanf d for i 0 i N i 外层选定待比较元素位置 for j i 1 ja j t a i a i a j a j t printf d t a i 输出已更新为较小值之外层选定元素 6 从键盘输入一个 4 4 整数矩阵 以主对角线 为对称轴 将左下角元素中较 大元素代替右上角对应元素 将右上角 含对角线元素 输出 提示 a 0 0 a 0 1 a 0 2 a 0 3 a 1 0 a 1 1 a 1 2 a 1 3 a 2 0 a 2 1 a 2 2 a 2 3 39 a 3 0 a 3 1 a 3 2 a 3 3 答 define M 4 main int a int i j k t printf Input integer number n for i 0 i M i 用两层循环为二维数组元素赋值 for j 0 j M j printf a d d i j scanf d for i 0 i M i 用两层循环将数组以矩阵形式在屏幕输出 for j 0 j M j printf d t a i j printf n printf n 分隔线 for i 0 i M i 选定矩阵待处理的当前行 for j 0 ja i j t a j i a j i a i j a i j t for j i j M j 将函对角线的右上角元素输出 本循环为将第 i 行第 i 列开始的右侧元素输出 printf d t a i j printf n 40 for k 0 k i 1 k printf t 保证显示数据正确位置 getch 运行结果 a 0 0 1 a 0 1 2 a 0 2 3 a 0 3 4 a 1 0 5 a 1 1 6 a 1 2 7 a 1 3 8 a 2 0 9 a 2 1 10 a 2 2 11 a 2 3 12 a 3 0 13 a 3 1 14 a 3 2 15 a 3 3 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 5 9 13 6 10 14 11 15 16 7 通过键盘给 3 4 的二维数组输入数据 然后分别按行和按列输出数组元素 答 define M 3 define N 4 main int a N i j printf Input integer number n 41 for i 0 i M i 外层选定数组元素左维 for j 0 j N j 内层选定数组元素右维 printf a d d i j 提示输出元素位置 scanf d 为指定元素赋值 printf nOut by row n 按行输出数组元素值 for i 0 i M i for j 0 j N j printf d a i j printf nOut by collum n 按列输出数组元素值 for i 0 i N i for j 0 j M j printf d a j i getch 运行结果 Input integer number a 0 0 1 a 0 1 2 a 0 2 3 a 0 3 4 a 1 0 5 a 1 1 6 a 1 2 7 a 1 3 8 a 2 0 9 a 2 1 10 a 2 2 11 a 2 3 12 Out by row 1 2 3 4 5 6 7 8 9 10 11 12 Out by collum 1 5 9 2 6 10 3 7 11 4 8 12 8 编写程序 将两个字符串连接起来 不要使用 strcat 函数 答 include string h main 42 char str1 80 str2 80 int i 0 l1 printf Input str1 gets str1 若换成 scanf s str1 后面应该增加 fflush stdin 函数语句 printf Input str2 gets str2 l1 strlen str1 计算字符串 1 的长度 while str2 i str1 l1 i str2 i i str1 l1 i 0 字符串连接后 不能忘记追加一个字符串结束符 puts str1 可换成语句 printf s str1 getch 9 输入一行字符串 统计该字符串中字符对 ab 的个数 答 include string h main char str 80 int i 0 count 0 printf Input string gets str while str i if str i a i 2 如果在当前 i 的位置找到一对 则 i 越过 b 个字 母 else i 如果在当前 i 的位置未找到 则 i 指向下一个字母 printf d count getch 43 10 从键盘输入 10 个字符串 找出一个最长的字符串 答 include string h main char str 10 80 设置二维字符数组 每一维可以记录最大 79 个字 符的字符串 int i len k 10 n 0 max 0 printf Input 10 strings n for i 0 imax max len n 0 k n i 记录最长字符串的长度 个数 在数组位置 行 else if len max k n i 与已记录最大长度相同时 记录其 在数组中位置 行 if n 0 此时说明只有一个最大长度字符串 是 str k 0 printf The longest string is String d k 0 1 输出其序 号 puts str k 0 else 此时说明有不止一个最大长度字符串时需要处理的复合语句 printf Not only one n for i 0 imaxb c n maxa 将 a 中最大元素赋值给 c 数组当前元素 并调 整 c 新元素位置 i 调整 a 中元素位置 else c n maxb 将 a 中最大元素赋值给 c 数组当前元素 并调 整 c 新元素位置 j 调整 b 中元素位置 printf d c n 1 打印输出 c 中新赋值元素数据 while n M N 未为数组 c 赋值结束时继续以上步骤 执行循环体 getch 第八章 指 针 习题答案 1 选择题 1 若函数 f 定义如下 void f char d char s while d s 函数 f 的功能是 A 串比较 B 串复制 C 求串长 D 串反向 45 2 有定义 int arr 10 0 1 2 3 4 5 6 7 8 9 p i 2 若执行语句 p arr pritnf d p i 输出结果为 A 0 B 2 C 3 D 1 3 有定义 int td 3 1 2 3 4 5 6 以下几种方法中 不能正确表示 i 行 j 列元素的是 A td i j B td i j C td i j D td i j 本题不要求掌握 答 1 B 2 B 3 D 2 写出下列程序的运行结果 1 void main int a p1 p2 a 10 p1 p2 p1 printf The Value is d d d n a p1 p2 p1 11 printf The Value is d d d n a p1 p2 2 若输入字符串 program 时 写出下列程序输出结果 include void main char str 80 void prochar char st char ch scanf s str prochar str r puts str void prochar char str char ch char p for p str p 0 p if p ch str p str str str 0 答 46 1 The Value is 10 10 10 The Value is 11 11 11 2 ss 3 填空题 1 下面程序完成从键盘输入两个字符串 a 和 b 再将 a 和 b 的对应位置字 符中的较大者存放在数组 c 中 填空完善该程序 include include void main int k 0 char a 80 b 80 c 80 0 p q p a q b gets a gets b while if c k p else c k q p k 本题教材有误 少了此处的右大括号 if p 0 strcat c p else strcat c q puts c 2 以下程序从键盘输入 10 个不相同的数到数组 a 中 再输入一个数到 x 中 在 a 中查找与 x 值相同的元素所在的位置 填空完善该程序 include void main int a 11 x i printf Input 10 integers n for i 1 i scanf d printf Input x scanf d a x i 10 while x a i if printf 6d s position is 3d n x i 47 else printf 6d Not be found n x bee 应为 be 教材有误 小 case 答 1 p 0 printf Input source string gets pstr printf Character you want delete scanf c fun pstr chdel printf After deleted puts pstr getch int fun char s char ch int i j for i 0 j 0 s i i if s i ch s j s i s j 0 5 编程将从键盘输入的每个单词的第一个字母转换为大写字母 输入时各单词必 须用空格隔开 用 结束输入 提示 48 答 解法一 include stdio h int fun char

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论