C语言指针习题及答案

合集下载

C语言指针习题(共21张)

C语言指针习题(共21张)
char *p1=a,*p2=b; int k;
for(k=0;k<=7;k++) if(*(p1+k)= =*(p2+k))
printf(“%c”,*(p1+k));} A)gae B)ga C)language D)有语法错误
第17页0.,7共21页。
C程序设计
1.若有说明语句 : int a[10],*p=a; 则对数组元素的正确引用 是: A)a[10] B)p[a] C)*(p+2) D)p+2
B.*(*(a+i)) D.*(&a[i])
答案:B 分析:指针就变量p取得数组a的首地址,由指针与数组关系知,p[i]表示数组元素第i+1元素值, p[i]=a[i]正确,故A不能选。*(a+i)表示一维数组a第i+1元素值,*(*(a+i)表示对第i+1元 素值再取值是错误操作,所以选B。a[p-a]=a[0]正确,故不能选择C。*(&a[i])也正确, 也不能选D。
printf(“sum=%d”,s);}
第19页0.,9共21页。
C程序设计
3.下面程序的运行(yùnxíng)结果是: main( ) {int x[ ]={0,1,2,3,4,5,6,7,8,9}; int s,i,*p; s=0;p=&x[0];
for(i=1;i<10;i+=2) s+=*(p+i); printf(“sum=%d”,s);}
答案:25(1+3+5+7+9=25)
第1100页.1,0共21页。
C程序设计
4.下面程序的功能(gōngnéng)是删除字符串中的数字字符并输出,填空完成 序。 #include”stdio.h” void deln(char *s) {int i,j; for(i=0,j=0;s[i]!=‘\0’;i++) if(s[i]<‘0’ (1) s[i]>’9’) {s[j]=s[i];j++;}

C语言指针习题和答案精选文档

C语言指针习题和答案精选文档

C语言指针习题和答案精选文档TTMS system office room 【TTMS16H-TTMS2A-TTMS8Q8-一、用指针方法编写一个程序,输入3个整数,将它们按由小到大的顺序输出#include <>void swap(int *pa,int *pb){int temp;temp = *pa;*pa = *pb;*pb = temp;}void main(){int a,b,c,temp;scanf("%d%d%d",&a,&b,&c);if(a>b)swap(&a,&b);if(b>c)swap(&b,&c);if(a>c)swap(&a,&c);printf("%d,%d,%d",a,b,c);}二、C语言用指针方法输入3个字符串按由小到大顺序输出#include ""#include ""int main(int argc, char* argv[]){char *t;char *p1=NULL,*p2=NULL,*p3=NULL;char ch1[20]={0},ch2[20]={0},ch3[20]={0};p1=ch1;p2=ch2;p3=ch3;printf("No1:");scanf("%s",p1);fflush(stdin);printf("No2:");scanf("%s",p2);fflush(stdin);printf("No3:");scanf("%s",p3);fflush(stdin);if(strcmp(p1,p2)>0){t=p1;p1=p2;p2=t;}if(strcmp(p1,p3)>0){t=p1;p1=p3;p3=t;}if(strcmp(p2,p3)>0){t=p2;p2=p3;p3=t;}printf("%s\n%s\n%s\n",p1,p2,p3);return 0;}编程输入一行文字,找出其中的大写字母,小写字母,空格,数字,及其他字符的个数#include<>void main(){int a=0,b=0,c=0,d=0,e=0,i=0;char *p,s[20];while((s[i]=getchar())!='\n')i++;p=s;while(*p!=10){if(*p>='A'&&*p<='Z')a++;else if(*p>='a'&&*p<='z')b++;else if(*p==' ')c++;else if(*p>='0'&&*p<='9')d++;else e++;p++;}printf("大写字母 %d 小写字母 %d\n",a,b);printf("空格 %d 数字 %d 非字符 %d\n",c,d,e);}写一个函数,将3 3矩阵转置#include ""void Transpose(int (*matrix)[3]){int temp;int i, j;for(i=1;i<3;i++)/*转置*/{for(j=0;j<i;j++){temp = *(*(matrix+j)+i);*(*(matrix+j)+i) = *(*(matrix+i)+j); *(*(matrix+i)+j) = temp;}}}void main(){int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}}; Transpose(a);for(int i = 0;i<3;i++){for(int j=0;j<3;j++){printf("%d ",a[i][j]);}printf("\n");}}}用指向一维数组的指针做函数参数#include<>#include<>int main(){void sort(char (*s)[6]);3”n",*(month_name+n));elseprintf("It is wrong.\n");}运行结果:① Input month: 2↙It is February.② Input month: 8↙It is August.③ Input month: 13↙It is wrong.9.11c语言:将字符串computer赋给一个字符数组,然后从第一个字母开始间隔地输出该串。

