收藏 分销(赏)

第七章练习题.doc

上传人:仙人****88 文档编号:8367928 上传时间:2025-02-11 格式:DOC 页数:6 大小:39.50KB 下载积分:10 金币
下载 相关 举报
第七章练习题.doc_第1页
第1页 / 共6页
第七章练习题.doc_第2页
第2页 / 共6页


点击查看更多>>
资源描述
第7章 指针 一、选择题 1.以下程序的输出结果是() main(){ int a[]={1,2,3,4,5,6},*p; p=a; printf(“%d,%d\n”,*p,*(p+4)); } A. 0,5 B.1,5 C.0,6 D.1,6 2.下列哪一项是不正确的字符串赋值或不正确的赋初值的方式?() A. char *str;str=“string“; B.char str[7]={’s’, ’t’, ’r’, ’i’, ’n’, ’g’ }; C. char str1[10];str1= “string“; D.char str1[]=“string“,*str2=”1234567”; 3.对于类型相同的指针变量,不能进行()运算。 A. + B. - C. = D.== 4.已知p是一个整型指针变量,a为一个一维整型数组,且p=a;则下列哪个语句是错误的?() A.*p=a[0]; B. *p=*a; C. P=a+1; D.p=*a; 5.若有以下说明语句,则p2-p1的值为() int a[10],*p1,*p2; p1=a; p2=&a[5]; A. 5 B. 6 C. 10 D.没有指针与指针的减法 6.下列定义中不正确的是() A.int *p; B. int p[10]; C.int (*p)() D.int *(p(n)); 二、写出程序的输出结果 1.main(){ int a=10,b=20,s,t,m,*pa,*pb; pa=&a; pb=&b; s=*pa+*pb; t=*pa-*pb; m=*pa**pb; printf“s=%d\nt=%d\nm=%d\n“,s,t,m); } 2. main(){ int a[][3]={9,7,5,3,1,2,4,6,8}; int i,j,s1=0,s2=0; for(i=0;i<3;i++) for(j=0;j<3;j++) {if (i==j) s1=s1+a[i][j]; if(i+j==2) s2=s2+a[i][j]; } printf(“%d\n%d\n”,s1,s2); } 3. main(){ int a[5]={1,3,5,7,9},*p,**k; p=a;k=&p; printf(“%d”,*(p+2)); printf(“%d”,**k); } 4. main(){ int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; int (*p)[4],i=2,j=2; p=a; printf(“%d”,*(*(p+i)+j)+*(*(a+i)+j)+**(p+i)+**p); } 三、填空 1. 在空格地方填上语句,以实现字符串复制的功能。 main(){ char *ps=“C language“; char str[15]; char *p1,*p2; p1=ps; p2=str; while(*p1!=’\0’) { (1) (2) (3) } *p2=’\0’; printf(“ps=%s\n”,ps); printf(“str=%s\n”,str); } 2.下面程序完成从键盘输入两个字符串a和b,再将a和b的对应位置字符中的较大者存放在数组c中,填空完成该程序。 main(){ int k=0; char a[80],b[80],c[80]={‘\0’},*p,*q; p=a;q=b; gets(a); gets(b); while( (1) ) { if ( (2) ) c[k]=*p; else c[k]=*q; p++; (3) k++; } if(*p!=0) strcat(c,p); else strcat(c,q); puts(c); } 3.完成下面程序,以实现单词的输出功能。 main(){ char *s[]={“man”,”woman”,”girl”,”boy”,”sister”}; char **q; int k; for(k=0;k<5;k++) { (1) ; printf(“%s\n”,*q); } } 4.下列程序完成截取字符串s中从第m个位置开始的n个字符,返回所截字符串的首地址。 static char sub[20]; main(){ int m,n; static char s[]=”good moring”; char *cut(char *s1,int m1,int n1),*p; scanf(“%d%d”,&m,&n); p=cut(s,m,n); printf(%s\n”,p); } char *cut(char *s1,int m1,int n1) {int k; for(k=0;k<n1;k++) sub[k]= (1) ; sub[k]=’\0’; return (2) ; } ; 5.下列程序求数组元素的平均值。 float f(int *p,int n) {int i; float avg=0.0; for(i=0;i<n;i++) avg+=*p++; (1) ; return avg; } main(){ int a[10]={1,2,3,4,5,6,7,8,9,10}; float avg; avg=f( (2) ,10); printf(“\n Average=%f\n”,avg); } 6.下列程序完成3个操作。(1)输入10个字符串(每串不多于9个字符),依次放在a数组中,指针数组str中的每个元素依次指向每个字符串的开始。(2)输入每个字符串。(3)从这些字符串中选出最小的那个串输出。 main(){ char a[100],*str[10],*sp; int i,k; sp=a; for(i=0;i<10;i++) {scanf(“%s”,sp); str[i]= ; k=strlen(sp); sp+= ; } k=0; for(i=0;i<10;i++) if (strcmp(str[i],str[k]) ) k=i; ; } 7.下面程序把数组元素按相反的顺序进行存放。 void inv(int *x,int n) { int *i,*j,t; for(i=x,j=x+n-1; (1) ;i++,j--) {t=*i;*i=*j;*j=t;} } main(){ int i,a[10]={3,7,9,11,0,6,7,5,4,2}; printf(“The old array is:\n”); for(i=0;i<10;i++) printf(“%-6d”,a[i]); printf(“\n”); (2) ; printf(“after reveser:\n”); for(i=0;i<10;i++) printf(“%-6d”,a[i]); printf(“\n”); } 8.用指针法求出数组中的最大元素与最小元素。 int max,min; void max_min_value(int array[],int n){ int *p; (1) ; for( (2) ;p<array+n;p++) if(*p>max) max=*p; else if (*p<min) min=*p; } main(){ int i,number[10],*p; p=number; printf(“input 10 number:\n”); for(i=0;i<10;i++,p++) scanf(“%d”,p); (3) ; max_min_value(p,10); printf(“max=%10d min=%d\n”,max,min); } 9.把字符串按从小到大的顺序输出。 void sort( (1) ,int n){ int i,j,k; char *temp; for(i=0;i<=n-1;i++) { k=i; for(j=i+1;j<=n;j++) if ( (2) ) k=j; if(k!=i) {temp=name[i];name[i]=name[k];name[k]=temp;} } } void print(char *name[],int n){ int i; for(i=0;i<n;i++) printf(“%s\n”, (3) ); } main(){ char *name[]={“Nanhua”,”Central South”,”HuNan”,”HuBei”}; sort(name,4); print(name,4); } 四、编程题 1.有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数)凡报到3的人退出圈子,问最后留下的那位是原来的第几号。 2.输入一行文字,找出其中大写字母、小写字母、空格、数字以及其他字符各有多少? 3.输入一个字符串,内有数字和非数字字符,如:a123x456=4567?45at587将其中连续的数字作为一个整数,依次存放到数组a中。例如:123存放在a[0],456存放在a[1]……统计共有多少个整数,并输出这些数。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服