文档视界 最新最全的文档下载
当前位置:文档视界 › C语言指针习题 附答案

C语言指针习题 附答案

C语言指针习题  附答案
C语言指针习题  附答案

一、选择题

1.变量的指针,其含义是指该变量的_________.

a)值b)地址

c)名d)一个标志

2.若有语句int *point,a=4;和point=&a;下面均代表地址的一组选项是_____. a)a,point,*&a b)&*a,&a,*point

c)*&point,*point,&a d)&a,&*point ,point

3.若有说明;int *p,m=5,n;以下正确的程序段的是________.

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输入数值的方法是错误的,其错误原因是________.

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); 下面函数的正确输出结果是________.

void print_value(int *x)

{ printf(“%d\n”,++*x);}

a)23 b)24 c)25 d)26

6.若有说明:long *p,a;则不能通过scanf语句正确给输入项读入数据的程序段是

A) *p=&a;scanf("%ld",p);

B) p=(long *)malloc(8);scanf("%ld",p);

C) scanf("%ld",p=&a);

D) scanf("%ld",&a);

7.有以下程序

#include

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);

}

程序运行后的输出结果是

A)1,2,1,2 B)1,2,2,1

C)2,1,2,1 D)2,1,1,2

8.有以下程序

main()

{ int a=1, b=3, c=5;

int *p1=&a, *p2=&b, *p=&c;

*p =*p1*(*p2);

printf("%d\n",c);

}

执行后的输出结果是

A)1 B)2 C)3 D)4

9. 有以下程序

main()

{ int a,k=4,m=4,*p1=&k,*p2=&m;

a=p1==&m;

printf("%d\n",a);

}

程序运行后的输出结果是()

A)4 B)1 C)0 D)运行时出错,无定值

10. 在16位编译系统上,若有定义int a[]={10,20,30}, *p=&a;,当执行p++;后,下列说法错误的是()

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中的值是()

A)5 B)6 C)8 D)9

12.若有以下定义,则对a数组元素的正确引用是_________.

int a[5],*p=a;

a)*&a[5] b)a+2 c)*(p+5) d)*(a+2)

13.若有以下定义,则p+5表示_______.

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; 下列语句中正确的是()

A) for(p=a;a<(p+10);a++);

B) for(p=a;p<(a+10);p++);

C) for(p=a,a=a+10;p

D) for(p=a;a

15.有以下程序段

#include

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)11,11,11,12,12,20,20,20 B)20,10,11,10,11,10,11,10

C)11,11,11,12,12,13,20,20 D)20,10,11,20,11,12,20,20

16.设有如下定义:

int arr[]={6,7,8,9,10};

int *ptr;

ptr=arr;

*(ptr+2)+=2;

printf ("%d,%d\n",*ptr,*(ptr+2));

则程序段的输出结果为

A)8,10 B)6,8 C)7,9 D)6,10

17.若有定义:int a[]={2,4,6,8,10,12},*p=a;则*(p+1)的值是______. *(a+5)的值是

_________.

18.若有以下说明和语句,int c[4][5],(*p)[5];p=c;能正确引用c数组元素的是

______.

A) p+1 B) *(p+3) C) *(p+1)+3 D) *(p[0]+2))

19.若有定义:int a[2][3],则对a数组的第i行j列元素地址的正确引用为______.

a)*(a[i]+j) b)(a+i) c)*(a+j) d)a[i]+j

20.若有以下定义:int a[2][3]={2,4,6,8,10,12};则a[1][0]的值是_____. *(*(a+1)+0)的值是________.

21.有以下定义

char a[10],*b=a;

不能给数组a输入字符串的语句是()

A)gets(a) B)gets(a[0]) C)gets(&a[0]); D)gets(b);

22.下面程序段的运行结果是_________.

char *s="abcde";

s+=2;printf("%d",s);

a)cde b)字符'c' c)字符'c'的地址d)无确定的输出结果

23.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是()

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"; 下列程序段中正确的是()

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));

}

输出结果是()

A)gm B)rg C)or D)ga

26.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是________.

a)c=*p1+*p2; b)p2=c c)p1=p2 d)c=*p1*(*p2);

27.以下正确的程序段是_________.

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";

则以下不正确的叙述是________.

a)a+1表示的是字符t的地址

b)p指向另外的字符串时,字符串的长度不受限制

c)p变量中存放的地址值可以改变

d)a中只能存放10个字符

29.下面程序的运行结果是_______.

#include

#include

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]);

}

程序运行后的输出结果是______。

A)8,2,3,4,5,6,7,1, B)5,6,7,8,1,2,3,4,

C)1,2,3,4,5,6,7,8, D)8,7,6,5,4,3,2,1,

31. 已定义以下函数

fun (int *p)

{ return *p; }

该函数的返回值是

A)不确定的值B)形参p中存放的值

C)形参p所指存储单元中的值D)形参p的地址值32. 有以下程序