C语言指针习题__附答案

C语言指针习题__附答案

一、选择题1.变量的指针,其含义是指该变量的____b____.a)值b)地址c)名d)一个标志2.若有语句int *point,a=4;和point=&a;下面均代表地址的一组选项是___d__.a)a,point,*&a b)&*a,&a,*pointc)*&point,*point,&a d)&a,&*point ,point3.若有说明;int *p,m=5,n;以下正确的程序段的是___d__.a)p=&n; b)p=&n;scanf("%d",&p); scanf("%d",*p);c)scanf("%d",&n); d)p=&n;*p=n; *p=m;4. 以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是_b__.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)*p只能用来说明p是一个指针变量5. 已有变量定义和函数调用语句:int a=25; print_value(&a); 下面函数的正确输出结果是__d__.void print_value(int *x){ printf(“%d\n”,++*x);}a)23 b)24 c)25 d)266.若有说明:long *p,a;则不能通过scanf语句正确给输入项读入数据的程序段是aA) *p=&a;scanf("%ld",p);B) p=(long *)malloc(8);scanf("%ld",p);C) scanf("%ld",p=&a);D) scanf("%ld",&a);7.有以下程序#include<stdio.h>main(){ int m=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf("%d,%d,%d,%d\n",m,n,*p,*q);}程序运行后的输出结果是bA)1,2,1,2 B)1,2,2,1C)2,1,2,1 D)2,1,1,28.有以下程序main(){ int a=1, b=3, c=5;int *p1=&a, *p2=&b, *p=&c;*p =*p1*(*p2);printf("%d\n",c);}执行后的输出结果是cA)1 B)2 C)3 D)49. 有以下程序main(){ int a,k=4,m=4,*p1=&k,*p2=&m;a=p1==&m;printf("%d\n",a);}程序运行后的输出结果是(d)A)4 B)1 C)0 D)运行时出错,无定值10. 在16位编译系统上,若有定义int a[]={10,20,30}, *p=&a;,当执行p++;后,下列说法错误的是(a)A)p向高地址移了一个字节B)p向高地址移了一个存储单元C)p向高地址移了两个字节D)p与a+1等价11.有以下程序段int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;b=p[5];b中的值是(d)A)5 B)6 C)8 D)912.若有以下定义,则对a数组元素的正确引用是___d______.int a[5],*p=a;a)*&a[5] b)a+2 c)*(p+5) d)*(a+2)13.若有以下定义,则p+5表示___a____.int a[10],*p=a;a)元素a[5]的地址b)元素a[5]的值c)元素a[6]的地址d)元素a[6]的值14.设已有定义: int a[10]={15,12,7,31,47,20,16,28,13,19},*p; 下列语句中正确的是(b)A) for(p=a;a<(p+10);a++);B) for(p=a;p<(a+10);p++);C) for(p=a,a=a+10;p<a;p++);D) for(p=a;a<p+10; ++a);15.有以下程序段#include <stdio.h>int main(){ int x[] = {10, 20, 30};int *px = x;printf("%d,", ++*px); printf("%d,", *px);px = x;printf("%d,", (*px)++); printf("%d,", *px);px = x;printf("%d,", *px++); printf("%d,", *px);px = x;printf("%d,", *++px); printf("%d\n", *px);return 0;}程序运行后的输出结果是( a)A)11,11,11,12,12,20,20,20 B)20,10,11,10,11,10,11,10C)11,11,11,12,12,13,20,20 D)20,10,11,20,11,12,20,2016.设有如下定义:int arr[]={6,7,8,9,10};int *ptr;ptr=arr;*(ptr+2)+=2;printf ("%d,%d\n",*ptr,*(ptr+2));则程序段的输出结果为 dA)8,10 B)6,8 C)7,9 D)6,1017.若有定义:int a[]={2,4,6,8,10,12},*p=a;则*(p+1)的值是__4____. *(a+5)的值是_12________.18.若有以下说明和语句,int c[4][5],(*p)[5];p=c;能正确引用c数组元素的是___d___.A) p+1 B) *(p+3) C) *(p+1)+3 D) *(p[0]+2))19.若有定义:int a[2][3],则对a数组的第i行j列元素地址的正确引用为___a___.a)*(a[i]+j) b)(a+i) c)*(a+j) d)a[i]+j20.若有以下定义:int a[2][3]={2,4,6,8,10,12};则a[1][0]的值是__8__. *(*(a+1)+0)的值是____8____.21.有以下定义char a[10],*b=a;不能给数组a输入字符串的语句是(b)A)gets(a) B)gets(a[0]) C)gets(&a[0]); D)gets(b);22.下面程序段的运行结果是____c_____.char *s="abcde";s+=2;printf("%d",s);a)cde b)字符'c' c)字符'c'的地址d)无确定的输出结果23.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是(c)A) char s[10]="abcdefg"; B) char t[]="abcdefg",*s=t;C) char s[10];s="abcdefg"; D) char s[10];strcpy(s,"abcdefg");24.设已有定义: char *st="how are you"; 下列程序段中正确的是(c)A) char a[11], *p; strcpy(p=a+1,&st[4]);B) char a[11]; strcpy(++a, st);C) char a[11]; strcpy(a, st);D) char a[], *p; strcpy(p=&a[1],st+2);25.有以下程序main(){char a[]="programming",b[]="language";char *p1,*p2;int i;p1=a;p2=b;for(i=0;i<7;i++)if(*(p1+i)==*(p2+i))printf("%c",*(p1+i));}输出结果是(d)A)gm B)rg C)or D)ga26.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是____b____.a)c=*p1+*p2; b)p2=c c)p1=p2 d)c=*p1*(*p2);27.以下正确的程序段是_____c____.a)char str[20]; b)char *p;scanf("%s",&str); scanf("%s",p);c)char str[20]; d)char str[20],*p=str;scanf("%s",&str[2]); scanf("%s",p[2]);28.若有说明语句char a[]="It is mine";char *p="It is mine";则以下不正确的叙述是___d_____.a)a+1表示的是字符t的地址b)p指向另外的字符串时,字符串的长度不受限制c)p变量中存放的地址值可以改变d)a中只能存放10个字符29.下面程序的运行结果是___b____.#include <stdio.h>#include <string.h>main(){ char *s1="AbDeG";char *s2="AbdEg";s1+=2;s2+=2;printf("%d\n",strcmp(s1,s2));}a)正数b)负数c)零d)不确定的值30.有以下程序void f(int *x,int *y){int t;t=*x;*x=*y;*y=t;}main(){int a[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7];while(*p!=*q){f(p,q);p++;q--;}for(i=0;i<8;i++) printf("%d,",a[i]);}程序运行后的输出结果是__d____。

