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

第八章 习题及答案

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

第八章 习题

一、选择题

1、若x为整型变量,p是指向整型数据的指针变量,则正确的赋值表达式是( )。

A)p=&x B)p=x C)*p=&x D)*p=*x

2、已知:int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则不能表示数组a中元素的表达式是 ( )。

A)*p B)a[10] C)*a D)a[p-a]

3、已知:int a[3][4],*p=a;则p表示 ( )。 A) 数组a的0行0列元素 B) 数组a的0行0的地址 C) 数组a的0行首地址 D) 以上均不对

4、设有说明int (*ptr)[M];其中的标识符ptr是 ( )。 A) M个指向整型变量的指针 B) 指向M个整型变量的函数指针

C) 一个指向M个整型元素的一维数组的指针

D) 具有M个指针元素的一维指针数组,每个元素都只能指向整型变量

5、已知:char str[]=\对指针变量ps的说明和初始化是( )。 A) char ps=str; B) char *ps=str; C) char ps=&str; D) char *ps=&str;

6、 若有以下调用语句,则不正确的fun函数的首部是( )。 A) void fun(int m, int x[]) B) void fun(int s, int h[41]) C) void fun(int p, int *s) D) void fun(int n, int a) main()

{ …

int a[50],n; …

fun(n, &a[9]); …

}

7、 有以下程序

void fun(char *a, char *b) { a=b; (*a)++; } main ()

{ char c1=\p1=&c1; p2=&c2; fun(p1,p2);

printf(“&c&c\\n”,c1,c2); }

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

B) aa C) Aa D) Bb

8、 下列程序段的输出结果是( ) 。

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

void fun(int *x, int *y)

{ printf(“%d , %d”, *x, *y); *x=3; *y=4;} main()

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

printf(“%d %d”,x, y); }

9、 有如下说明

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

则数值为9的表达式是( )。

A) *P+9 B) *(P+8) C) *P+=9 D) P+8 10、有以下程序

main()

{ int x[8]={8,7,6,5,0,0},*s; s=x+3

printf(\

}

执行后输出结果是( ) 。 A) 随机值

B) 0 C) 5 D) 6

11、 有如下程序

main()

{ char s[]=”ABCD”, *P;

for(p=s+l; p

该程序的输出结果是( ) 。

A) ABCD B) A C) B D) BCD

BCD B C CD CD C D D D D 12、 已定义以下函数

fun(char *p2, char *p1)

{ while((*p2=*p1)!=‘\\0’){p1++;p2++; } }

函数的功能是( )。

A) 将p1所指字符串复制到p2所指内存空间 B) 将p1 所指字符串的地址赋给指针 p2 C) 对p1和p2两个指针所指字符串进行比较 D) 检查p1和p2两个指针所指字符串中是否有‘\\0’ 13、有以下程序

main()

{ char *s[]={\ }

p=s[1];

printf(\

执行后输出结果是( )。 A) n,two

B) t,one

C)w,one

D) o,two

14、 若有以下定义和语句: int s[4][5],(*ps)[5]; ps=s;

则对s数组元素的正确引用形式是( )。 A) ps+1 15、有以下程序段

main()

{ int a=5, *b, **c; c=&b; b=&a; …… }

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

程序在执行了c=&b:b=&a;语句后,表达式:**c的值是( )。 A) 变量a的地址 B) 变量b中的值 C) 变量a中的值 D) 变量b的地址

二、填空题

1、要使指针变量与变量之间建立联系,可以用运算符 (1) 来定义一个指针变量,用运算符 (2) 来建立指针变量与变量之间的联系。

2、已知:int a[2][3]={1,2,3,4,5,6},*p=&a[0][0];则表示元素a[0][0]的方法有指针法: (1) ,数组名法: (2) 。*(p+1)的值为 (3) 。

3、以下程序的输出结果是 。

main()

{ int arr[ ]={30,25,20,15,10,5}, *p=arr; p++;

printf(“%d\\n”,*(p+3)); }

4、 以下程序调用findmax函数返回数组中的最大值。

findmax(int *a,int n) { int *p,*s; for(p=a,s=a;p-a

{ int x[5]={12,21,13,6,18}; printf(\}

5、 以下程序的功能是:将无符号八进制数字构成的字符串转换为十进制整数。例如,输入的字符串为:556,则输出十进制整数366。请填空。

#include

main()

{ char *p, s[6]; int n; p=s; gets(p); n=*p-'0';

while(______!='\\0') n=n*8+*p-'0'; printf(\ }

三、编程题

1.编程实现从键盘输入一个字符串,将其字符顺序颠倒后重新存放,并输出这个字符串。

2.从键盘任意输入10个整数,用函数编程实现计算最大值和最小值,并返回它们所在数组中的位置。

3.将5个字符串从小到大排序后输出。

4.编写一个能对任意m×n阶矩阵进行转置运算的函数Transpose()。

第八章 习题答案

一、选择题

1-5 A B C C B 6-10 D A C B B 11-15 D A C C C

二、填空题

1. (1)* (2) &

2. (1) *p (2) **a (3) 2 3. 10 4. *p>*s 5. *(++p)

三、编程题

1. 编程实现从键盘输入一个字符串,将其字符顺序颠倒后重新存放,并输出

这个字符串。

#include #include void Inverse(char *pStr); main() { }

/*函数功能: 实现字符串逆序存放

函数参数: 字符指针变量,所指向的存储单元存放源字符串,逆序后的字符串也存放于此 返回值: 无*/

void Inverse(char *pStr) {

int len; char temp; char *pStart; char *pEnd;

/*指针变量pStart指向字符串的第一个字符*/ /*指针变量pEnd指向字符串的最后一个字符*/ /*求出字符串长度*/

char str[80];

printf(\gets(str);

/*输入字符串*/

/*将存于str数组中的字符串逆序存放*/ /*输出字符串*/

Inverse(str); puts(str);

printf(\

len = strlen(pStr);

第八章 习题及答案

第八章习题一、选择题1、若x为整型变量,p是指向整型数据的指针变量,则正确的赋值表达式是()。A)p=&xB)p=xC)*p=&xD)*p=*x2、已知:inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则不能表示数组a中元素
推荐度:
点击下载文档文档为doc格式
5h1ud3ip5g6x2111f20r4n7xz5ee5l00bh5
领取福利

微信扫码领取福利

微信扫码分享