int f(int b[][4])

{ int i,j,s=0;

for(j=0;j<4;j++)

{ i=j;

if(i>2) i=3-j;

s+=b[i][j];

}

return s;

}

main( )

{ int a[4][4]={{1,2,3,4},{0,2,4,5},{3,6,9,12},{3,2,1,0}};

printf("%d\n",f(a) );

}

执行后的输出结果是

A) 12 B) 11 C) 18 D) 16

33.若有以下函数首部

int fun(double x[10], int *n)

则下面针对此函数的函数声明语句中正确的是

A)int fun(double x, int *n); B)int fun(double , int ); C)int fun(double *x, int n); D)int fun(double *, int *);

34.有以下程序

void sum(int *a)

{ a[0]=a[1];}

main( )

{ int aa[10]={1,2,3,4,5,6,7,8,9,10},i;

for(i=2;i>=0;i--) sum(&aa[i]);

printf("%d\n",aa[0]);

}

执行后的输出结果是()

A)4 B)3 C)2 D)1

35.下段代码的运行结果是:

int main()

{

char a;

char *str=&a;

strcpy(str,"hello");

printf(str);

return 0;

}

A)hello B)null C)h D)发生异常

36.下段程序的运行结果是:

void main()

{

char *p,*q;

char str[]="Hello,World\n";

q = p = str;

p++;

print(q);

print(p);

}

void print(char *s)

{

printf(“%s”,s);

}

A)H e

B)Hello,World ello,World

C)Hello,World Hello,World

D)ello,World ell,World

37.有以下程序

void fun(char *c,int d)

{

*c=*c+1;

d=d+1;

printf("%c,%c,",*c,d);

}

void main()

{

char a='A',b='a';

fun(&b,a);

printf("%c,%c\n",a,b);

}

程序运行后的输出结果是______。

A) B,a,B,a B) a,B,a,B C) A,b,A,b D) b,B,A,b

38、下面选项属于函数指针的是:

A、(int*)p(int, int)

B、int *p(int, int)

C、两者都是

D、两者都不是

39、若有函数max(a,b),并且已使函数指针变量p指向函数max,当调用该函数时,正确的调用方法是_______.

A)(*p)max(a,b); B)*pmax(a,b);

C) (*p)(a,b); D) *p(a,b);

40、下面几个选项中的代码能通过编译的是:

A)int* fun()

{

int s[3]={1,3,4};;

return s;

}

int main()

{

int * result;

result = fun();

for(int i =0;i<3;i++)

printf("%d\n",result[i]);

return 0;

}

B)int& fun()

{

int s[3]={1,3,4};;

return s;

}

int main()

{

int * result;

result = fun();

for(int i =0;i<3;i++)

printf("%d\n",result[i]);

return 0;

}

C)int* fun()

{

int s[3]={1,3,4};;

return &s;

}

int main()

{

int * result;

result = fun();

for(int i =0;i<3;i++)

printf("%d\n",result[i]);

return 0;

}

D)int& fun()

{

int s[3]={1,3,4};;

return &s;

}

int main()

{

int * result;

result = fun();

for(int i =0;i<3;i++)

printf("%d\n",result[i]);

return 0;

}

41、下列选项中声明了一个指针数组的是:

A)int *p[2]; B)int (*p)[2];

C)typedef int* intPtr;intPtr p[2];

D)A和B

E)A和C

F)B和C

42、下面代码能通过编译的是:

A)int main()

{

int a[3]={1,2,3};

int *b[3]={&a[1],&a[2],&a[3]};

int **p = b;

return 0;

}

B)int main()

{

int a[3]={1,2,3};

int *b[3]={a[1],a[2],a[3]};

int **p = b;

return 0;

}

C)int main()

{

int a[3]={1,2,3};

int *b[3]={&a[1],&a[2],&a[3]};

int *p = b;

return 0;

}

D)int main()

{

int a[3]={1,2,3};

int *b[3]={&a[1],&a[2],&a[3]};

int *p = &b;

return 0;

}

43、对于语句int *pa[5];下列描述中正确的是_______.

A) pa是一个指向数组的指针,所指向的数组是5个int型元素

B) pa是一个指向某数组中第5个元素的指针,该元素是int型变量

C) pa [5]表示某个元素的第5个元素的值

D) pa是一个具有5个元素的指针数组,每个元素是一个int型指针

44、若有以下定义,且0≤i<4,则不正确的赋值语句是_______.

int b[4][6], *p, *q[4];

A) q[i] = b[i]; B) p = b;

C) p = b[i] D) q[i] = &b[0][0];

45、若要对a进行++运算,则a应具有下面说明_______.

A) int a[3][2]; B) char *a[ ] = {“12”,”ab”};

C) char (*a)[3]; D) int b[10], *a = b;

46、若有以下说明语句:

