语言程序补充作业_第1页
语言程序补充作业_第2页
语言程序补充作业_第3页
语言程序补充作业_第4页
语言程序补充作业_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、第8章补充作业1、选择题1)变量的指针,其含义是指该变量的 。A值 B地址 C名 D一个标志2)若有语句int *point, a=4; 和point=&a; 下面均代表地址的一组选项是 。Aa, point, *&a B&*a, &a, *pointC*&point, *point, &a D&a, &*point, point3)若已定义a为int型变量,则 是对指针p的正确说明和初始化。Aint *p=a; Bint *p=*a; Cint p=&a; Dint *p=&a;4)下面判断正确的是 。Achar

2、 *a=“china”; 等价于char *a; *a=“china”;Bchar str10=“china”; 等价于char str10; str=“china”;Cchar *s=“china”; 等价于char *s; s=“china”;Dchar c4=“abc”,d4=“abc”; 等价于char c4=d4=“abc”;5)以下合法的定义是 。Astatic str =“china”; Bchar *p=“china”;Cchar *p; strcpy(p,”china”); Dchar str13; str =“china”;6)若有定义:int a46;则能正确表示a数组中

3、任一元素aij(此处0i4,0j6)地址的表达式是 。A&a00+6*i+j B&a00+4*j+iC&a00+4*i+j D&a00+6*j+i7)若有以下定义,则数值不为3的表达式是 。int x10=0,1,2,3,4,5,6,7,8,9,*p1;Ax3 Bp1=x+3, *p1+Cp1=x+2, *(p1+) Dp1=x+2, *+p18)若有说明语句:int x34;则以下关于x,*x,x0,&x00的正确描述是 。Ax,*x,x0,&x00均表示元素x00的地址B只有x,x0,&x00表示的是元素x00的地址C只有x0和&am

4、p;x00表示的是元素x00的地址D只有&x00表示的是元素x00的地址9)若有以下说明语句:static int i, a23=1, 3, 5, 7, 9,11;int m, n;且0m1,0n2,则 是对数组元素的正确引用。Aam+n B*(a+5) C*(*(a+m)+3) D*(*(a+m)+n)10)以下程序运行的结果是 。#include<stdio.h>#include<string.h>main() char *p1,*p2,str50=“abc”; p1=“abc”; p2=“abc”; strcpy(str+1, strcat(p1,p2);

5、 printf(“%sn”,str);Aabcabcabc Bbcabcabc Caabcabc Dcabcabc11)下面程序的运行结果是 。#include<stdio.h>main() int b,a=28; char s10,*p; p=s; do b=a%16; if(b<10) *p=b+48; else *p=b+55; p+; a=a/5; while(a>0); *p=0; puts(s); A10 B2 C51 D012)下面程序的运行结果是 。#include<stdio.h>main() static char a =“Languag

6、e”,b =“programe”; char *p1,*p2; int k; p1=a; p2=b; for(k=0; k<=7; k+) if(*(p1+k)= =*(p2+k) printf(“%c”,*(p1+k);Agae Bga CLanguage D有语法错误13)以下程序中调用scanf函数给变量a输入数值的方法是错误,其错误原因是 。main() int *p,*q,a,b; p=&a; printf(“input a:”); scanf(“%d”,*p); A*p表示的是指针变量p的地址B*p表示的是变量a的值,而不是变量a的地址C*p表示的是指针变量p的值D*

7、p只能用来说明p是一个指针变量14)以下程序运行的结果是 。#include<stdio.h>main() int a =2, 4, 6, 8, 10, y=1, x, *p; p=&a1; for(x=0; x<3; x+) y+=*(p+x); printf(“%dn”, y);A17 B18 C19 D2015)有如下程序:#include<stdio.h>main() char ch25=“6937”, “8254”, *p2; int i, j, s=0; for(i=0;i<2;i+) pi=chi; for(i=0;i<2;i+)

