第8章 指针 下载本文

内容发布更新时间 : 2024/6/4 1:12:35星期一 下面是文章的全部内容请认真阅读。

第8章 指针

1. 单项选择题

(1)指针 pstr所指字符串的长度为D。char *pstr=\A.15 B.14 C.13 D.12

(2)若有定义int a[4][6];则能正确表示a数组中任一元素a[i][j](i,j均在有效范围内)地址的表达式A。 A.&a[0][0]+6*i+j B.&a[0][0]+4*j+i C.&a[0][0]+4*i+j D.&a[0][0]+6*j+i (3)以下程序段的输出结果为D。 char astr[5]=\ char *pstr=astr;

printf(\

A.1 B. 2 C. ASCII码值为 1 的字符 D. ASCII 码值为 2 的字符 (4)下述程序段的输出结果为D。 char astr[]=\ char *pstr=&astr[5]; while(--pstr>=astr) putchar(*pstr); putchar('\\n');

A. abc B. cba C. abcde D. edcba (5)若有定义 int a=1,*b,c;,以下不正确的是 A 。 A. b=a B. b=&a C. b=&a,c=*b D. c=a (6)以下程序段的运行结果为 C 。

intnum[]={1,2,3,4,5,6,7,8,9},*pnum=&num[2]; pnum++; ++pnum;

printf(\

A. 3 B. 4 C. 5 D. 6 (7)以下程序段的运行结果为 B 。 char *pstr=\int n=0;

1

while(*pstr++!='\\0') n++;

printf(\

A. 12 B. 14 C. 16 D. 不确定 (8)以下程序段的运行结果为 B 。 int num[9]={1,2,3,4,5,6,7,8,9},*p; p=num; *(p+1)=0;

printf(\

A. 2,0,1 B. 1,0,1 C. 2,2,2 D. 1,1,1 (9)以下程序段的运行结果为 C 。 int a=5,*p=&a,b,*q; a=10; *p=15; q=p; *q=20; b=*q; p=&b;

printf(\

A. a=5,b=10,*p=15,*q=20 B. a=20,b=15,*p=10,*q=5 C. a=20,b=20,*p=20,*q=20 D. a=15,b=15,*p=15,*q=15 (10)下面程序的运行结果是 B 。 intmain ( ) {

int x[5]={2,4,6,8,10}, *p, **pp ;

p=x , pp = &p ; printf(“%d”,*(p++)); printf(“=”,**pp); return 0; }

A)4 4 B)2 4 C)2 2 D)4 6

2

(11)若有定义int x[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}; int (*p)[3]=x ; 则能够正确表示数组元素x[1][2]的表达式是 D 。 A.*((*p+1)[2]) B. (*p+1)+2 C.*(*(p+5)) D. *(*(p+1)+2) (12)若有说明:

char *language[]={“FORTRAN”,”BASIC”,”PASCAL”,”JAVA”,”C”};则language[2]的值是 B 。

A. 一个字符 B. 一个地址 C. 一个字符串 D. 一个不定值

(13)设有定义:char *cc[2]={“1234”,”5678”};则正确的叙述是 A 。 A. cc数组的两个元素中各自存放了字符串”1234”和”5678”的首地址 B. cc数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址 C. cc是指针变量,它指向含有两个数组元素的字符型一维数组

D. cc数组元素的值分别维”1234”和”5678” 2. 编程题(要求用指针实现)

(1)编写一个函数,实现从键盘上输入 3 个整数,按从大到小的顺序输出。 voidsort(int *x,int *y,int *z) {

int t; if(*x<*y)

{t=*x;*x=*y;*y=t;} if(*x<*z)

{t=*x;*x=*z;*z=t;} if(*y<*z)

{t=*y;*y=*z;*z=t;} }

(2)编写一个函数,实现输入一串字符,统计它的字符总数和其中大写字母的个数(不用字符串函数)。

void count(int *n,int *c1,int *c2) {

inti=0,j=0,k=0,c; c=getchar(); while(c!='\\n')

3

{

i++; if(c>='a'&&c<='z') j++; if(c>='A'&&c<='Z') k++; c=getchar(); }

*n=i;*c1=j;*c2=k; }

int main() {

inta,b,c;

count(&a,&b,&c);

printf(\return 0; }

4