C语言指针习题及答案

C语言指针习题及答案

指针习题及答案一.选择题1。

变量的指针,其含义是指该变量的 B 。

A)值B)地址C)名D)一个标志2。

已有定义int k=2;int *ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是 B 。

A)k=*ptr1+*ptr2 B)ptr2=k C)ptr1=ptr2 D)k=*ptr1*(*ptr2)3.若有说明:int *p,m=5,n;以下程序段正确的是 D .A)p=&n ;B)p = &n ;scanf(“%d”,&p); scanf(“%d",*p);C)scanf(“%d”,&n); D)p = &n ;*p=n ; *p = m ;4.已有变量定义和函数调用语句:int a=25;print_value(&a);下面函数的输出结果是D 。

void print_value(int *x){ printf(“%d\n”,++*x); }A)23 B)24 C)25 D)265.若有说明:int *p1, *p2,m=5,n;以下均是正确赋值语句的选项是 C 。

A)p1=&m;p2=&p1 ; B)p1=&m;p2=&n; *p1=*p2 ;C)p1=&m; p2=p1 ; D)p1=&m;*p1=*p2 ;6。

若有语句:int *p,a=4;和p=&a;下面均代表地址的一组选项是 D . A)a,p,*&a B)&*a,&a,*p C)*&p,*p,&a D)&a,&*p,p7.下面判断正确的是 C 。

