C语言指针练习题 下载本文

内容发布更新时间 : 2024/5/18 0:02:10星期一 下面是文章的全部内容请认真阅读。

指针练习题

1 填空题

【1】下面函数要求用来求出两个整数之和,并通过形参传回两数相加之和值,请填空。

int add( int x, int y, ) { =x+y;} 【2】若有定义: char ch;

(1) 使指针p 可以指向变量ch的定义语句是 。 (2) 使指针p指向变量ch的赋值语句是 。

(3) 通过指针p给变量ch读入字符的scanf函数调用语句是 。 (4) 通过指针p 给变量ch赋字符A的语句是 。 (5) 通过指针p输出ch中字符的语句是 。

(6) 在16位微机上,指针变量p在内存中所占字节数是 ,变量ch在内在所占字节数是 。

2 选择题

【3】若有说明:int i,j=7,*p=&i;则与i=j;等价的语句是( )。

A.i=*p; B.*p=*&j; C.i=&j; D.i=**p; 【4】若有定义:int x,*pb;则正确的赋值表达式是( )。

A.pb=&x B.pb=x C. *pb=&x D.*pb=*x 【5】对于类型相同的指针变量,不能进行的运算是( )。

A.< B. = C. + D. – 【6】以下程序的输出结果是( )。

A.23 B. 24 C. 25 D. 26 Void fun ( int *x)

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

{ int a=25; fun (&a); }

【7】以下程序的输出结果是( )。

A.6 B. 7 C. 8 D. 9 main() { int k=2,m=4,n=6; int *pk=&k,*pm=&m,*p; *(p=&n)=*pk*(*pm); printf(\}

【8】以下程序的输出结果是( )。

A.100 B. 50 C. 101 D.200 main() {

int *v,b;

v=&b; b=100; *v+=b;

printf(\}

【9】以下程序的输出结果是( )。

A.2,3 B. 6,2 C. 3,2 D. 2,6 int ast(int x,int y,int *cp,int *dp) {

*cp=x*y; *dp=x%y; }

main() {

int a,b,c,d; a=2;b=3;

ast(a,b,&c,&d);

printf(\}

【10】以下程序的输出结果是( )。

A.1,3 B. 2,3 C. 1,6 D.2,6 main() {

int a[]={1,2,3,4,5,6},*p; p=a;

*(p+3)+=2;

printf(\}

3 改错题 【11】main( )

{ int a=1,b=2;

printf(“a=%d b=%d\\n”,a,b); swap(a,b);

printf(“a=%d b=%d\\n”,*a,*b); }

swap ( int *p1, int *p2) {

int *p;

*p=*p1; *p1=*p2;*p2=*p; }

【12】void add (int a,int b,int c)

{ c=a+b;

return c; }

main( )

{ int *ap,*bp,a,b,c; ap=&a,bp=&b;

scanf(“%d %d”,&ap,&bp); add(ap,bp,c); printf(\}

4 读程序写结果 【13】main() {

static int a[ ][3]={{1,2,3},{4,5},{6}}; int i,*p=a[0]; int (*q)[3]=a; for(i=0;i<3;i++)

printf(\ printf(\ for(i=0;i<3;i++)

printf(\ printf(\}

【14】main() {

int a=10,b=20; void test( );

printf(\ test(a,&b);

printf(\}

void test(int x,int *y) {

int t;

t=x;x=*y;*y=t; }

【15】#define PRINTA printf(\#define PRINTB printf(\void swap(int *p,int *q) {

int t;

t=*p;*p=*q;*q=t; }

main( )

{

int a=1,b=2,*pa=&a,*pb=&b; PRINTA PRINTB

swap(pa,pb); PRINTA PRINTB }

【16】main() {

int a[]={1,2,3,4,5,6,7,8,9}; int *p=a,i,t;

for(i=0;i<9/2;i++) {

t=*(p+i);

*(p+i)=*(p+8-i); *(p+8-i)=t*10; }

for(i=0;i<9;++i) printf(\}

【17】#include \sub1(char *a,char b)

{char c;c=*a;*a=b;b=c;} sub2(char a,char b)

{char c;c=a;a=b;b=c;} sub3(char *a,char *b)

{char c;c=*a;*a=*b;*b=c;} main() {

char a,b;

a='A';b='B';sub3(&a,&b);putchar(a);putchar(b); a='A';b='B';sub2(a,b);putchar(a);putchar(b); a='A';b='B';sub1(&a,b);putchar(a);putchar(b); }

【18】void exc(int *i,int *j) {

int k;

k=*i;*i=*j;*j=k; }

void opr(int x,int y,int *z) {

exc(&x,&y);*z=x%y; }

main() {

int a=89,b=10,*c; c=&a;

opr(a,b,c);

printf(\}

【19】main() {

int **k,*a,b=100; a=&b;k=&a;

printf(\}

【20】fun1(int x,int y,int *cp,int *dp) {

*cp=x+y;*dp=x-y; }

fun2(int *a,int b) {

int c;

c=*a;*a=b;b=c; }

main() {

int a,b,c,d; a=30;b=50;

fun1(a,b,&c,&d); fun2(&c,d);

printf(\}

【21】void sub(int x,int y,int *z) {*z=y-x;} main() {

int a,b,c; sub(20,15,&a); sub(a,9,&b); sub(a,b,&c);

printf(\}

【22】fun(int *a,int *b) {

int w; *a=*a+*a;