c语言课后答案 3_第1页
c语言课后答案 3_第2页
c语言课后答案 3_第3页
c语言课后答案 3_第4页
c语言课后答案 3_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论