A)char *a="china”; 等价于char *a; *a="china” ;B)char str[10]={“china”};等价于char str[10];str[ ]={“china";}C)char *s="china"; 等价于char *s; s=”china” ;D)char c[4]=”abc",d[4]=”abc”;等价于char c[4]=d[4]=”abc” ;8。

c语言指针问题及答案

c语言指针问题及答案
int tmp = *p;*p = *q;*q = tmp;
}
static void foo2(int *p, int *q){
int *tmp = p;p = q;q = tmp;
}
static void test5()
{
int a = 3;int b = 5;
void (*p[2])(int*, int*);
void(*p[2])(int *, int);
定义了一个函数指针的数组p, p有两个指针元素.元素是函数的指针,函数指针指向的函数是一个带2个参数,不返回任何类型值的函数,所带的两个参数分别是指向整型的指针,和整型
p[0] = f1; p[1] = f2 contain address of function .function name without parenthesis represent address of function Value and address of variable is passed to function only argument that is effected is a (address is passed). Because of call by value f1, f2 can not effect b
int (*p)[3] = a;
printf("%d %d\n", (*p)[1], (*p)[2]);
//*(*p + 1) //2 3
p++;
printf("%d %d\n", (*p)[1], (*p)[2]); //5 6
}
//==============================

c语言指针题目及答案

c语言指针题目及答案

c语言指针题目及答案一选择题(7分,每小题0.5分)1.C语言源程序的基本单位是( )。

A 过程B 函数C 子程序D 标识符2.下列程序的输出结果是( )。

main( ){ int a=7,b=5;printf("%d",b=b/a);}A 5B 1C 0 D不确认值3.假设变量a,b均为整型,表达式(a=5,b=2,a>b?a++:b++,a+b)的值是( )。

A 7B 8C 9D 24.设a为int型变量,执行下列赋值语句后,a的取值分别是( )。

a=125.534; a=(int)125.521%4; a=5<<2;A 125,31,1B 125,1,20C 125,31,20D 125.534,2,205.建有如下程序段,下面叙述中恰当的就是 ( )。

int k=10; while(k=0) k=k-1;A 循环继续执行一次 B循环就是无穷循环 C循环体语句一次也不继续执行 D循环体语句继续执行一次6.以下程序的输出结果为( )。

int i;void prt( ){ for(i=5;i<8;i++) printf("%c",'*');printf(" ");}main( ){ for(i=5;i<=8;i++) prt( );}A ***B *** *** *** ***C *** ***D * * *7.在C语言程序中,以下说法正确的是( )。

A函数的定义可以嵌套,但函数的调用不可以嵌套B函数的定义不可以嵌套,但函数的调用可以嵌套C函数的定义和函数的调用都不可以嵌套D函数的定义和函数的调用都可以嵌套8.以下函数调用语句中所含( )个实参。

func((e1,e2),(e3,e4,e5));A 2B 3C 5D 语法错误9.以下程序的输出结果为( )。

#define ADD(x) x*xmain( ){ int a=4,b=6,c=7,d=ADD(a+b)*c;printf("d=%d",d);}A d=70B d=80C d=140D d=70010.未知职工记录叙述如下,在Turbo C中,系统为变量w分配( )字节的空间。

C语言指针习题 附答案

