C语言程序设计(第3版)何钦铭颜晖第8章指针文档推荐

上传人:粗**** 文档编号:135282076 上传时间:2020-06-14 格式:PDF 页数:16 大小:25.32KB
返回 下载 相关 举报
C语言程序设计(第3版)何钦铭颜晖第8章指针文档推荐_第1页
第1页 / 共16页
C语言程序设计(第3版)何钦铭颜晖第8章指针文档推荐_第2页
第2页 / 共16页
C语言程序设计(第3版)何钦铭颜晖第8章指针文档推荐_第3页
第3页 / 共16页
C语言程序设计(第3版)何钦铭颜晖第8章指针文档推荐_第4页
第4页 / 共16页
C语言程序设计(第3版)何钦铭颜晖第8章指针文档推荐_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《C语言程序设计(第3版)何钦铭颜晖第8章指针文档推荐》由会员分享,可在线阅读,更多相关《C语言程序设计(第3版)何钦铭颜晖第8章指针文档推荐(16页珍藏版)》请在金锄头文库上搜索。

1、第 8 章指针 练习 8 1 如果有定义 int m n 5 p 与 m n等价的语句是B A m p B p C m D m p 解答 A p 是指向 m 的指针变量 所以 p 等价于 m 即 m m B int main void float op1 op2 sum diff printf Input op1 and op2 scanf f f sum diff op1 op2 printf f f f f f f n op1 op2 sum op1 op2 diff return 0 void sum diff float op1 float op2 float psum float p

2、diff psum op1 op2 pdiff op1 op2 练习 8 3 两个相同类型的指针变量能不能相加为什么 解答 不能 因为指针变量是一种特殊的变量 指针变量的值存放的是所指向变量的地 址 两个地址相加并不能保证结果为一个有效的地址值 因而在C 语言中指针 变量相加是非法的 练习 8 4 根据表所示 这组数据的冒泡排序其实循环到第6 遍 即 n 2 时就已经排好序了 说明有时候并不一定需要n 1 次循环 请思考如何改进冒 泡排序算法并编程实现 提示 当发现一遍循环后没有数据发生交换 说明已经 排好序了 解答 设置一个标志变量flag 进入一轮循环前设置为0 在循环中有发生数据交换就

3、改写 flag 值为 1 当该轮循环结束后检查flag 值 如果变为1 说明发生了数 据交换 还没有排好序 如果为0 说明没有发生交换 已经排好序 include void bubble int a int n int main void int n i a 8 printf Enter n n 8 scanf d printf Enter a d n for i 0 i n i scanf d bubble a n printf After sorted a d n for i 0 i n i printf 3d a i return 0 void bubble int a int n in

4、t i j temp flag for i 1 i n i flag 0 for j 0 ja j 1 temp a j a j a j 1 a j 1 temp flag 1 if flag 0 break 练习 8 5 重做例8 9 要求使用选择排序算法 解答 include void bubble int a int n int main void int i n a 8 printf Enter n n 8 scanf d printf Enter a d n for i 0 i n i scanf d bubble a n printf After sorted a d n for

5、i 0 i n i printf 3d a i return 0 void bubble int a int n int i j temp index for i 0 i n 1 i index i for j i 1 j n j if a j a index index j temp a i a i a index a index temp 电码加密 练习 8 6 在使用 scanf 函数时 输入参数列表需要使用取地址操作符 int i printf Input the string gets line if strlen line 3 printf 字符串长度小于 3 不符合要求 n fo

6、r i 0 i 3 i str i line i str i 0 for i 3 line i 0 i line i 3 line i line i 3 0 strcat line str printf s s n After changing line return 0 练习 8 9 使用动态内存分配的方法实现例8 9 的冒泡排序 解答 include include void bubble int a int n int main void int n j a i temp printf Enter n n 8 scanf d if a int calloc n sizeof int NU

7、LL printf Not able to allocate memory n exit 1 printf Ente a d n for i 0 i n i scanf d a i bubble a n printf After sorted a d n for i 0 i n i printf 3d a i free a return 0 void bubble int a int n int i j temp for i 1 i n i for j 0 j a j 1 temp a j a j a j 1 a j 1 temp 习题 8 一 选择题 1 下列语句定义x 为指向int 类型变

