习题五指针(new)(1)

更新时间:2024-03-30 11:23:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C语言程序设计练习五指针练习题

一、选择题 133、设有定义:int a=1, *p=&a; float b=2.0; char c='A'; ,以下不合法的运算是____ A、p++; B、a--; C、b++; D、c--; 134、以下程序执行后a的值为____ main( ) { int a, m=2, k=1, *p=&k; a=p==&m; printf(\ } A、-1 B、0 C、1 D、2 135、以下对指针变量的操作中,不正确的是___ A、int p, *q; q=&p; B、int *p, *q; q=p=NULL; C、int a=5, *p; *p=a; D、int a=5, *p, *q=&a; *p=*q; 136、以下对指针变量的操作中,不正确的是___ A、int a, *p, *q; p=q=&a; B、int a=6, *p, *q=&a; p=q; C、int a=b=6, *p; p=&a; b=*p; D、int a, *p, *q; q=&a; p=*q; 137、设有语句:int k=1, *p1=&k, *p2=&k;,以下不能正确执行的赋值语句是____ A、p1=k B、p1=p2 C、*p1=*p2 D、k=*p1+*p2 138、若有语句:int a=4, *p=&a;,下面均代表地址的一组选项是____ A、a, p, &*a B、*&a, &a, *p C、&a, p, &*p D、*&p, *p, &a 139、设已有说明语句:int i=5, *q;,若要建立如图所示的存储结构,以下正确的赋值语句是____ q i A、q=i; B、*q=i; C、q=&i; D、*q=&i; 140、若有说明语句:char c='9', *sp1, *sp2;,以下均正确的一组赋值语句是____ A、sp1=&c; sp2=sp1; B、sp1=&c; sp2=&sp1; C、sp1=&c; sp2=*sp1; D、sp1=&c; *sp2=*sp1; 141、以下判断正确的是____ A、char *s=\等价于char *s; *s=\B、char str[10]={\ 等价于char str[10]; str={\ C、char *s=\等价于char *s; s=\ D、char str[10]={\等价于char str[10]; *str={\142、以下能正确进行字符串赋值操作的是____ A、char s[5]={\ B、char s[5]={'A', 'B', 'C', 'D', 'E'}; C、char *s; *s=\ D、char *s=\ 143、下面程序段的运行结果是____ char *s=\ s+=1; printf(\ A、bcde B、字符'b'的地址 C、字符'c'的地址 D、字符'b'的ASCII值 144、以下能正确读入字符串的程序段是____ A、char *p; scanf(\ B、char str[10]; scanf(\ C、char str[10], *p; p=str; scanf(\ D、char str[10], *p=str; scanf(\145、设有说明语句:char *str=\,则指针str所指字符串的长度为____ A、13 B、15 C、17 D、说明语句不合法 146、以下运算正确的程序段是____ A、char str1[]=\ strcpy(str1, str2); B、char str[10], *st=\ strcat(str, st); C、char *st1=\ strcat(st1,st2); D、char str[10]=\ strcat(str, st); 147、下面程序段的运行结果是____ char str[ ]=\printf(\A、字符'z'的地址 B、0 C、字符'z'的ASCII码 D、字符'z' 148、以下程序段的运行结果是____ char a[ ]=\p=a; while (*p!='g') { printf(\ p++; } A、PROgram B、PROGRAM C、PRO D、proGRAM 149、下面程序段的运行结果是____ main( ) { char c1, c2; c1='A'+'5'-'3'; c2='A'+'6'-'3'; printf(\} A、C,D B、67,D C、无确定值 D、B,C 150、以下程序段的运行结果是____ 第 1 页 共 9 页

C语言程序设计练习五指针练习题

char b[ ]=\for (p=b; pC语言程序设计练习五指针练习题

167、若有以下定义和赋值语句,且0≤i≤1,0≤j≤2,则以下对s数组元素地址的正确引用形式是____ int s[2][3]={0}, (*p)[3], i, j; p=s; A、(*(p+i))[j] B、*(p[i]+j) C、*(p+i)+j D、(p+i)+j (选)168、设用以下程序段建立了sp与str的关系,则以下对字符串的引用不正确的是____ char str[4][8]={\int n; for (n=0; n<4; n++) sp[n]=str[n]; A、sp B、*sp C、sp[0] D、*(sp+1) 169、若有定义:int x[10], *p=x;,则*(p+5)表示____ A、数组元素x[5]的地址 B、数组元素a[5]的值 C、数组元素a[6]的地址 D、数组元素a[6]的值 170、若有定义语句:int s[4][6], t[6][4], (*p)[6];,则以下正确的赋值语句是____ A、p=t; B、p=s; C、p=s[2]; D、p=t[3]; 171、若要对变量a进行--运算,则a应具有的说明是____ A、int p[3]; int *a=p; B、int k; int *a=&k; C、char *a[3]; D、int b[10]; int *a=b+1; 172、若有定义语句:int x[5]={0, 1, 2, 3, 4}, *p;,则以下数值不为2的表达式是____ A、p=x+1, ++(*p) B、p=x+2, *p++ C、p=x+1, *(p++) D、p=x+1, *++p 173、执行以下程序段后,y的值是____ int a[ ]={1, 3, 5, 7, 9} int x=0, y=1, *ptr; ptr=&a[1]; while (!x) { y+=*(ptr+x); x++; } A、1 B、2 C、4 D、24 174、执行以下程序段后,m的值是____ int a[2][3]={{1, 2, 3}, {4, 5, 6}}; int m, *ptr; ptr=&a[0][0]; m=(*ptr)*(*ptr+2)*(*ptr+4); A、15 B、48 C、24 D、无定值 175、设有以下定义:char *ch[2]={\,则以下正确的叙述是____ A、数组ch的两个元素中分别存放了字符串\和\的首地址 B、数组ch的两个元素分别存放的是含有3个字符的一维字符数组的首地址 C、ch是指针变量,它指向含有两个数组元素的字符型一维数组 D、数组ch的两个元素的值分别是\和\(选)176、下面程序的运行结果是____ main( ) { int x[5]={1, 2, 3, 4, 5}, *p=x, **pp; pp=&p; printf(\ printf(\} A、1, 1 B、1, 2 C、2, 2 D、2, 3 (选)177、下面程序的运行结果是____ #include \fun(int **a, int p[2][3]) { **a=p[1][1]; } main( ) { int x[2][3]={2, 4, 6, 8, 10, 12}, *p; p=(int *)malloc(sizeof(int)); fun(&p, x); printf(\} A、2 B、6 C、8 D、10 (选)1179、若有说明:char *pc[ ]={\,则以下叙述正确的是____ A、*pc[0]代表的是字符串\B、*pc[0]代表的是字符'a' C、pc[0]代表的是字符串\D、pc[0]代表的是字符'a' 180、以下程序的运行结果是____ void sub(int x, int y, int *z) { *z=y-x; } main( ) { int a, b, c; sub(10, 15, &a); sub(6, a, &b); sub(a, b, &c); printf(\} A、5, 1, 6 B、-5, -11, -6 C、-5, 11, 6 D、5, -1, -6 181、设有变量定义和函数调用语句:int a=20; print_value(&a);,下面函数的输出结果是____ void print_value(int *x) 第 3 页 共 9 页

C语言程序设计练习五指针练习题

{ printf(\ } A、20 B、21 C、变量a的地址 D、随机值 (选)182、语句int (*ptr)( );的含义是____ A、ptr是指向一维数组的指针变量 B、ptr是指向int 型数据的指针变量 C、ptr是指向函数的指针,该函数返回一个int 型数据 D、ptr是一个函数名,该函数的返回值是指向int 型数189、下面程序的运行结果是____ main( ) { int a[3][4]={1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23}; int (*q)[4]=a, i, j, n=0; for (i=0; i<3; i++) for (j=0; j<2; j++) n=n+*(*(q+1)+j); printf(\据的指针 (选)183、 若有函数max (a ,b) ,并且已使函数指针变量p 指向函数 max ,则利用函数指针调用 max 函数的正确形式是____ A、(*p ) max (a , b) B、*p max(a, b) C、p-> max (a, b) D、 ( *p ) (a, b ) (选)184、若有定义:int (*p)( );,则指针p____ A、代表函数的返回值 B、指向函数的入口地址 C、表示函数的类型 D、表示函数返回值的类型 185、下面程序的运行结果是____ main( ) { int b[10]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int *q=b; printf(\} A、1 B、2 C、3 D、4 187、下面程序的运行结果是____ #include #include main() { int a[3][3]={{2},{4},{6}}; int k,*q=&a[0][0]; for(k=0;k<2;k++) { if(k==0) a[k][k+1]=*q+1; else ++q; printf(“%d”,*q); } } A、26 B、23 C、36 D、33 188、下面程序的运行结果是____ void prt(int *a) {printf(“%d\\n”,++*a);} main() { int b=25; prt(&b); } A、26 B、24 C、25 D、23 } A、26 B、24 C、25 D、23 190、下面程序的运行结果是____ #include #include main() { char *a=\ a++; b++; printf(\} A、零 B、正数 C、负数 D、无确定值 191、若运行以下程序时,从键盘上输入OPEN THE DOOR<回车>,则程序的运行结果是____ #include char f(char *ch) { if(*ch<='Z'&&*ch>='A') *ch-='A'-'a'; return *ch;} main() { char s1[81],*q=s1; gets(s1); while(*q) { *q=f(q); putchar(*q); q++; } putchar('\\n'); } A、oPEN tHE dOOR B、OPEN THE DOOR C、open the door D、Open The Door (选)192、下列程序的运行结果是____ #include void f (float *q1, float *q2, float *a) { a=(float *)calloc(1, sizeof(float)); *a=*q1+*(q2++); } main() 第 4 页 共 9 页

C语言程序设计练习五指针练习题

{ float a1[2]={1.1, 2.2}, a2[2]={10.0, 20.0}, *s=a1; f(a1, a2, s); printf(\} A、1.100000 B、11.100000 C、12.100000 D、21.100000 193、下列程序的运行结果是____ #include #include void f (char *s, int n) { char a,*q1,*q2; q1=s;q2=s+n-1; while(q1 # include # define N 10 main ( ) { char str[N][81], *sp; int i ; for (i=0 ; i main ( ) { char *p , s[6] ; int n ; p=s; gets (p ) ; n=__( 1 )__; while (__②__!='\\0' ) n=n*8+ *p –'0'; printf (\} ① A、0 B、*p C、*p-'0' D、*p+'0' ② A、*p B、*p++ C、*(++p) D、p 197、函数count 的功能是统计子串substr 在主串str 中出现的次数。请选择填空。 count(char *str,char *substr) { int i,j,k,num=0; for(i=0;__①__; i++) for(__②__,k=0;substr[k]= =str[j];k++,j++) if(substr[__③__ ]= ='\\0' ) { num++; break; } return(num); } ① A、str[i]= =substr[i] B、str[i]!='\\0' C、str[i]= ='\\0' D、str[i]>substr[i] ② A、j=i+1 B、j=i C、j=0 D、j=1 ③ A、k B、k++ C、k+1 D、++k 198、下面程序的功能是在字符串str中找出最大的字符并放在第一个位置上,并将该字符前的原字符往后顺序移动,如串“oalne”。请选择填空。 # include main ( ) { char str[80], *p, max, *q ; p=str ; gets (p); max=*(p++) ; while ( *p!='\\0' ) { if ( max<*p ) { max=*p ; __①__; } p++; } p=q ; while (__②__) { *p=*( p-1 ) ; __③__; } *p=max ; 第 5 页 共 9 页

C语言程序设计练习五指针练习题

puts ( p ); } ① A、p++ B、p=q C、q=p D、q++ ② A、p>str B、p>=str C、*p>str[0] D、*p>=str[0] } ① A、a++ B、a+1 C、a-- D、a-1 ② A、n/10 B、n puts(str); ③ A、p++ B、str-- C、p-- D、i-- 199、函数 DelSpace的功能是删除指针p所指向的字符串中的所有空格(包括TAB符,回车符,换行符),请选择填空。 DelSpace (char *p) { int i,t; char c[80]; for(i=0,t=0;__①__;i++) if(! isspace(__②__)) c[t++]=p[i]; c[t]='\\0'; strcpy(p,c); } ① A、p[i] B、!p[i] C、p[i]='\\0' D、p[i]= ='\\0' ② A、p+i B、*c[i] C、*(p+i) D、*(c+i) (选)200、下面程序的功能是利用递归算法将字符串s中的内容按逆序输出,但不改变串中的内容,请选择填空。 # include main ( ) { char s[10]=\ inberp(s); } inverp (char *a) { if(__①__) return 0; inverp(a+1); printf(\②__); } ① A、*a!='\\0' B、*a!=NULL C、!*a D、!a*= =0 ② A、*(a-1) B、*a C、*(a+1) D、*(a--) (选)201、下面程序的功能是用递归算法将一个整数按逆序存放一个字符数组中。如123存放成“321”,请选择填空。 # include void convert(char *a,int n) { int i; if((i=n/10)!=0) convert(__①__,i); *a=__②__; } main() { int number; char str[10]=\; scanf(\,&number); convert(str,number); C、n/10+'0' D、n+'0' (选)202、下面程序的功能是用递归法将一个整数转换成字符形式输出。例如输入386,应输出字符串“386”。请选择填空。 # include void convert(int n) { int i; if((__①__)!=0) convert(i); putchar(__②__+'0'); } main() { int number; scanf(\,&number); if(number<0) { putchar('-'); number= -number;} convert(number); } ① A、i=n/10 B、i=n C、i=n-- D、i=--n ② A、n B、n/10 C、n D、i (选)203、下面程序的功能是:调用函数sss(),按字典顺序比较存放在a、b数组中两个字符串的大小,如果a大于b则i 为正值,a等于b则i为0,a小于b则i为负值。请选择填空。 # include \sss(char *s,char *t) { for( ;*s= =*t;__①__) if(*s= ='\\0') return(0); return(*s-*t); } main() { char a[20],b[20]; int i; scanf(\,a,b); i=sss(__②__); printf(\,i); } ① A、s++ B、t++ C、s++;t++ D、t++,s++ ② A、a,b B、*a,*b C、&a,&b D、a[ ],b[ ] (选)204、下面程序的功能是从键盘接收一个字符串,然后按照字符顺序从小到大进行排序,并删除重复的字符。请选择填空。 # include # include 第 6 页 共 9 页

C语言程序设计练习五指针练习题

main() { char string[100],*p,*q,*r,c; printf(\ input a string:\); gets(string); for(p=string;*p;p++) { for(q=r=p;*q;q++) if(__①__) r=q; if(__②__) { c=*r;*r=*p;*p=c;} } for(p=string;*p;p++) { for(q=p;*p= =*q;q++) ; strcpy(__③__,q); } printf(\:%s\\n\,string); } ① A、*r>*q B、*r>*p C、r>q D、r>p ② A、r= =q B、r!=q C、p!=q D、r!=p ③ A、p++ B、p C、p-1 D、p+1 205、下面程序的功能是将字符串a分段传送到字符串b中。要求在每五个字符后插入一个逗号,以示分段。例如字符串a为“abcdefg12345”,则字符串b为“abcde,fg123,45”,请选择填空。 # include main() { int i,k=0; char a[80],b[80],*p; p=a; gets(p); while(*p) { for(i=1;__①__;p++,k++,i++) b[k]=*p; if(__②__) { b[k]=',' ;k++;} } b[k]='\\0'; puts(b); } ① A、i<5 B、i<=5 C、i<5&&*p!='\\0' D、i<=5&&*p ② A、i= =6 B、*P= ='\\0' C、!*p D、i!=6 206、当运行以下程序时,若从键盘输入Sorry!<回车>,则下面程序的运行结果是 # include # include main() { char str[10],*p=str; gets(p); printf(\,stre(p)); } stre(char str[ ]) { int num=0; while(*(str+num)!='\\0') num++; return(num); } A、7 B、6 C、5 D、10 207、下面程序的运行结果是 # include main() { static char a[ ]=\; char *p1,*p2; int k; p1=a; p2=b; for(k=0;k<=7;k++) if(*(p1+k)= =*(p2+k) ) printf(\); } A、gae B、ga C、Language D、有语法错 208、下面程序的运行结果为 # include # include main ( ) { char *aa=\,*bb=\; aa+=2; bb+=2; printf(\,strcmp(aa,bb)); } A、有语法错 B、大于零 C、等于零 D、小于零 209、下面程序的运行结果是 # include main() { int a=28,b; char s[10],*p; p=s; do { b= a; if(b<10) *p= b+48; else *p= b+55; p++; a= a/5; } while(a>0); 第 7 页 共 9 页

C语言程序设计练习五指针练习题

*p='\\0'; puts(s); } A、10 B、C2 C、C51 D、\\0 210、下面程序的运行结果是 # include void select(char *s) { int i,j; char *t; t=s; for(i=0,j=0;*(t+i)!='\\0';i++) if(*(t+i)>='0'&&*(t+i)<='9') { *(s+i)=*(t+i); j++} *(s+j)='\\0'; } main() { char *str=\; select(str); printf(\,str); } A、IBM 486&586 B、IBM C、486&586 D、486586 211、当运行以下程序时,从键盘输入My Book<回车>,则下面程序的运行结果是 # include char fun(char *s) { if(*s<='Z'&&*s>='A') *s+=1; return *s; } main() { char c[80],*p=c; gets(c); while(*p) { *p=fun(p); putchar(*p); p++; } printf(\); } A、mZ bPPk B、my book C、Ny Cook D、My Book 212、下面程序的运行结果是 # include # include fun(char *s) { char t,*a,*z; a=s; z=s+strlen(s)-1; while(a++ main() { char *p,s[ ]=\; for(p=s;*p!='\\0'; ) { printf(\,p); p++; if(*p!='\\0') p++; else break; } } 第 8 页 共 9 页

C语言程序设计练习五指针练习题

A ABCDEFG B ABCDEFG C A ABCDE ABC A CDEFG EFG G C E G D、 Basic } ① A、p1 B、p2[p1] C、x[p2] D、x-p1 ② A、p1-x B、p1 C、p2-x D、x-p2 216、下面程序的运行结果是 # include # include main() { char *p1,*p2,str[50]=\; p1=\; p2=\; strcpy(str+1,strcat(p1,p2)); printf(\,str); } A、abcabcabc B、bcabcabc C、aabcabc D、cabcabc 217、以下与库函数strcmp(char *s,char *t)的功能相等的程序段是 A、strcmpA(char *s,char *t) { for( ;*s++= =*t++; ) if(!*s) return 0; return(*s-*t) } B、strcmpB(char *s,char *t) { for( ;*s++= =*t++; ) if(*s= ='\\0') return 0; return(*s-*t) } C、strcmpC(char *s,char *t) { for( ;*s++= =*t;s++,t++) if(!*s) return 0; return(*s-*t) } D、strcmpD(char *s,char *t) { for( ;*t= =*s; ) {if(!*t) return 0; t++; s++} return(*s-*t) } 218、以下程序的功能是找出数组中的最大值和该值所在的元素下标,数组元素值从键盘输入。请选择填空。 main() { int x[ ],*p1,*p2,k; for(k=0;k<10;k++) scanf(\); for(p1=x,p2=x;p1-x<10;p1++) if(*p1>*p2) p2=__①__; printf(\,INDEX=%d\\n\, *p2,__②__); 第 9 页 共 9 页

本文来源:https://www.bwwdw.com/article/ecer.html

Top