char *language[ ] = {“FORTRAN”,”BASIC”,’’PASCAL”,’’JA V A”,”C”};

char **q;

q = language + 2;

则语句printf(“%o\n”, *q) 输出的是_______.

A) language[2]元素的地址;

B)字符串PASCAL

C) language[2]元素的值,它是字符串PASCAL的首地址

D)格式说明不正确,无法得到确定的输出

47、若有以下程序:

void main()

{

char *a[3] = {"I","love","China"};

char **ptr = a;

printf("%c %s" , *(*(a+1)+1), *(ptr+1) );

}

这段程序的输出是()

A) I l

B) o o

C)o love

D) I love

二、程序题

1、计算字符串中子串出现的次数。要求:用一个子函数subString()实现,参数为指向字符串和要查找的子串的指针,返回次数。

2、加密程序:由键盘输入明文,通过加密程序转换成密文并输出到屏幕上。算

法:明文中的字母转换成其后的第4个字母,例如,A变成E(a变成e),Z变成D,非字母字符不变;同时将密文每两个字符之间插入一个空格。例如,China 转换成密文为G l m r e。要求:在函数change中完成字母转换,在函数insert 中完成增加空格,用指针传递参数。

3、字符替换。要求用函数replace将用户输入的字符串中的字符t(T)都替换为

e(E),并返回替换字符的个数。

4、编写一个程序,输入星期,输出该星期的英文名。用指针数组处理。

5、有5个字符串,首先将它们按照字符串中的字符个数由小到大排列,再分别取出每个字符串的第三个字母合并成一个新的字符串输出(若少于三个字符的输出空格)。要求:利用字符串指针和指针数组实现。

6、定义一个动态数组,长度为变量n,用随机数给数组各元素赋值,然后对数

组各单元排序,定义swap函数交换数据单元,要求参数使用指针传递。

7、实现模拟彩票的程序设计:随机产生6个数字,与用户输入的数字进行比较,

输它们相同的数字个数(使用动态内存分配)。

c语言指针习题及答案69923

指针习题及答案 一.选择题 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)26 5.若有说明: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,p 7.下面判断正确的是 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.下面程序段中,for循环的执行次数是 C 。 char *s=”\ta\018bc” ; for ( ; *s!=’\0’ ; s++) printf(“*”) ; A)9 B)7 C)6 D)5 9.下面能正确进行字符串赋值操作的是 C 。 A)char s[5]={“ABCDE”}; B)char s[5]={‘A’,’B’,’C’,’D’,’E’}; C)char *s ; s=”ABCDE” ; D)char *s; scanf(“%s”,s) ; 10.下面程序段的运行结果是 C 。 char *s=”abcde” ; s+=2 ; printf(“%d”,s); A)cde B)字符’c’C)字符’c’的地址D)不确定11.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是 B 。 A)c=*p1+*p2 B)p2=c C)p1=p2 D)c=*p1*(*p2) 12.设有程序段:char s[ ]=”china”; char *p ; p=s ;则下面叙述正确的是 D 。A)s和p完全相同

c语言指针编程练习题

c语言指针编程练习题 2. 从命令行输入两个实型数据,请比较大小并输出。参考答案 3. 输入3个数a,b,c,按大小顺序输出。利用指针方法参考答案 4. 输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。参考答案 5. 有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数参考答案 6. 有n个人围成一圈,顺序排号。从第一个人开始报数,凡报到3的人 退出圈子,问最后留下的是原来第几号的那位。参考答案 7. 写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。参考答案 8. 编写一个函数,输入n为偶数时,调用函数求1/2+1/4+…+1/n,当输入n为奇数时,调 用函数1/1+1/3+…+1/n 参考答案 9. 八进制转换为十进制参考答案 10. 编一个函数fun,函数的功能是分别求出数组中所有奇数之 和以及所有偶数之和。形参n给了数组中数据的个数:

利用指针odd返回奇数之和,利用指针even返回偶数之和。例如:数组中的值依次为:1,8,2,3,11,6;则利用指针odd返回奇数之和24;利用指针even返回偶数之和8。参考答案 11. 复制字符串。参考答案 一、用指针方法编写一个程序,输入3个整数,将它们按由小到大的顺序输出 #include void swap { int temp; temp = *pa; *pa = *pb; *pb = temp; } void main { int a,b,c,temp; scanf; if swap; if swap;

if swap; printf; } 二、C语言用指针方法输入3个字符串按由小到大顺序输出 #include “stdio.h” #include “string.h” int main { 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; scanf; fflush; printf; scanf; fflush;

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)26 5.若有说明: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,p 7.下面判断正确的是 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.下面程序段中,for循环的执行次数是 C 。 char *s=”\ta\018bc” ; for ( ; *s!=’\0’ ; s++) printf(“*”) ; A)9 B)7 C)6 D)5 9.下面能正确进行字符串赋值操作的是 C 。 A)char s[5]={“ABCDE”}; B)char s[5]={‘A’,’B’,’C’,’D’,’E’}; C)char *s ; s=”ABCDE” ; D)char *s; scanf(“%s”,s) ; 10.下面程序段的运行结果是 C 。 char *s=”abcde” ; s+=2 ; printf(“%d”,s); A)cde B)字符’c’C)字符’c’的地址D)不确定