8、量a 的指针 其中哪一个是正确的 B A int a x a B int a x C int x D int a x a 以下选项中 对基本类型相同的指针变量不能进行运算的运算符是A A B C D 3 若有以下说明 且0 i 0 的元素前 如果i 元素的个数 则 x 插入到末尾 原有的元素个数存放在指针n 所指向的变量中 插入后元素个数加1 请填空 void insert double a int n double x int i int j if i i j a j 1 a j else i n a i x n 2 下列程序先消除输入字符串的前后空格 再判断是否是 回文 即字符串正 读和倒

9、读都是一样 若是则输出YES 否则输出NO 请填空 include include int main void char s 80 ch p q int i j n gets s p s while p p n strlen s q s n 1 while q q while p q q if p q printf NOn else printf YESn return 0 3 下列程序在数组中同时查找最大元素和最小元素的下标 分别存放在main 函数的 fmax 和 min 变量中 请填空 void find int int int int int main void int max min

10、 a 5 3 7 9 2 0 4 1 6 8 find a 10 printf d dn max min return 0 void find int a int n int max int min int i max min 0 for i 1 i a max max i if a i a min min i 4 写出下列程序的执行结果0 0 1 2 2 4 0 0 2 3 4 6 include int main void int a 10 b 10 pa pb i pa a pb b for i 0 i 3 i pa pb pa i pb 2 i printf d n pa pb pa

11、pb for i 0 i 3 i pa pa i pb pb i printf d n pa pb return 0 三 程序设计题 1 拆分实数的整数与小数部分 要求定义一个函数void splitfloat float x int intpart float fracpart 其中 x 是被拆分的实数 intpart 和 fracpart 分别是将实 数 x 拆分出来的整数部分与小数部分 编写主函数 并在其中调用函数splitfloat 试编写相应程序 解答 include void splitfloat float x int intpart float fracpart int mai

12、n void float x fracpart int intpart printf Input a number scanf f splitfloat x printf The intpart is d intpart printf The fracpart is f fracpart return 0 void splitfloat float x int intpart float fracpart intpart int x fracpart x intpart 在数组中查找指定元素 输入1 个正整数 n 1 n 10 然后输入 n 个整数存入 数组 a 中 再输入一个整数x 在数组

13、a 中查找x 若找到则输出相应的下标 否则显示 Not found 要求定义和调用函数search int list int n int x 在数 组 list 中查找元素x 若找到则返回相应下标 否则返回 1 参数n 代表数组 list 中元素的数量 试编写相应程序 解答 include int search int list int n int x int main void int i n res x int a 10 printf Input n scanf d for i 0 i 0 printf index d n res else printf Not found n retur

14、n 0 int search int list int n int x int i for i 0 i n i if list i x return i return 1 3 循环后移 有 n 个整数 使前面各数顺序向后移m 个位置 移出的数再从开头 移入 编写一个函数实现以上功能 在主函数中输入n 个整数并输出调整后的n 个数 试编写相应程序 解答 include void move int x int n int m int main void int i m n int a 80 printf Enter n scanf d printf Enter m scanf d for i 0

15、i n i scanf d move a n m printf After move for i 0 i n i printf d a i return 0 void move int p int n int m int i j k 0 a 80 for i 0 i n i if i n m a i m p i else a k p i for i 0 i n i p i a i 4 报数 有 n 个人围成一圈 按顺序从1 到 n 编好号 从第一个人开始报数 报到 m m n 的人退出圈子 下一个人从1 开始报数 报到m 的人退出圈 子 如此下去 直到留下最后一个人 编写程序 输入整数n 和

16、m 并按退出 顺序输出退出圈子的人的编号 试编写相应程序 解答 include int main void int count i j m n int num 80 0 printf Input n scanf d printf Input m scanf d i j count 0 while count n 1 if num i 0 j if j m 0 num i 1 j 0 用函数实现字符串复制 输入一个字符串t 和一个正整数 m 将 字符串中从第 m 个字符开始的全部字符复制到字符串s中 再输出字符串 s 要 求自定义并调用函数void strmcpy char s char t int m 试编写相应程序 解答 include include void strmcpy char s char t int m int main void char s 80 t 80 int m printf Input the string gets t printf Enter m scanf d if strlen t m printf Error Input return 0 else

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号