C语言第8章课堂讨论_第1页
C语言第8章课堂讨论_第2页
C语言第8章课堂讨论_第3页
C语言第8章课堂讨论_第4页
C语言第8章课堂讨论_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

第7章习题讨论

退出问答题填空题编程题阅读程序题一、答复以下问题,写出相应语句1、假设float型变量x1和x2已定义过,且x1已初始化为7.3;

floatx1=7.3,x2

(1)定义指向float型变量的指针变量fptr;(2)使fptr指向x1;(3)输出fptr指向的变量的值;(4)将fptr指向变量的值赋给x2;(5)输出x2的值;(6)输出x1的地址;(7)输出fptr的值float*fptrfptr=&x1;printf(“%f”,*fptr);x2=*fptr;printf(“%f”,x2);printf(“%u”,&x1);printf(“%u”,fptr);一、答复以下问题,写出相应语句2、假设int型在内存中占两个字节,答复以下问题。(1)定义1个int型数组num,有10个元素,且初始化为:0,1,2,3,4,5,6,7,8,9。假设数组的首地址是1002500。

intnum[10]={0,1,2,3,4,5,6,7,8,9};(2)定义1个指向int型的指针变量nptr,并指向数组num;

(3)用下标法输出num中的所有元素;(4)用地址法输出num中的所有元素(5)用指针法输出num中的所有元素int*nptr=num;for(i=0;i<10;i++){printf(“%d”,num[i]);printf(“%d”;*(num+i));printf(“%d”,*(nptr+i));printf(“%d”,*(nptr++));}一、答复以下问题,写出相应语句2、假设int型在内存中占两个字节,答复以下问题。(1)定义1个int型数组num,有10个元素,且初始化为:0,1,2,3,4,5,6,7,8,9。假设数组的首地址是1002500。

intnum[10]={0,1,2,3,4,5,6,7,8,9};(6)假设nptr指向num的首元素,nptr+8是什么?*(nptr+8)又是什么?(7)假设nptr指向num[5],nptr-=4指向哪个元素,nptr中的值是多少?答:nptr+8是指向num[8];*(nptr+8)是数组元素num[8]的值答:nptr-=4指向num[1];nptr中的值是1002500+2=1002502。

二、填空题1、

运算符用于返回变量在内存中的地址;

运算符用于返回指针变量指向变量的值。&*2、以下函数用来求两个整数之和。

add(x,y,

)int

;{

=x+y;}px,y,*p*p4、以下函数完成两个字符串的连接。

voidstr(str1,str2)char*str1,*str2;{inti=0,j;while(str1[i++}!=‘\0’);/*循环将i定位到字符串尾部*/for(j=0;str2[j]!=

;j++)str1[i+j]=

;str1[i+j]=

;}str2[j]‘\0’‘\0’

二、填空题3、下面程序调用findmax函数求出数组中的最大值以及最大值在数组中的下标。findmax(s,t,k)ints[],t,k;{intp;for(p=0,*k=p;p<t;p++)if(s[p]>s[*k])

;}/*从(1)(2)(3)(4)中选一个答案填空*/main(){inta[10],i,k;for(i=0;i<10;i++)scanf(“%d”.&a[i]);findmax(a,10,&k);printf(%d,%d\n”,k,a[k];);}(1)k=p;(2)*k=p;(3)k=p-s;(4)*k=p*k=p√三、阅读分析以下程序,写出运行结果1、#defineM2#defineNM+4inta[]={10,20,30};/*全局数组*/

sub1(x,y,z)intx,y,z;{intt;t=x<y?x:y;a[1]=t<z?t:z;returnt;}

main(){intk;k=sub(M*N,*(a+1),*(a+2));printf(“%d,%d\n”,k,*(a+1));}M*N=2*2+4=88,20,308,8(输出三个数中的小数)三、阅读分析以下程序,写出运行结果2、#include<stdio.h>main(){inta[]={1,2,3,4,5,6},*p;p=a;*(p+3)+=2;/*p仍然指向a[0]*/