C语言指针习题      附答案

C语言指针习题附答案c语言指针习题--附答案一、选择题1.变量的指针,其含义就是指本变量的_________.a)值b)地址c)名d)一个标志2.若有语句int*point,a=4;和point=&a;下面均代表地址的一组选项是_____.a)a,point,*&ab)&*a,&a,*pointc)*&point,*point,&ad)&a,&*point,point3.若有说明;int*p,m=5,n;以下正确的程序段的是________.a)p=&n;b)p=&n;scanf(\scanf(\c)scanf(\d)p=&n;*p=n;*p=m;4.以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是________.main(){int*p,*q,a,b;p=&a;printf(“inputa:”);scanf(“%d”,*p);……}a)*p则表示的就是指针变量p的地址b)*p表示的是变量a的值,而不是变量a的地址c)*p表示的是指针变量p的值d)*p 只能用来说明p是一个指针变量5.尚无变量定义和函数调用语句:inta=25;print_value(&a);下面函数的恰当输入结果就是________.voidprint_value(int*x){printf(“%d\\n”,++*x);}a)23b)24c)25d)266.若有说明:long*p,a;则不能通过scanf语句正确给输入项读入数据的程序段是a)*p=&a;scanf(\,p);b)p=(long*)malloc(8);scanf(\,p);c)scanf(\,p=&a);d)scanf(\,&a);7.有以下程序#includemain(){intm=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf(\}程序运行后的输出结果是a)1,2,1,2c)2,1,2,18.存有以下程序main(){inta=1,b=3,c=5;int*p1=&a,*p2=&b,*p=&c;*p=*p1*(*p2);printf(\}继续执行后的输入结果就是a)19.有以下程序main(){inta,k=4,m=4,*p1=&k,*p2=&m;a=p1==&m;printf(\}程序运行后的输出结果是()a)410.在16十一位编译系统上,若存有定义inta[]={10,20,30},*p=&a;,当继续执行p++;后,以下观点错误的就是()a)p向低地址安远了一个字节c)p向低地址安远了两个字节b)p向高地址移了一个存储单元d)p与a+1等价b)1c)0d)运行时出错,无定值b)2c)3d)4b)1,2,2,1d)2,1,1,211.存有以下程序段inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;b=p[5];b中的值是()a)5b)6c)8d)912.若有以下定义,则对a数组元素的正确引用是_________.inta[5],*p=a;a)*&a[5]b)a+2c)*(p+5)d)*(a+2)13.若有以下定义,则p+5表示_______.inta[10],*p=a;a)元素a[5]的地址b)元素a[5]的值c)元素a[6]的地址d)元素a[6]的值14.设尚无定义:inta[10]={15,12,7,31,47,20,16,28,13,19},*p;以下语句中恰当的就是()a)for(p=a;ad)for(p=a;a15.存有以下程序段#includeintmain(){intx[]={10,20,30};int*px=x;printf(\printf(\px=x;printf(\printf(\px=x;printf(\printf(\px=x;printf(\printf(\return0;}程序运行后的输入结果就是()a)11,11,11,12,12,20,20,20b)20,10,11,10,11,10,11,10c)11,11,11,12,12,13,20,20d)20,10,11,20,11,12,20,2016.设有如下定义:intarr[]={6,7,8,9,10};int*ptr;ptr=arr;*(ptr+2)+=2;printf(\则程序段的输出结果为a)8,10b)6,8c)7,9d)6,1017.若有定义:inta[]={2,4,6,8,10,12},*p=a;则*(p+1)的值是______.*(a+5)的值是_________.18.若存有以下表明和语句,intc[4][5],(*p)[5];p=c;能够恰当提及c数组元素的就是______.a)p+1b)*(p+3)c)*(p+1)+3d)*(p[0]+2))19.若存有定义:inta[2][3],则对a数组的第i行j列元素地址的恰当提及为______.a)*(a[i]+j)b)(a+i)c)*(a+j)d)a[i]+j20.若有以下定义:inta[2][3]={2,4,6,8,10,12};则a[1][0]的值是_____.*(*(a+1)+0)的值是________.21.存有以下定义chara[10],*b=a;不能给数组a输入字符串的语句是()a)gets(a)b)gets(a[0])c)gets(&a[0]);d)gets(b);22.下面程序段的运行结果是_________.char*s=\s+=2;printf(\a)cdeb)字符'c'c)字符'c'的地址d)并无确认的输入结果23.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是()a)chars[10]=\c)chars[10];s=\24.设已有定义:char*st=\下列程序段中正确的是()a)chara[11],*p;strcpy(p=a+1,&st[4]);b)chara[11];strcpy(++a,st);c)chara[11];strcpy(a,st);d)chara[],*p;strcpy(p=&a[1],st+2);25.存有以下程序main(){chara[]=\char*p1,*p2;inti;p1=a;p2=b;for(i=0;i<7;i++)if(*(p1+i)==*(p2+i))printf(\}输出结果是()a)gmb)rgc)ord)ga26.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是________.a)c=*p1+*p2;b)p2=cc)p1=p2d)c=*p1*(*p2);27.以下正确的程序段是_________.a)charstr[20];b)char*p;scanf(\scanf(\c)charstr[20];d)charstr[20],*p=str;scanf(\scanf(\28.若有说明语句chara[]=\char*p=\则以下不正确的叙述是________.a)a+1则表示的就是字符t的地址b)p指向另外的字符串时,字符串的长度不受限制c)p变量中存放的地址值可以改变d)a中只能存放10个字符29.下面程序的运转结果就是_______.#include#include。