C语言复习题

一、填空: 1.整型数据变量声明中所使用的关键字是 int 。 2.设 float x=,y=; int a=7;,表达式 x+a%3*(int)(x+y)%2/4的值为。 3.printf(“My age is %d.”, age); 函数中,使用%d表示输出的是整型类型的数据。 4.每个源程序有且只有一个主函数,系统总是从该函数开始执行C语言程序。 5.设 int x=5,y,z;执行y=z=x;x=y==z;后,变量x的结果是 1 。 6. C 语言中,数组在内存中占一片的存储区,由代表它的首地址。数组名是一 个,不能对它进行赋值运算。 7.函数的参数为 char *类型时,形参与实参结合的传递方式为。 8.C程序编译、连接后生成程序。 9.当a=10,b=4,c=2时,表达式f=a>b>c的值是。 10.字符串数组与字符数组的在长度至少一个元素。 11.若函数的形式参数是指针类型,则实参可以是或。 12.如定义语句为 char a[ ]= "windows",b[ ]= "7";,语句 printf("%s",strcat(a,b));的输出结果 为。 13.请在下面的程序段中填写正确的格式说明符: int main(void) { float salary; printf(“Enter your desired monthly salary:.”, salary); } 14.C程序编译后生成程序。 15.C 语言的标识符只能由、数字和三种字符组成。 16.设有定义 int y; ,分别写出描述“y是偶数”的表达式,“y是奇数”的 表达式。 17.C语言没有字义专门的字符串变量类型,而是把它存储在数组中。 18.字符串常量"\\\22a,0\n\""的长度是。 19.字符串存储到数组中时,在数组的最后将增加一个标记字符串结束的字符。 20.设有定义语句 static int a[3][4] ={{1},{2},{3}}; 则 a[1][0]值为,a[1][1] 值 为,a[2][1]的值为。 21.假设int a=7; 执行语句a+=a-=a*a; 后,a的值是。 22.若自定义函数要求返回一个值,则应在该函数体中有一条语句,若自定义函数要求不返 回一个值,则应在该函数说明时加一个类型说明符 23.若x和n都是int型变量,且x的初值为12,n的初值为5,则计算表达式x%=(n%=2)后x的值 为。 24.设 int x=10, y, z; 执行y=z=x; x=y= =z;后,变量x的结果是。

C语言指针习题 附答案

一、选择题 1.变量的指针,其含义是指该变量的_________. a)值b)地址 c)名d)一个标志 2.若有语句int *point,a=4;和point=&a;下面均代表地址的一组选项是_____. a)a,point,*&a b)&*a,&a,*point c)*&point,*point,&a d)&a,&*point ,point 3.若有说明;int *p,m=5,n;以下正确的程序段的是________. 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输入数值的方法是错误的,其错误原因是________. 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); 下面函数的正确输出结果是________. void print_value(int *x) { printf(“%d\n”,++*x);} a)23 b)24 c)25 d)26 6.若有说明:long *p,a;则不能通过scanf语句正确给输入项读入数据的程序段是 A) *p=&a;scanf("%ld",p);

c语言指针部分题答案

#include int substring(char *s,char *t); int main() { char s[50]; char t[20]; int num; scanf("%s%s",s,t); num=substring(s,t); printf("%d\n",num); return 0; } int substring(char *s,char *t) { char *st=s; char *tt=t; int num=0; int offset=0; for(;*st!='\0';) { offset=0; for(;*tt!='\0';) { if(*st==*tt) { st++,tt++,offset++; } else break; } if(*tt=='\0') num++; else { st=st-offset+1; } tt=t; } return num; } #include void change(char *s); void insert(char *s);

int main() { char s[100]; scanf("%s",s); change(s); insert(s); printf("%s\n",s); return 0; } void change(char *s) { for(;*s!='\0';s++) { if(((*s)>'A'&&(*s)<='V')||((*s)>='a'&&(*s)<'v')) *s=(*s)+4; if(((*s)>='W'&&(*s)<='Z')||((*s)>='w'&&(*s)<='z')) *s=(*s)-22; } } void insert(char *s) { char temp[100]; int size=0,i; for(i=0;s[i]!='\0';i++) { temp[size]=s[i]; size++; temp[size]=' ',size++; } temp[size]='\0'; for(i=0;temp[i]!='\0';i++) s[i]=temp[i]; s[i]='\0'; } #include int replace(char *s); int main() { char s[50]; int num; scanf("%s",s);

C语言程序设计习题集(3)

