C语言习题集合(指针)

第七章 指 针 ·9·

C. abc+abc=defdef D. abcabcdefdef 39.以下程序的输出结果是(D)。

#include \stdio.h\ #include \string.h\ main()

{

char b1[8]=\abcdefg\, b2[8], *pb=b1+3; while( --pb>=b1) strcpy(b2, pb); printf(\%d\\n\, strlen(b2));

}

A. 8 B. 3 C. 1 D. 7 40.有以下程序

#include \string.h\ #include \stdio.h\

main() {

char *p=\abcde\\0fghjik\\0\; printf(\%d\\n\, strlen(p));

}

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

A. 12 B. 15 C. 6 D. 5 41.有以下程序

void ss( char *s, char t) {

while (*s)

{ if (*s==t) *s=t-'a'+'A'; s++; } }

main()

{

char str[100]=\abcddfefdbd\, c='d'; ss(str, c);

printf(\%s\\n\, str1);

}

程序运行后的输出结果是(B)。 A.ABCDDEFEDBD B. abcDDfefDbD C. abcAAfefAbA D. Abcddfefdbd 42.以下程序调用findmax函数返回数组中的最大值。在下面划线处应填入的是(B)。 #include \stdio.h\

findmax( int *a, int n) {

int *p, *s;

for (p=a, s=a; p-a

第七章 指 针 ·10·

return (*s);

}

main() {

int x[5]={12,21,13,6,18}; printf(\%d\\n\, findmax(x,5));

}

A. p>s B. *p>*s C. a[p]>a[s] D. p-a>p-s 43.有以下程序

#include \stdio.h\ #include \malloc.h\ main() {

char *q, *p;

p=(char*) malloc (sizeof(char) *20); /*为指针p分配一个地址*/ q=p;

scanf(\%s%s\, p, q); printf(\%s %s\\n\, p, q);

}

若从键盘输入:abc def↙,则输出结果是:A

A. def def B. abc def C. abc d D. d d 44.下面程序的运行结果是(D)。 #include \stdio.h\ #include \string.h\ fun( char *s)

{

char t[10]; s=t;

strcpy(t, \example\); } main()

{

char *s; fun(s); puts(s);

}

A.example└┘└┘└┘ B.example└┘└┘ C.example D.不确定的值 45.下列程序段的输出结果是(A)。

#include \stdio.h\

void fun( int *x, int *y) {

printf(\%d%d\, *x, *y);

*x=3; *y=4;

第七章 指 针 ·11·

}

main() {

int x=1, y=2; fun(&y, &x);

printf(\%d %d\, x, y);

}

A. 2 1 4 3 B. 1 2 1 2 C. 1 2 3 4 D. 2 1 1 2 46.下列程序的输出结果是(C)。

#include \stdio.h\ main()

{

char a[10]={9,8,7,6,5,4,3,2,1,0}, *p=a+5; printf(\%d\, *--p);

}

A. 非法 B. a[4]的地址 C. 5 D. 3 47.有以下程序

#include \stdio.h\ #include \string.h\ main(int argc, char *argv[]) {

int m, length=0;

for (m=1;m

}

程序编译连接后生成的可执行文件是file.exe,若执行时输入带参数的命令行是: file 1234 567 89↙

则运行结果是(D)。

A. 22 B. 17 C. 12 D. 9 48.有以下函数:

char *fun(char *s) { …

return s; }

该函数的返回值是(B)。

A. 无确定值 B. 形参s中存放的地址值 C. 一个临时存储单元的地址 D. 形参s自身的地址值

49.假定下列程序的可执行文件名为file.exe,则在该程序所在的子目录下输入命令行: file girl boy↙

后,程序的输出结果是(B)。 #include \stdio.h\ main(int argc, char *argv[]) { int m;

第七章 指 针 ·12·

if (argc<=0) return; for (m=1; m

}

A. girl boy B. gb C. gir D. girlboy 50.设有一个名为file的C源程序,且已知命令行为:file girl boy student,则可得到

以下运行结果的C源程序为(B)。 girl boy student

A. main( int argc, char *argv[])

{

while (--argc>1)

printf(\%s%c\, *argv, (argc>1)? '\\n':' ');

}

B. main( int a, char * b[])

{

while (a-->1)

printf(\%s\\n\, *++b);

}

C. main( int argc, char *argv[])

{

while (++argc>0)

printf(\%s%c\, *++argv, (argc>1) ? ' ' :'\\n'); }

D. main(int argc, char *argv[])

{

while (argc>1)

printf(\%s\, *++argv);

}

7.2 填空题

1. 设有定义:int a, *p=&a; 以下语句将利用指针变量p读写变量a中的内容,请将语句补

充完整。

scanf(\%d\, 【p】 ); printf(\%d\\n\, 【*p】 ); 2. 请填空:

W p

c

建立如图所示存储结构所需的说明语句是【n=&c】。

建立如图所示给c输入数据的输入语句是【sacnf(“%d”,n)】。 建立如图所示存储结构所需的赋值语句是【*n=w】。

联系客服:779662525#qq.com(#替换为@)