(完整word版)C语言指针练习+答案+讲解

(完整word版)C语言指针练习+答案+讲解

第七章指针7.1 选择题1.若有说明:int a=2, *p=&a, *q=p;,则以下非法的赋值语句是(D)。

A. p=q; B. *p=*q; C. a=*q; D. q=a;a是整型数,int *p,*q定义了指针,p,q是指向整型的指针.p取得a的地址,而q取得p的地址p,q是指针(也就是一个地址),而*p和*q是这个指针指向的整型数值(存放在这个地址的值).A)把q的地址赋给p,则p和q完全一样了,都指向一个数2B)把q中数据个pC)把q中数据给aD)a中数据是2,不能够给一个地址。

除非*q=a2.若定义:int a=511, *b=&a;,则printf("%d\n”, *b);的输出结果为:D A.无确定值 B. a的地址 C. 512 D. 511int a=511,*b=&a;a 是整形变量b 是整形指针变量,指向 aprintf("%d\n",*b);就是输出指针变量 b,所指变量的值输出结果5113.已有定义int a=2, *p1=&a, *p2=&a; 下面不能正确执行的赋值语句是(B)。

A. a=*p1+*p2; B. p1=a; C. p1=p2; D. a=*p1*(*p2);47、已知在程序中定义了如下的语句:int *P1,*P2;int k;p1=&k;p2=&k;则下列语句中不能正确执行是( B )A、k=*P1+*P2;B、p2=k;C、P1=P2;D、K=*P1 * (*P2);P1 P2是指针,K是整型变量,变量怎么可以赋值给指针呢?A其实是执行了K=K+K(P1和P2都指向K,所以*P1 *P2其实都是指K)C是赋值语句D其实执行了K=K*K4.变量的指针,其含义是指该变量的(B)。

A.值 B.地址 C.名 D.一个标志5.若有说明语句:int a, b, c, *d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是(A)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

指针习题及答案 一•选择题1.变量的指针,其含义是指该变量的 BA )值B )地址C )名D )一个标志 2.已有定义int k=2;int *ptr1,*ptr2; 且ptr1和ptr2 均已指向变量k ,下面不能正确执行 的赋值语句是 B。

A ) k=*ptr1+*ptr2B ) ptr2=kC ) PtrI=Ptr2D ) k=*ptr1*(*ptr2)3.若有说明:int *p,m=5,n; 以下程序段正确的是 D 。