指针 一单项选择题(每题2分,共40分) 1 以下叙述中错误的是_B__。 A 在程序中凡是以“#”开始的语句行都是预处理命令行 B 预处理命令行的最后不能以分号表示结束 C #define MAX是合法的宏定义命令行 D C程序对预处理命令行的处理是在程序执行的过程中进行的 2 若程序中有宏定义行:#define N 100 ,则以下叙述中正确的是__B_。 A 宏定义行中定义了标识符N的值为整数100 B 在编译程序对C源程序进行预处理时用100替换标识符N C 对C源程序进行编译时用100替换标识符N D 在运行时用100替换标识符 3 若有如下宏定义: #define N 2 #define y(n) ((N+1)*n) 则执行下列语句:z=4*(N+y(5));后的结果是_B__。 A 语句有错误 B z值为68 C z值为60 D z值为180 4 以下程序运行后的输出结果是_A__。 #define F(X,Y) (X)*(Y) main() { int a=3,b=4; printf("%d\n",F(a++,b++)); } A 12 B 15 C 16 D 20 5 以下程序运行后的输出结果是_C__。 #define f(x) (x*x) main()

{ int i1,i2; i1=f(8)/f(4); i2=f(4+4)/f(2+2); printf("%d,%d\n",i1,i2); } A 64,28 B 4,4 C 4,3 D 64,64 6 若已定义a为int型变量,则__D_是对指针变量p的正确说明和初始化。 A int p=&a; B int *p=a; C int *p=*a; D int *p=&a; 7 已知下列说明语句: static int a[]={2,4,6,8} static int *p[]={a,a+1,a+2,a+3}; int **q; q=p; 则表达式**(q+2)的值是_A__。 A 6 B 2 C 4 D 8 8 下面是一个初始化指针的语句:int *px=&a;,其中指针变量的名字应该__C_。 A *px B a C px D &a 9 若指针px为空指针,则_B__。。 A px指向不定 B px的值为零 C px的目标为零 D px的地址为零 10 对下语句int *px[10];,下面正确的说法是_B__。 A px是一个指针,指向一个数组,数组的元素是整数型。 B px是一个数组,其数组的每一个元素是指向整数的指针。 C A和B均错,但它是C语言的正确语句。 D C语言不允许这样的语句。 11 具有相同基类型的指针变量p和数组y,下列写法中不合法的是_D__。 A p=y B *p=y[i] C p=&y[i] D p=&y 12 已知static int a[]={5,4,3,2,1},*p[]={a+3,a+2,a+1,a},**q=p; , 则表达式 *(p[0]+1)+**(q+2) 的值是_A__。 A 5 B 4 C 6 D 7

计算机二级c语言第九章 数组和指针习题与答案

第九章数组和指针 1、有以下程序 main() { int a[]={2,4,6,8,10}, y=0, x, *p; p=&a[1]; for(x= 1; x< 3; x++) y += p[x]; printf("%d\n",y); } 程序运行后的输出结果是 A)10 B)11 C)14 D)15 2、有以下程序 void sum(int a[]) { a[0] = a[-1]+a[1]; } main() { int a[10]={1,2,3,4,5,6,7,8,9,10}; sum(&a[2]); printf("%d\n", a[2]); } 程序运行后的输出结果是 A)6 B)7 C)5 D)8 3、有以下程序 main() { int p[8]={11,12,13,14,15,16,17,18},i=0,j=0; while(i++< 7) if(p[i]%2) j+=p[i]; printf("%d\n",j); } 程序运行后的输出结果是 A)42 B)45 C)56 D)60 4、设有定义语句 int x[6]={2,4,6,8,5,7},*p=x,i; 要求依次输出x数组6个元素中的值,不能完成此操作的语句是 A)for(i=0;i<6;i++) printf("%2d",*(p++)); B)for(i=0;i<6;i++) printf("%2d",*(p+i)); C)for(i=0;i<6;i++) printf("%2d",*p++); D)for(i=0;i<6;i++) printf("%2d",(*p)++); 5、有以下程序 #include < stdio.h > main() { int a[]={1,2,3,4,5,6,7,8,9,10,11,12,},*p=a+5,*q=NULL; *q=*(p+5); printf("%d %d\n",*p,*q); } 程序运行后的输出结果是 A)运行后报错 B)6 6 C)6 11 D)5 10

C语言习题集合7(指针)