printf(“%d\n”,*p);printf(“%d\n”,*(p+3);}16三、阅读分析以下程序,写出运行结果3、#include<stdio.h>#defineMAX6main(){inta[MAX][MAX];voidsunb1();sub2();/*函数声明*/sub1(a);sub2(*a)voidsub1(s)int(*s)[MAX];

/*指向具有MAX个元素的一维数组的行指针*/{inti,j;s[0][0]=1

/*指针变量s可以当作二维数组名使用*/

for(i=1;i<MAX;i++){s[i][0]=1;s[i][i]=1;for(j=1;j<i;j++)s[i][j]=s[i-1][j-1]+s[i-1][j];}voidsub2(w)int*w;/*指向数组元素的指针*/{inti,j;for(i=0;i<MAX;i++){for(j=0;j<=I;j++)printf(“%5d”,*(w+i*MAX+j));printf(“\”);}

11112113311464115101051

a是数组首行地址,*a是首行首列元素地址杨辉三角形四、程序题〔要求用指针变量完成〕1、有一个字符串,包含n个字符。写一函数将此字符串中从第m个字符开始的全部字符复制成另一个字符串。voidaa(p1,p2,m)char*p1,*p2;intm;{inti;for(i=0;i<m-1;i++)p1++;/*将p1指针指向第m个字符*/while(*p1!=‘\0’){*p2=*p1;p2++;p1++;)*p2=‘\0’;}四、程序题2、在主函数中输入10个整数,用另一个函数将10个整数按逆序存放,然后在主函数中输出结果编程思路:(1)在main函数中定义一维数组a,并利用循环为数组元素赋值;(2)建立函数ss完成数组中的10个数按逆序存放〔首尾交换〕(3)函数调用,实参为数组名,形参为指针变量,在被调函数中,将指针变量作为数组名对数组进行操作。(4)最后在main函数中完成逆序存放后数组的输出。#include<stdio.h>aa(int*s){inti,t;for(i=0;i<5;i++){t=s[i];s[i]=s[9-i];s[9-i]=t;}}voidmain(){inti,a[10];for(i=0;i<10;i++) scanf("%d",&a[i]);aa(a);for(i=0;i<10;i++) printf("%d",a[i]);}补充练习1.假设有以下定义和语句,且0≤i<10,那么对数组元素地址的正确表示是〔〕inta[]={0,1,2,3,4,5,6,7,8,9},*p;p=a;A.&(a+1) B.a++ C.&p D.&p[i]2.假设有以下说明:chars[10]=“ABCDEFGH”,*p=s;不能表示字符C的是〔〕A.s[2] B.s[3] C.s['c'-'a'] D.*(p+2)3.以下选项中,对指针变量p的正确操作是〔〕A.inta[5],*p;p=&a; B.inta[5],*p;p=a;C.inta[5];int*p=a[5]; D.inta[5];int*p,p2=a;*p=*p2;BBB5.假设有定义inta[5],i,*p=a;且0≤i<5,那么对a数组元素的正确引用有〔〕A.a[i] B.*(a+i)C.*(p+i) D.*(&a+i)E.p+i6.设有说明:inta[2][3];

请用四种方式来表示数组元素a[1][2]。ABC(1)*(*(a+1)+2)(2)*(*a+1*3+2)(3)*(a[1]+2)(4)*(a[0]+1*3+2)3.有以下程序:func(intx,inty,int*jia,int*jian){*jia=x+y;*jian=x-y;}main(){inti=10,j=3,x1,x2;func(i,j,&x1,&x2);printf("%d,&d\n",x1,x2);}那么其运行结果是〔〕A.0,0 B.10,3 C.13,7 D.7,13C5.阅读下面程序,写出运行结果。#include<stdio.h>#include<string.h>voidf(char*s){char*t,c,*p=s;for(t=s+strlen(s)-1;s<t;s++,t--){c=*s;*s=*t;*t=c;printf("%s\n",p);}}voidmain(void){chara[20]="abcdefg";f(a);}6.阅读以下程序并写出运行结果。main(){chars[]="abcdel2345",*q=s;inta=0;for(;q<s+5;q++)printf("%c",*q);a=f(s);printf("\na=%d\n",a);}int

温馨提示

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

评论

0/150

提交评论