A ) P=&n ; B ) P = &n ;SCanf( %d ",&p);scanf( %d ",*p);C ) scanf( %d",&n);D ) P = &n ;*p=n ;*p = m ;4.已有变量定义和函数调用语句: int a=25;Print_value(&a);下面函数的输出结果是 ______D _____ 。

void Prin t_value(i nt *x) { Printf( %d\n'',++*x); }A) 23B ) 245. 若有说明:int *p1, *p2,m=5,n; A) P 仁&m; p2=&p1 ; C ) P 仁&m; p2=p1 ;6. 若有语句:int *p,a=4; 和P=&a ;下面均代表地址的一组选项是 A) a,p,*&aB ) &*a,&a,*PC ) *&p,*p,&a7. 下面判断正确的是_CA) c=*p1+*p2B ) p2=cC ) P 仁p2D ) c=*p1*(*p2) 12.设有程序段:Chars[ ]= ^China "; Char *p ; P=S ;则下面叙述正确的是 DA) S 和P 完全相同 B)数组S 中的内容和指针变量 P 中的内容相等D )26 CC) 25以下均是正确赋值语句的选项是B ) P 仁&m; p2=&n; *p1 =* p2 ;D) P 仁&m; *P 仁*p2 ;D ) &a,&*p,pA )B )C )D )Char *a= "ch in a "; 等价于 Char *a; *a= "ch in a ";Char str[10]={ China''};等价于 Char str[10]; str[ ]={ C hina";} Char *s= "ch in a "; 等价于 Char *s; S= "ch in a ";Char c[4]= "abc",d[4]= "abc ";等价于8. 下面程序段中,for 循环的执行次数是Char *s= "∖ta ∖018bc "; for ( ; *s!= 20?; s++) Printf( *");A ) 9B ) 79. 下面能正确进行字符串赋值操作的是 A ) Char s[5]={ ABCDE ”}; C ) Char *s ; S= ''ABCDE "; 10. 下面程序段的运行结果是Char *s= "abcde"; s+=2 ; Printf( %d",s); A ) CdeB )字符?D ?11. 设p1和p2是指向同一个字符串的指针变量, Char c[4]=d[4]= "abC'; C C ) 6CB ) D )C ) Char s[5]={ ,A?応??C?,?D?,疋0; Char *s; SCanf( %s",s); 字符无?的地址 D )不确定C 为字符变量,则以下不能正确执行的赋C) S数组长度和P所指向的字符串长度相等D) *p与s[0]相等13. 以下与库函数StrCPy(Char *p1,char *p2) 功能不相等的程序段是 D __________A) StrCPy1(Char *p1,char *p2){ while ((*p1++=*p2++)!= 20? ; }B) StrCPy2(Char *p1,char *p2){ while ((*p1=*p2)!= ?0? { p1++; p2++ } }C) StrCPy3(Char *p1,char *p2){ while (*p1++=*p2++) ; }D) StrCPy4(Char *p1,char *p2){ while (*p2) *p1++=*p2++ ; }14. 下面程序段的运行结果是__C ___________ 。

Char a[ ]= ”anguage", *p ;P=a ;while (*p!= ?u? { Printf( %c'',*p-32); p++ ; }A) LANGUAGEB)Ianguage16. 以下与库函数StrCmP(Char *s,char *t)A) StrCmP1(Char *s,char *t){ for ( ; *s++=*t++;)if (*s= = 20?) return 0 ; return (*s - *t);}B) StrCmP2(Char *s,char *t){ for ( ; *s++=*t++;)if (!*s) return 0 ; return (*s - *t);}C) StrCmP3(Char *s,char *t){ for ( ; *t= =*s;){ if (!*t) return 0 ; t++ ; s++ ; } return (*s - *t);}D) StrCmP4(Char *s,char *t){ for ( ; *s==*t; s++, t++ )if (!*s) return 0 ; return (*t - *s);}17. 以下说明不正确的是 D _________A) Char a[10]= "china ” ;C) Char *a; a= "ch in a";18. 设有说明语句:Char a[]= C It is mine述是 D oA) a+1表示的是字符t的地址B) P指向另外的字符串时,字符串的长度不受限制C) LANG D) IangUAGE功能相等的程序段是__C ____________ oB) Char a[10],*p=a; P= ”China";D) Char a[10],*p; p=a= ”China";;Char *p= " It is mine ";则以下不正确的叙C) P 变量中存放的地址值可以改变 D) a 中只能存放10个字符19.若已定义Char s[10];则在下面表达式中不表示s[1]的地址是 B ______________A ) s+1 20.若有定义:B ) s++C ) &s[0]+1D ) &s[1]int a[5],*p=a; 则对a 数组兀素的正确引用是 D。