第七部分 指针 7.1 选择题 1. 若有说明:int a=2, *p=&a, *q=p;,则以下非法的赋值语句是()。 A . p=q; B . *p=*q; C . a=*q; D . q=a; 2. 若定义:int a=511, *b=&a ;,则printf("%d\n ", *b);的输出结果为: A . 无确定值 B . a 的地址 C . 512 D . 511 3. 已有定义 int a=2, *p1=&a, *p2=&a; 下面不能正确执行的赋值语句是()。 A . a=*p1+*p2; B . p1=a; C . p1=p2; D . a=*p1*(*p2); 4. 变量的指针,其含义是指该变量的()。 A . 值 B . 地址 C . 名 D . 一个标志 5. 若有说明语句:int a, b, c, *d=&c ;,则能正确从键盘读入三个整数分别赋给变量a 、b 、 c 的语句是()。 A . scanf("%d%d%d ", &a, &b, d); B . scanf("%d%d%d ", a, b, d); C . scanf("%d%d%d ", &a, &b, &d); D . scanf("%d%d%d ", a, b,*d); 6. 若已定义int a=5; 下面对(1)、(2)两个语句的正确解释是()。 (1) int *p=&a; (2) *p=a; A . 语句(1)和(2)中的*p 含义相同,都表示给指针变量p 赋值。 B . (1)和(2)语句的执行结果,都是把变量a 的地址值赋给指针变量p 。 C . (1)在对p 进行说明的同时进行初始化,使p 指向a ; (2)变量a 的值赋给指针变量p 。 D . (1)在对p 进行说明的同时进行初始化,使p 指向a ; (2)将变量a 的值赋予*p 。 7. 若有语句int *p, a=10; p=&a; 下面均代表地址的一组选项是()。 A . a, p, *&a B . &*a, &a, *p C . *&p, *p, &a D . &a, &*p, p 8. 若需要建立如图所示的存储结构,且已有说明double *p, x=0.2345; 则正确的赋值语句 是()。 A . p=x; B . p=&x; C . *p=x; D . *p=&x; 9. 若有说明:int *p, a=1, b; 以下正确的程序段是()。 A . p=&b; B . scanf("%d ", &b); scanf("%d ", &p); *p=b; C . p=&b; D . p=&b; scanf("%d ", *p); *p=a; 10.有如下语句:int m=6, n=9, *p, *q; p=&m; q=&n; 如图1所示,若要实现下图所示的存储 结构,可选用的赋值语句是()。 p x

c语言程序设计第五版习题答案解析

习题解析与答案 第1章C语言概述 一.简答题 1.概述C语言的主要特点。 【解答】 (1)语言简洁、紧凑,使用方便、灵活。 (2)数据类型丰富,表达能力强。 (3)运算符多样。C语言中的运算符包含的范围非常广泛。 (4)具有结构化的控制语句。如if…else语句、while语句、do while语句、switch 语句、for语句。 (5)允许直接访问物理地址。C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。 (6)所生成的目标代码质量高,可移植性好。 2.构成C语言程序的基本单位是什么?它由哪几部分组成? 【解答】函数是构成C语言程序的基本单位。一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。 3.C语言程序的运行一般要经过哪几个步骤? 【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。 二.运行程序写结果 1.输入下面程序并运行。 main() { int a1,a2,x; a1=100; a2=50; x=a1-a2; printf(″x=%d\n″,x); } 【解答】运行结果为:x=50 2.输入下面程序并运行。 main() { int a1,a2,x; a1=10; a2=20; x=a1*a2; printf(″a1=%d,a2=%d\n″,a1,a2); printf(″x=%d\n″,x); } 【解答】运行结果为:a1=10,a2=20 x=200 3.输入下面程序并运行。 #include

main() { printf("******\n"); printf(" *****\n"); printf(" ****\n"); printf(" ***\n"); printf(" **\n"); printf(" *\n"); } 【解答】运行结果为:****** ***** **** *** ** * 思考:可以修改程序,使之输出平行四边形,等腰三角形等图形。 三.编程题 1.参照本章例题,编写一个C程序,用于显示如下信息: ************************* I love C programs! ************************* 【分析与提示】 ①要有文件包含语句#include 。C语言中没有数据的输入、输出等功能,数据的输入、输出都是通过调用系统提供的库函数scanf和printf等来实现的。这些函数的说明都包括在stdio.h文件中。 ②main是主函数的名称。用{}括起来的内容是函数体,函数体由若干条语句组成,这是计算机要执行的部分,每条语句以分号“;”结束。 ③注意显示的信息有三行,所以要用到换行符“\n”。 参考代码: #include main() { printf("************************\n"); printf(" I love C programs! \n"); printf("************************\n"); } 第2章数据类型及其运算 一.简答题 1.C语言中的数据类型主要有哪几类? 【解答】短整型(short int ) 整型整型(int) 长整型(long int ) 基本类型字符型 (char) 单精度(float) 实型(浮点型) 双精度(double) 枚举类型(enum)

C语言复习题及答案