8、 for(j=0;pij!=0; j+=2) s=10*s+pij-0; printf(“%dn”, s);该程序的输出结果是 。A69825 B63825 C6385 D69382516)已有定义: int k=2; int *ptr1,*ptr2; 且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是 。Ak=*ptr1+*ptr2;Bptr2=k;Cptr1=ptr2Dk=*ptr1*(*ptr2);17)若有说明: int *p1,*p2,m=5,n;以下均是正确赋值语句的选项是 。Ap1=&m; p2=&p1;Bp1=&m; p2=&n;

9、*p1=*p2;Cp1=&m; p2=p1;Dp1=&m; *p2=*p1;18)以下正确的程序段是 。Achar str1=“12345”,str2=“abcdef”; strcpy(str1,str2);Bchar str10,*st=“abcde”; strcat(str,st);Cchar str10=“ “, *st=“abcde”; strcat(str,st);Dchar *st1=“12345”,*st2=“abcde”; strcat(st1,st2);19)下面程序段的运行结果是 。char *p=“abcdefgh”;p+=3;printf(“%dn”,s

10、trlen(strcpy(p,”ABCD”);A8 B12C4 D720)下面程序段的运行结果是 。char a=“language”,*p;p=a;while(*p!=u) printf(“%c”,*p-32); p+;ALANGUAGEBlanguageCLANGDlangUAGE2、填空题1)若p已指向存储单元a1。通过指针p给s赋值,使s指向最后一个存储单元a4的语句是 。2)若有以下定义和语句:则*-p的值是 。int a4=0,1,2,3,*p;p=&a2;3)若有定义:int a23=2,4,6,8,10,12;则*(&a00+2*2+1)的值是 ;*(a1+2)

11、的值是 。4)若有定义:int m106;在程序中引用数组元素mij的四种形式是: , , 和 。(假设i、j已正确说明并赋值)。 5)下面程序可通过行指针p输出数组a中任一行任一列元素的值。请填空。main() int a23=2,4,6,8,10,12; int (*p)3,i,j; p=a; scanf(“%d, %d”,&i,&j); /*0i2, 0j3*/ printf(“a%d%d=%dn”,i,j, );6)下面程序的运行结果是 。main() int x =0,1,2,3,4,5,6,7,8,9; int s,i,*p; s=0; p=&x0; for

12、(i=1; i<10; i+=2) s+=*(p+i); printf(“sum=%d”,s);7)mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。int mystrlen(char *str) char *p; for(p=str; !=0; p+);return( );8)下面程序段的运行结果是 。char a =“12345”,*p;int s=0;for(p=a; *p!=0; p+) s=10*s+*p-0;printf(“%dn”,s);9)下面程序的运行结果是 main() int va10,vb10,*pa,*pb,i; pa=va; p

13、b=vb; for(i=0; i<3; i+,pa+,pb+) *pa=i; *pb=2*i; printf(“%dt%dn”,*pa,*pb); pa=&va0; pb=&vb0; for(i=0; i<3; i+) *pa=*pa+i; *pb=*pb*i; printf(“%dt%dn”,*pa+,*pb+); 10)若输入的值分别是1,3,5,下面程序的运行结果是 main() int a=0,i,*p,sum; p=&a; for(i=0;i<=2;i+) scanf(“%d”,p); sum=s(p); printf(“sum=%dn”,s

14、um);s(int *p) int sum=10; sum=sum+*p; return(sum);11)以下程序的运行结果是 。#include<stdio.h>main() int i,k; for(i=0; i<4; i+) k=sub(&i); printf(“%3d”, k); printf(“n”);int sub(int *s) static int t=0; t=*s+t; return t;12)以下程序的输出结果是 。#include<stdio.h>main() char *ptr1, *ptr2; ptr1=ptr2=“abcde”

15、; while(*ptr2!=0) putchar(*ptr2+); while(-ptr2>=ptr1) putchar(*ptr2); putchar(n);13)有以下程序,若从键盘输入:abc def,则输出结果是 。#include<stdio.h>#include<stdlib.h>main() char *p,*q; p=(char *)malloc(sizeof(char)*20); q=p; scanf(“%s%s”,p,q); printf(“%s %s”,p,q);14)以下程序的输出结果是 #include<stdio.h>ma