A ) *&a[5]21.若有定义: B ) a+2C ) *(p+5)D ) *(a+2)int a[5],*p=a;则对a 数组兀素地址的正确引用是 D。

A ) p+5 22.若有定义:B ) *a+1C ) &a+1D ) &a[0]int a[2][3];则对a 数组的第i 行第j 列元素值的正确引用是A 。

A )*(*(a+i)+j)B ) (a+i)[j]C ) *(a+i+j)D )*(a+i)+j23. 若有定义:int a[2][3]; 则对a 数组的第i 行第j 列元素地址的正确引用是 _D _______ A )*(a[i]+j)B )(a+i)C ) *(a+j)D )a[i]+j24. 若有程序段:int a[2][3],(*p)[3]; p=a;则对a 数组元素地址的正确引用是 ___________ 。

26.若有定义:int a[5]; 则a 数组中首元素的地址可以表示为 _CA ) &aB ) a+1C ) aD ) &a[1]27. 若有定义:int (*p)[4]; 则标识符P ____ C _________ 。

A) 是一个指向整型变量的指针B) 是一个指针数组名C) 是一个指针,它指向一个含有四个整型元素的一维数组 D) 定义不合法 28. 以下与int *q[5]; 等价的定义语句是 C __________ 。

A ) int q[5]B ) int *qC ) int *(q[5])D ) int (*q)[5]29. 以下正确的说明语句是 __B ___________ 。

A) int *b[]={1,3,5,7,9};B) int a[5],*num[5]={&a[0],&a[1],&a[2],&a[3],&a[4]}; C) int a[]={1,3,5,7,9}; int *num[5]={a[0],a[1],a[2],a[3],a[4]}; D) int a[3][4],(*num)[4]; num[1]=&a[1][3]; 30. 若有定义:int b[4][6],*p,*q[4]; 且0≤ i<4,则不正确的赋值语句是D __________ A ) q[i]=b[i];B ) p=b;C ) p=b[i];D ) q[i]=&b[0][0]32.若要对a 进行自减运算,则 a 应有下面说明 D。

A ) int p[3];B ) int k;C ) Char *a[3]D ) int b[10];int *a=p; int *a=&k;int *a=b+1;33.以下选项中,对指针变量 P 的正确操作是 B 。

A ) int a[3], *p;B ) int a[5], *p;C ) int a[5];D ) int a[5] P=&a;p=a;int *p=a=100;int *p1,*p2=a;则数值不为 *p 仁 *p2;34.若有定义:int x[10]={0,1,2,3,4,5,6,7,8,9},*p1; 3的表达式是CA ) x[3]B ) P 仁x+3,*p1++C ) p1= x+2,*(p1++)D ) p1=x+2,*++p135.下面程序段的输出是 __C ____________int a[ ]={2,4,6,8,10,12,14,16,18,20,22,24},*q[4],k; for (k=01; k<4; k++) q[k]=&a[k*3];A ) *(p+2)B ) p[2] 25. 若有程序段:int a[2][3],(*p)[3]; p=a; A ) (p+1)[0] B ) *(*(p+2)+1)C) p[1]+1 D ) (p+1)+2 则对a 数组元素的正确引用是 __C ___________C ) *(p[1]+1)D ) p[1]+2Printf( %d∖n",q[3][0]);A) 8 B) 16 C) 20 D)输出不合法36. 若要对a进行自增运算,则a应具有下面说明__D _____________ 。

相关文档
最新文档