一.单项选择题 1.下列选项中,不是转义字符集中的符号是( C )。 A \\ B \’ C 074 D \0 2. 下列给出的符号串中,不属于C语言保留字的是( B )。 A switch B cher C case D else 3. 下列给出的符号串中,不能作为C语言标识符的是( C )。 A a_2 B _2a C a.3 D a_3 4. 下列属于C语言字符常量的是( C )。 A ‘abc’ B “\n” C ‘a’ D ‘a\0’ 5. 字符串”ABC”再内存占用的字节数为( B )。 A 3 B 4 C 6 D 8 6. 设有宏定义“#define R 2+3”,则R*R的宏替换结果正确的是( B )。 A (2+3)*(2+3) B 2+3*2+3 C 5*5 D 5.0*5.0 7. 设整形变量I的值为3,则表达式i---i的值为( A )。 A 0 B 1 C 2 D 3 8. 表达式“10!=9”的值为( D )。 A true B 非零值 C 0 D 1 9. 设有语句int a=3;则执行了语句a+=a-=a*a;后,变量a的值为( D )。 A 3 B 0 C 9 D -12 10. 下列选项中,正确的赋值表达式为( C )。 A a=7+b+c=a+7 B a=7+b++=a+7 C a=(7+b,b++,a+7) D a=7+b,c=a+7 11. 若有以下定义语句:char a;float c; double d; 则表达式a*b+d-c值的类 型为( D )。 A float B int

C char D double 12. 用十进制数表示表达式“12||012”的运算结果是( A )。 A 1 B 0 C 14 D 12 13. 下列一组运算符中,优先级别最高的运算符是( C )。 A <= B = C % D && 14. 设定“ char a=3,b=6,c;”,计算表达式c=(a^b)<<2后c的二进制值是 ( D )。 A 00011100 B 00000111 C 00000001 D 00010100 15. 设x,y,z,t 均为int类型,则执行下列语句串后,变量t的值为(C )。 X=y=z=0; If(x=y) t=z; Else t=!z; A 不定值 B 2 C 1 D 0 16. 设整形变量m1值为3,m2值为2,m3值为1,执行下列语句后,整形变量 m4值为( D )。 Switch(m1=m2==m3+1) { case1:m4=1;break; case2:m4=3;break; case3:m4=2;break; default:m4=4; } A 1 B 2 C 3 D 4 17. 设有数据定义语句“int a[200];”,下列数组元素引用中下标不越界的是 ( A )。 A a[-1] B a[0] C a[201] D a[200] 18. 若有以下数据定义语句,则数值为4的表达式是( A )。 int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; A a[‘g’-‘c’] B a[4]

C语言指针习题及答案

指针主要内容的习题及答案 ?选择题 1. 变量的指针,其含义是指该变量的 __B ____________ 。 A )值 B )地址 C )名 D )一个标志 2. 已有定义int k=2;int *ptr1,*ptr2; 且ptrl 和ptr2均已指向变量k ,下面不 能正确执行的赋值语句是 B 。 4.已有变量定义和函数调用语句:int a=25;print_value (&a ); 下面函数的输出 结果是 D __________________ void prin t_value(i nt *x) { printf( “ %d\n” ,++*x); } A) 23 B ) 24 C ) 25 D ) 26 5.若有说明:int *p1, *p2,m=5,n; 以下均是正确赋值语句的选项是 ____ C ____________ 。 A) p 仁&m; p2=&p1 ; B ) p 仁&m; p2=&n; *p1 =*p2 ; C ) p 仁&m; p2=p1 ; D ) p 仁&m; *p 仁*p2 ; 6. 若有语句:int *p,a=4;和p=&a ;下面均代表地址的一组选项是 ____________ D _________ 。 A) a,p,*&a B )&*a,&a,*p C ) *&p,*p ,&a D )&a,&*p,p 7. 下面判断正确的是__C _________________ 。 A) char *a= ” china ” ; 等价于 char *a; *a= ” china ” ; B) char str[1O]={“ china ” };等价于 char str[1O]; str[ ]={ “ china ” ;} C) char *s= ” china ” ; 等价于 char *s; s= ” china ” ; A) k=*ptr1+*ptr2 B ) ptr2=k C ) ptr1=ptr2 3.若有说明:int *p,m=5,n; A ) p=&n ; seanf( “ %d ,&p); C ) scanf( “ %d ,&n); *p=n ; 以下程序段正确的是 B scanf ( D *p = m ; D ) k=*ptr1*(*pt ⑵ D 。 )p = &n ; “%d ,*p); )p = &n ;

C语言程序设计指针作业