16、in() char str =“abc”, *ps=str; while(*ps) ps+; for(ps-; ps-str>=0; ps-) puts(ps);15)设有以下程序:#include<stdio.h>main() int i, *p=&i; i=10; *p=i+5; i=2*i; printf(“%dn”,*p);程序执行的结果是 。16)设有两个字符串a、b,下面程序是将a、b的对应字符中的较大者存放在数组c的对应位置上。请填空。#include<stdio.h>#include<string.h>main() int k=

17、0; char a80,b80,c80=0,*p,*q; p=a; q=b; gets(a); gets(b); while( ) if( ) ck=*q; else ck=*p; p+; q+; k+; if(*p!=0) strcat(c,p); else strcat(c,q); puts(c);17)以下程序的功能是:将无符号八进制数字字符串转换为十进制整数。例如,输入的字符串为556,则输出十进制整数366。请填空。#include<stdio.h>main() char *p, s6; int n; p=s;gets(p);n=*p-0;while( =0) n=n*8

18、+*p-0;printf(“%dn”, n);18)假设a数组中的数据已按从小到大的顺序存放,以下程序可把a数组中相同的数据删得只剩下一个,然后以每行4个数据的格式输出a数组。请填空。#define M 10main() int aM,i,j,n; for(i=0; i<M; i+) scanf(“%d”,a+i); n=i=M-1; while(i>=0) if(*(a+i)= =*(a+i-1) for(j= ; j<=n; j+) *(a+j-1)=*( ); n-; i-; for(i=1; i<=n+1; i+) printf(“%4d”,*( ); if(i

19、%4=0) printf(“n”); printf(“n”);19)下面程序是判断输入的字符串是否是”回文”,(顺读和倒读都一样的字符串称”回文”,如level)。请填空。#include<stdio.h>#include<string.h>main() char s81,*p1,*p2; int n; gets(s); n=strlen(s); p1=s; p2= ; while( ) if(*p1!=*p2) break; else p1+; ; if(p1<p2) printf(“NOn”); else printf(“YESn”);20)下面程序的运行结果

20、是 #include<stdio.h>main() char a80,b80,*p=“aAbcdDefgGH”; int i=0, j=0; while(*p!=0) if(*p>=a && *p<=z) ai=*p; i+; else bj=*p; j+; p+; ai=bj=0; puts(a); puts(b);21)以下程序的执行结果是 。#include<stdio.h>main() static int a =1,3,5,7; int *p3=a+2,a+1,a; int *q=p; printf(“%dn”,*(p0+1)+*(

21、q+2);22)以下程序能找出数组x中的最大值和该值所在的元素下标,数组元素值从键盘输入,请填空。main() int x10,*p1,*p2,k; for(k=0; k<10; k+) scanf(“%d”,x+k); for(p1=x,p2=x; p1-x<10; p1+) if(*p1>*p2) p2= ; printf(“MAX=%d, INDEX=%dn”,*p2, );23)以下程序的执行结果是 。#include<stdio.h>#include<string.h>#define P(x) printf(“%s”,x)main() sta

22、tic char *c =“you can make statement”, “for the topic”, “The sentences”, “How about”; static char *p =c+3,c+2,c+1,c; char *pp=p; P(*+pp); P(*-*+pp+3); P(*pp-2+3); P(pp-1-1+3); printf(“n”);24)下面程序的功能是将字符串a的所有字符传送到字符串b中,要求每传送三个字符后再存放一个空格,例如字符串a为”abcdefg”,则字符串b为”abc def g”,请选择填空。#include<stdio.h>main() int i,k=0; char a80,b80,*p; p=a; gets(p); while(*p) for(i=1; 【1】 ; p+,k+,i+) bk=*p; if( 【2】 ) bk= ; k+; bk=0; puts(b);【1】Ai<3 Bi<=3 Ci<3 && *p!=0 Di<=3 && *p【2】Ai= =4 B*p= =0 C!*p Di!=425)下面程序的功能是在字符串str中找出最大的字符并

温馨提示

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

评论

0/150

提交评论