




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第8章 指针习题答案一、在以下每一题的四个选项中,请选择一个正确的答案。【题8.1】 D.【题8.2】 B. 【题8.3】 B.【题8.4】 C.【题8.5】 D.【题8.6】 B.【题8.7】 B.【题8.8】 B.【题8.9】 B.【题8.10】 D.二、判断下列各叙述的正确性,若正确在()内标记,若错误在()内标记×。【题8.11】 ×【题8.12】 【题8.13】 ×【题8.14】 【题8.15】 ×【题8.16】 【题8.17】 ×【题8.18】 【题8.19】 ×【题8.20】 三、填空。请在下面各叙述的空白处填入合适的内
2、容。【题8.21】 A. 取内容 B. 取地址 【题8.31】【题8.22】 3 【题8.23】 int型 【题8.24】 比较【题8.25】 二级指针【题8.26】 0 【题8.27】 *(p+3) 【题8.28】 A. 地址 B. 地址 【题8.29】 int *p=a 【题8.30】 A四、阅读下面的程序,写出程序运行结果。【题8.32】 20, 9, 9【题8.33】 book【题8.34】 aabc【题8.35】 p!=q *p=*q五、程序填空。请在下面程序空白处填入合适的语句。【题8.36】 A. *z B. *z【题8.37】 A. q<p+n B. *q<min六
3、、编程。对下面的问题编写程序并上机验证(要求用指针方法实现)。【题8.38】 输入3个整数,按从大到小的次序输出。/*lx8_1.c*/#include "stdio.h"void swap(int *p1,int *p2) int p; p=*p1; *p1=*p2; *p2=p;void main( ) int n1, n2, n3; int *p1, *p2, *p3; printf("Please input three integer datas:"); scanf("%d %d %d",&n1, &n2,
4、&n3); p1=&n1; p2=&n2; p3=&n3; if(n1<n2) swap(p1,p2); if(n1<n3) swap(p1,p3); if(n2<n3) swap(p2,p3); printf("After swap:"); printf("%d %d %dn",n1,n2,n3);【题8.39】 编写将n阶正方矩阵进行转置的函数。在主函数中对一个4行4列的矩阵调用此函数。 /*lx8_2.c*/#include "stdio.h"#define N 4void co
5、vert(int (*p)N) int i,j,temp; for(i=0;i<N;i+) for(j=0;j<i;j+) temp=*(*(p+i)+j); *(*(p+i)+j)=*(*(p+j)+i); *(*(p+j)+i)=temp; void main( ) int aNN; int i,j; printf("Input a array:n"); for(i=0;i<N;i+) for(j=0;j<N;j+) scanf("%d",&aij); printf("Before covert:n"
6、;); for(i=0;i<N;i+) for(j=0;j<N;j+) printf("%d ",aij); printf("n"); printf("n"); covert(a); printf("After covert:n"); for(i=0;i<N;i+) for(j=0;j<N;j+) printf("%d ",aij); printf("n"); 【题8.40】 有三个整型变量i,j,k,请编写程序,设置三个指针变量p1,p2,p3,分别
7、指向i,j,k。然后通过指针变量使i,j,k三个变量的值顺序交换,即把i的原值赋给j,把j的原值赋给k,把k的原值赋给i。要求输出i,j,k的原值和新值。 /*lx8_3.c*/#include "stdio.h"void main( ) int i,j,k; int *p1,*p2,*p3,temp; p1=&i; p2=&j; p3=&k; printf("Input i,j,k:n"); scanf("%d %d %d",&i,&j,&k); printf("i=%d j
8、=%d k=%dn",i,j,k); temp=*p3; *p3=*p2; *p2=*p1; *p1=temp; printf("After swap i,j,k:n"); printf("i=%d j=%d k=%dn",i,j,k);【题8.41】 设有n个整数,现在要使前面各数顺序向后移m个位置,最后m个数变成最前面m个数。编写程序实现以上功能,在主函数中输入n个整数并输出调整后的n个数(n>m)。 /*lx8_4.c*/ #include "stdio.h"#define N 6void move(int ar
9、rayN,int n,int m) int *p,array_end; array_end=*(array+n-1); for(p=array+n-1;p>array;p-) *p=*(p-1); *array=array_end; m-; if(m>0) move(array,n,m);void main( ) int numberN,n,m,i; printf("n="); scanf("%d",&n); printf("m(m<n)="); scanf("%d",&m); p
10、rintf("Input %d datas:n",n); for(i=0;i<n;i+) scanf("%d",&numberi); move(number,n,m); printf("After move:n"); for(i=0;i<n;i+) printf("%d ",numberi);【题8.42】 给定5个字符串,输出其中最大的字符串。/*lx8_5.c*/ #include "stdio.h"#include "string.h"void ma
11、in( ) char *max,*str5="ms_dos","windows","turbo T", "basic","borland c+" int i; max=str0; for(i=1;i<5;i+) if(strcmp(stri,max)>0) max=stri; printf("The largest string: %sn",max);【题8.43】 编写程序,将所给的5个字符串进行排序。/*lx8_6.c*/ #include "std
12、io.h"#include "string.h"void main( ) char *temp,*str5="ms_dos","windows","turbo T", "basic","borland c+" int i,j; printf("Before sort:n"); for(i=0;i<5;i+) printf("%sn",stri); for(i=0;i<4;i+) for(j=i+1;j<5;j
13、+) if(strcmp(stri,strj)>0) temp=stri; stri=strj; strj=temp; printf("After sort:n"); for(i=0;i<5;i+) printf("%sn",stri);【题8.44】 输入10个整数,将其中最大数与第一个数交换,最小数与最后一个数交换。 /*lx8_7.c*/#include "stdio.h"void input(int array10) int i; printf("input 10 integer:n"); fo
14、r(i=0;i<10;i+) scanf("%d",&arrayi);void max_min(int array10) int *max,*min; int *p,*array_end; array_end=array+10; max=min=array; for(p=array+1;p<array_end;p+) if(*p>*max) max=p; else if(*p<*min) min=p; *p=array0; array0=*max; *max=*p; *p=array9; array9=*min; *min=*p;void o
15、utput(int array10) int *p; for(p=array;p<array+10;p+) printf("%dt",*p);void main( ) int a10; input(a); max_min(a); output(a);【题8.45】 编写函数,比较两个字符串是否相等(用指针完成)。/*lx8_8.c*/#include "stdio.h"#include "string.h"int compare(char *p,char *q) int i,l=strlen(p); if(strlen(p)!=
16、strlen(q) return 0; for(i=0;i<l;i+) if(pi!=qi) return 0; return 1;void main( ) char str180,str280; printf("Input first string:"); scanf("%s",str1); printf("Input second string:"); scanf("%s",str2); if(compare(str1,str2) printf("Two strings equation!n&q
17、uot;); else printf("Two strings no equation!n");【题8.46】 编写程序,输入15个整数存入一维数组,再按逆序重新存放后输出(用指针完成)。/*lx8_9.c*/#include "stdio.h"#define N 15void main( ) int i, aN, *p=a,temp; printf("Input %d integers:",N); for(i=0;i<N;i+) scanf("%d",&pi); for(i=0;i<N/2;i
18、+) temp=pi; pi=pN-i-1; pN-i-1=temp; printf("Output conversion integer arrayn"); for(i=0;i<N;i+) printf("%d ",pi); printf("n");【题8.47】 编写程序,在一个整型数组(其元素全大于0)中查找输入的一个整数,找到后,求它前面的所有整数之和。/*lx8_10.c*/#include "stdio.h"#define N 5void main( ) int i,j=N-1,sum=0; in
19、t aN,x; printf("Please input an integer array:n"); for(i=0;i<N;i+) scanf("%d",&ai); printf("Please input a integer data:n"); scanf("%d",&x); for(i=0;i<N;i+) if(ai= =x) j=i; for(;j>=0;j-) sum+=aj; printf("Sum=%dn",sum);【题8.48】 编写程序,用函数指针的方法,求任意给定的两个整数x和y的和、差。/*lx8_11.c*/#include "stdio.h"int add(int x,int y);int sub(int x,int y);void main( ) int n; int i,j; int (*func)(int,int); printf("Please input two numbers:"); scanf("%d %d",&i,&j); printf("Add operator_1n")
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 烧碱协同乙酸钠制浆工艺及黑液碱回收研究
- 伊春市中医院肿瘤手术淋巴结清扫考核
- 前混合磨料水射流全过程模拟及除锈性能研究
- 大同市人民医院股骨转子间骨折PFNA内固定考核
- 2025儿童医院药物浓度监测考核
- 石家庄市人民医院体温控制技能考核
- 长治市中医院影像科室管理考核
- 2025年汽车销售合同范本规范
- 2025年新能源行业绿色品牌建设策略报告
- 2025年仓储物品储存合同协议
- 人教版必修第一册Unit2Travelling around Reading and Thinking课件
- 旋挖钻机地基承载力验算2017.7
- 英语课程标准研究与教材分析(第2版)课件全套 第1-9章 英语课程标准和英语课程的基本概念 -英语教材难度分析
- 版式设计课件:版式设计概述
- 土方公司挂靠协议书
- 差价居间合同协议
- 龙杠会管理制度
- PEM电解系统的控制策略
- 服装厂质量管理手册 1
- 2025年中学教师资格考试《综合素质》教育法律法规历年真题汇编(含答案)
- 洪山区2024-2025学年上学期期中八年级物理试题(含答案)
评论
0/150
提交评论