C语言程序设计指针作业 一、选择题 【习题1】变量的指针,其含义是指该变量的________ A)值B)地址 C)名D)一个标志 【习题2】若有语句int *point,a; 则point=&a;中运算符&的含义是_____ A)位与运算B)逻辑与运算 C)取指针内容D)取地址 【习题3】若x是整型变量,pb是整型的指针变量,则正确的赋值表达式是 A) pb=&x B) pb=x; C) *pb=&x; D) *pb=*x 【习题4】下面程序段的运行结果是_________ char *s="abcde"; s+=2; printf("%d",s); A)cde B)字符’c’C)字符’c’的地址D)无确定的输出结果【习题5】设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是______ A)c=*p1+*p2; B)p2=c C)p1=p2 D)c=*p1*(*p2); 【习题6】若有定义语句 char a[]="It is mine"; char *p="It is mine"; 则以下不正确的叙述是________. A)a+1表示的是字符t的地址 B)p指向另外的字符串时,字符串的长度不受限制 C)p变量中存放的地址值可以改变 D)a中只能存放10个字符 【习题7】若有定义:int a[2][3],则对a数组的第i行j列元素地址的正确引用为___ A)*(a[i]+j) B)(a+i) C)*(a+j) D)a[i]+j 【习题8】设有如下定义:int (*ptr)( ); 则以下叙述中正确的是: A)ptr是指向一维组数的指针变量 B)ptr是指向int型数据的指针变量 C)ptr是指向函数的指针,该函数返回一个int型数据 D)ptr是一个函数名,该函数的返回值是指向int型数据的指针 【习题9】设有定义int (*ptr)[m];其中的标识符ptr是 A)m个指向整型变量的指针 B)指向m个整型变量的函数指针 C)一个指向具有m个整型元素的一维数组的指针 D)具有m个指针元素的一维指针数组,每个元素都只能指向整型量 【习题10】若要用下面的程序片段使指针变量p指向一个存储整型变量的动态

C语言指针习题及答案

指针主要内容的习题及答案?选择题 1.变量的指针,其含义是指该变量的A)值B)地址B 。 D )一个标志C)名 2.已有定义int k=2;int *ptr1,*ptr2; 且ptrl 和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 ; seanf( %d”,&p);seanf( %d”,*p); C) seanf( %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) 23 B) 24 C) 25 D) 26 5. 若有说明:int *p1, *p2,m=5,n; 以下均是正确赋值语句的选项是____ C _______ 。 A) p仁&m; p2=&p1 ; B) p仁&m; p2=&n; *p1 =*p2 ; C) p仁&m; p2=p1 ; D) p仁&m; *卩仁*p2 ; 6. 若有语句:int *p,a=4;和p=&a;下面均代表地址的一组选项是__________ D _____ 。 A) a,p,*&a B)&*a,&a,*p C)*&p,*p,&a D)&a,&*p,p 7. 下面判断正确的是__C __________ 。 A) char *a=”ch in a”;等价于char *a; *a=”ch in a”; B) char str[1O]={ china”};等价于char str[1O]; str[ ]={ china”;} C) char *s=”china”;等价于char *s; s=”china” ; D) char c[4]=”abc',d[4]= ”abc”;等价于char c[4]=d[4]= ”abc ;

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

一、用指针方法编写一个程序,输入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 "stdio.h" #include "string.h" 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; } 9.4编程输入一行文字,找出其中的大写字母,小写字母,空格,数字,及 其他字符的个数 #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); }

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)26 5、若有说明: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,p 7、下面判断正确的就是 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、下面程序段中,for循环的执行次数就是 C 。 char *s=”\ta\018bc” ; for ( ; *s!=’\0’ ; s++) printf(“*”) ; A)9 B)7 C)6 D)5 9、下面能正确进行字符串赋值操作的就是 C 。 A)char s[5]={“ABCDE”}; B)char s[5]={‘A’,’B’,’C’,’D’,’E’}; C)char *s ; s=”ABCDE” ; D)char *s; scanf(“%s”,s) ; 10、下面程序段的运行结果就是 C 。 char *s=”abcde” ; s+=2 ; printf(“%d”,s); A)cde B)字符’c’C)字符’c’的地址D)不确定 11、设p1与p2就是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句就是 B 。 A)c=*p1+*p2 B)p2=c C)p1=p2 D)c=*p1*(*p2) 12、设有程序段:char s[ ]=”china”; char *p ; p=s ;则下面叙述正确的就是 D 。 A)s与p完全相同 B)数组s中的内容与指针变量p中的内容相等

C语言指针经典练习题-及答案

C语言指针练习题及答案 一、选择题 1. 变量的指针,其含义是指该变量的____. a)值b)地址 c)名d)一个标志 2.若有语句int *point,a=4;和point=&a;下面均代表地址的一组选项是__ _. a)a,point,*&a b)&*a,&a,*point c)*&point,*point,&a d)&a,&*point ,point 3.若有说明;int *p,m=5,n;以下正确的程序段的是________. 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输入数值的方法是错误的,其错误原因是__ _____. 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); 下面函数的正确输出结果是______. void print_value(int *x) { printf(“%d\n”,++*x);} a)23 b)24 c)25 d)26 6.若有说明:long *p,a;则不能通过scanf语句正确给输入项读入数据的程序段是 A) *p=&a;scanf("%ld",p); B) p=(long *)malloc(8);scanf("%ld",p); C) scanf("%ld",p=&a); D) scanf("%ld",&a); 7.有以下程序 #include 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); }程序运行后的输出结果是

相关文档
相关文档 最新文档