好文档 - 专业文书写作范文服务资料分享网站

C语言第七章习题带答案

天下 分享 时间: 加入收藏 我要投稿 点赞

练习7-1答案选择题

1.已知:int *p, a;,则语句“p=&a;”中的运算符“&”的含义是( D )。 A.位与运算 B.逻辑与运算 C.取指针内容 D.取变量地址 2.已知:int a, x;,则正确的赋值语句是( C )。

A.a=(a[1]+a[2])/2; B.a*=*a+1; C.a=(x=1, x++, x+2); D.a=\3.已知:int a, *p=&a;,则下列函数调用中错误的是( D )。

A.scanf(\.scanf(\C.printf(\D.scanf(\4.已知:char *p, *q;,选择正确的语句( C )。 A.p*=3; B.p/=q; C.p+=3; D.p+=q; 5.已知:int x;,则下面的说明指针变量pb的语句( C )是正确的。 A.int pb=&x; B.int *pb=x; C.int *pb=&x; D.*pb=*x;

练习7-2答案

一、选择题

1.设有说明int (*ptr)[M];,其中的标识符ptr是( C )。 A.M个指向整型变量的指针

B.指向M个整型变量的函数指针

C.一个指向具有M列的二维数组的一行的指针 D.具有M个指针元素的一维数组的指针 2.已知:double *p[6];,它的含义是( C )。 A.p是指向double型变量的指针 B.p是double型数组 C.p是指针数组 D.p是数组指针

3.已知:char s[10], *p=s,则在下列语句中,错误的语句是( B )。 A.p=s+5; B.s=p+s; C.s[2]=p[4]; D.*p=s[0]; 4.已知:char s[100]; int i;,则在下列引用数组元素的语句中,错误的表示形式是( D )。 A.s[i+10] B.*(s+i) C.*(i+s) D.*((s++)+i) 5.已知:char b[5], *p=b;,则正确的赋值语句是( C )。 A.b=\ B.*b=\ C.p=\ D.*p=\6.下列对字符串的定义中,错误的是( A )。 A.char str[7]=\ B.char str[]=\C.char *str=\ D.char str[]={'F', 'O', 'R', 'T', 'R','A','N',0}; 7.已知:char s[20]=\,则不能引用字母o的表达式是( A )。 A.ps+2 B.s[2] C.ps[2] D.ps+=2,*ps 8.已知:char **s;,正确的语句是( B )。

A.s=\B.*s=\C.**s=\.*s='A';

9.已知:char c[8]=\,则下面的输出语句中,错误的是( B )。 A.printf(\ B.printf(\C.for (i=0; i<7; i++) D.for(i=0; i<7; i++) printf(\ printf(\10.已知:char *aa[2]={\,则以下说法正确的是( D )。

A.aa数组元素的值分别是\序列和\序列

B.aa是指针变量,它指向含有两个数组元素的字符型一维数组

C.aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址 D.aa数组的两个元素中各自存放了字符'a'和'A'的地址

11.已知:int a[3][4], *p=&a[0][0]; p+=6;,那么*p和( D )的值相同。

A.*(a+6) B.*(&a[0]+6) C.*a[1]+2 D.a[1][2] 12.已知:int a[]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, *p=a;,则值为3的表达式是( A )。

A.p+=2, *(p++) B.p+=2, *++p C.p+=3, *p++ D.*(&a[0][0]+6) 13.已知:int **p;,则变量p是( B )。

A.指向int的指针 B.指向指针的指针 C.int型变量 D.以上三种说法均是错误的

14.已知:int a[]={1, 2, 3, 4}, y, *p=&a[1];,则执行语句y=(*--p)++;之后,变量y的

值为( A )。

A.1 B.2 C.3 D.4 15.已知:int b[]={1, 2, 3, 4}, y, *p=b;,则执行语句y=*p++;之后,变量y的值为( A )。

A.1 B.2 C.3 D.4 16.已知:int x[]={1, 3, 5, 7, 9, 11}, *ptr=x;,则能够正确引用数组元素的表达式是( B )。

A.x B.*(ptr--) C.x[6] D.*(--ptr)

17.已知:int x[]={1, 3, 5, 7, 9, 11}, *ptr=x;,则不能够正确引用数组元素的表达式是

( B )。

A.*(ptr--) B.*(--ptr) C.*(ptr++) D.*(++ptr) 18.若有以下语句且0<=k<6,则正确表示数组元素地址的表达式是( C )。

static int x[]={1, 3, 5, 7, 9, 11}, *ptr=x, k; A.x++ B.&ptr C.&ptr[k] D.&(x+1) 19.已知:int i, x[3][4];,则不能将x[1][1]的值赋给变量i的语句是( C )。

A.i=*(*(x+1)+1); B.i=x[1][1]; C.i=*(*(x+1)); D.i=*(x[1]+1); 20.已知:int a[2][3]={2, 4, 6, 8, 10, 12};,正确表示数组元素的地址是( A )。

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

21.已知:int*p;,使用如下语句动态申请一个int型的存储单元,应当使用( D )。

p=( )malloc(sizeof(int)); A.int B.int * C.(* int) D.(int *) 二、填空题

22.阅读程序,下面程序的输出结果是( 15 )。

#include main()

{ static int a[2][3]={{1, 2, 3}, {4, 5, 6}}; int m, *ptr; ptr=&a[0][0];

m=(*ptr)*(*(ptr+2))*(*(ptr+4)); printf(\}

23.下面程序的功能是:从键盘上输入一行字符,存入一个字符数组中,然后输出

该字符串.则①是( '\\0' 或 0 )、②是( ++ )。 main()

{ char str[81], *sptr; int i;

for (i=0; i<80; i++) { str[i]=getchar();

if (str[i]=='\\n') break; }

str[i]= ① ; sptr=str;

while (*sptr) putchar(*sptr ② ); }

24.在下面的程序中若第一个printf语句的输出为ffe2,则其余语句的输出结果分别

为:①是( fff4 )、②是( a )、③是( 0 )、④是( b )。 main()

{ static int a[]={1, 2, 3, 4, 5, 6, 7, 8, 9, 0}, *p=a; printf(\ /*输出结果为ffe2*/ printf(\ /*输出 ① */ printf(\ /*输出 ② */ printf(\ /*输出 ③ */ printf(\ /*输出 ④ */ } 25.下面程序的输出结果,①是( m )、②是( a )、③是( w )、④是( z )、⑤是( mnopqr )。

#include

char *pp[2][3]={\main()

{ printf(\ /*输出 ① */ printf(\ /*输出 ② */ printf(\/*输出 ③ */ printf(\ /*输出 ④ */ printf(\ /*输出 ⑤ */ }

三、读程序,写结果

26.下面程序的运行结果是:

( □□□1□□□3□□□5□□□7 □□□9□□11□□13□□15

□□17□□19□□21□□23 )。(注:□表示空格。) #include main()

{ int a[3][4]={1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23}; int *p, i;

for (p=a, i=0; p<&a[0][0]+12; p++, i++) { if (i%4==0) printf(\ printf(\ } }

27.下面程序的运行结果是( 3,3,3 )。

#include main()

{ int a=2, *p, **pp; pp=&p; p=&a; a++;

printf(\

练习7-3答案

一、选择题

1.main(argc, argv)中形式参数argv的正确说明形式应当为( A ). A.char *argv[] B.char argv[][] C.char argv[] D.char *argv 2.说明语句int (*p)();的含义是( C )。 A.p是一个指向一维数组的指针变量 B.p是指针变量,指向一个整型数据

C.p是一个指向函数的指针,该函数的返回值是一个整型 D.以上都不对

3.说明语句int *(*p)();的含义是( D )。 A.p是一个指向int型数据的指针 B.p是指针变量,它构成了指针数组

C.p是一个指向函数的指针,该函数的返回值是一个整型

D.p是一个指向函数的指针,该函数的返回值是一个指向整型的指针 4.已知函数说明语句void *f();,则它的含义是( A )。 A.函数f的返回值是一个通用型指针 B.函数f的返回值可以是任意的数据类型 C.函数f无返回值

D.指针f指向一个函数,该函数无返回值

5.函数的功能是交换变量x和y中的值,并且通过正确调用返回交换的结果。能正确执行此功能的函数是( D )。 A.funa(int *x, int *y) B.funb(int x, int y) { int *p; {int t; *p=x; *x=*y; *y=*p; t=x; x=y; y=t; } } C.func(int *x, int *y) D.fund(int *x, int *y) { *x=*y; *y=*x; {*x=*x+*y; *y=*x-*y; *x=*x-*y; } } 6.阅读程序,下面程序的输出结果是( B )。 假设可执行文件的文件名为:PROG.EXE

运行时键入的命令行为:PROG -386 NET3<回车> #include

main(int argc, char *argv[]) {int i;

for (i=0; i

A.-386 B.PROG.EXE C.PROG.EXE D.PROG NET3 -386 - -386 NET3 386 NET3 NET3 7.下面程序的运行结果是( A )。

C语言第七章习题带答案

练习7-1答案选择题1.已知:int*p,a;,则语句“p=&a;”中的运算符“&”的含义是(D)。A.位与运算B.逻辑与运算C.取指针内容D.取变量地址2.已知:inta,x;,则正确的赋值语句是(C)。A.a=(a[1]+a[2])/2;B.a*=*a+1;C.a=(x=1,x++,x+2);D.a=\3.已知:i
推荐度:
点击下载文档文档为doc格式
6u15781qgm0n19a8hrgx9da6a52gje00h4k
领取福利

微信扫码领取福利

微信扫码分享