c语言习题汇总(6-10章)(3)

2019-05-24 17:29

·106· 第7章 数组

习 题 (第八章)

1. 选择题

(1) 下列不正确的定义是( )。

A. int *p=&i, i; B. int *p, i; C. int i, *p=&i; D. int t, *p; (2) 下列语句定义p为指向float类型变量d的指针,其中正确的是( )。 A. float d,*p=d; B. float d,*p=&d; C. float *p=&d,d; D. float d,p=d; (3) 对语句 “int a[10],*p=a;”,下列表述中正确的是( )。

A. *p被赋初值为a数组的首地址 C. p被赋初值为数组元素a[1]的地址

B. *p被赋初值为数组元素a[0]的地址 D. p被赋初值为数组元素a[0]的地址

D.

(4) 假如指针p已经指向变量x,则&*p相当于( )。

A. x B. *p C. &x **p

(5) 假如指针p已经指向某个整型变量x,则(*p)++相当于( )。

A. p++ B. x++ C. *(p++) D. &x++

(6) 设指针x指向的整型变量值为25,则printf(\的输出是( )。

A. 23

B. 24

C. 25

D.

26

(7) 若有说明语句int a[ ]={1,2,3,4,5}, *p=a, i; 且0<=i<5, 则对数组元素错误的引用是( )。

A. *(a+i) B. a[p-a] C. p+1 D. *(&a[i])

(8) 若有说明语句 int a[5], *p=a; 对数组元素的正确引用是( )。 A. *&a[5] B. *p+2 (9) 若有以下定义,则 *(p+5) 的值为( )。

char s[ ]=”Hello”, *p=s;

C. *(a+2) D. *a++

A. '0' 确定的值

B. '\\0' C. '0'的地址 D. 不

(10) 若有以下的定义,则值为3的表达式是( )。

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

A. p+=2,*(p++) B. p+=2,*++p C. p+=3,*p++ D. p+=2,++*p; (11) 执行语句 char a[10] ={\后,*(p+4)的值是( )。

A. \不能确定

B. 'd'

C. '\\0'

D.

(12) 数组定义为“int a[4][5];”,引用“a[1]+3”表示( )。

·106 ·

第7章 数组

A. a数组第1行第3列元素的地址

B. a数组第1行第3列元素的值

·107·

C. a数组第4行的首地址 D. a数组第4列的首地址 (13) 数组定义为“int a[4][5];”,引用“*(*a+1)+2”表示( )。

A. a[1][0]+2 C. a[0][1]+2

B. a数组第1行第2列元素的地址 D. a数组第1行第2列元素的值

(14) 设有定义语句 int (*ptr)[10]; 其中的ptr是( )。

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

C. 一个指向具有10个元素的一维数组的指针 D. 具有10个指针元素的一维数组

(15) 若有如下定义和语句,则输出结果是( )。

int **pp, *p, a=10, b=20;

pp=&p; p=&a; p=&b; printf(\

A. 10, 20 2. 填空题

B. 10, 10 C. 20, 10 D. 20, 20

(1) 单目运算符“*”称为 运算符,“&”称为 运算符。 (2) 设int a[10], *p=a; 则对a[3] 的引用可以是p[ 3 ] 和 *( )。

(3) &后跟变量名,表示取该变量的 ,*后跟指针变量名,表示取该指针变量 ,&后跟指针变量名,表示取该指针变量的 。

(4) 设有int sz[4], p=sz; 有 、 、 和 四种不同的引用数组元素的方法。

(5) 设有char *a=\则printf(\的输出是 ,而printf(\的输出是 。

(6) 定义a为共有5个元素的一维整型数组、同时定义p为指向a数组首地址的指针变量的语句为 。

3. 程序阅读题

(1) 写出下列程序段的输出结果。

(2) 写出下列程序段的输出结果。

(3) 阅读下列程序,写出程序的输出结果。

#include void main( ) {

·107·

char *st[ ]={ \printf(\char s[ ]=\printf(\

·108· 第7章 数组

(4) 阅读程序,写出程序的主要功能。

char *a[6] ={\ int i;

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

(5) 阅读下列程序,写出程序运行的输出结果。

#include void main( ) {

int i, a[10], *p=a;

for(i=0;i<10;i++) scanf(\

for(--p; p>=a; ) printf(\}

(6) 设有下列程序,试写出运行的结果。

#include char s[ ]= \void main( ) {

char *p;

for(p=s;p

(7) 设有下列程序,当输入字符串“LEVEL”和“LEVAL”时,试写出运行的结果。

#include #include void main( ) {

char s[81], *pi, *pj; int n;

gets(s); n=strlen(s); pi=s; pj=s+n-1;

while(*pi==’ ’) pi++; while(*pj==’ ’) pj--;

·108 ·

#include void main( ) {

int i,b,c,a[ ]={1,10,-3,-21,7,13},*pb,*pc; b=c=1; pb=pc=a; for(i=0;i<6;i++) {

if(b<*(a+i)) { b=*(a+i); pb=&a[i]; } if(c>*(a+i)) { c=*(a+i); pc=&a[i]; } }

i=*a; *a= *pb; *pb=i; i= *(a+5); *(a+5) = *pc; *pc=i;

printf(\}

// 跳过空格

第7章 数组

while((pi

}

(8)

阅读下列程序,写出程序运行的输出结果。 #include void main( ) {

char *alpha[4] ={\ char *p; int i; p=alpha[0];

for(i=0;i<4;p=alpha[++i]) printf(\ printf(\

}

(9)

阅读下列程序,写出程序运行的输出结果。 #include void main( ) {

int s[4][4],i,j; for(i=0;i<4;i++)

for(j=0;j<4;j++) *(*(s+i)+j) =i-j; for(j=0;j<4;j++) {

for(i=0;i<4;i++) printf(″M″,*(*(s+i)+j)); printf(\ }

}

(10)

阅读下列程序,写出程序运行的输出结果 #include void main( ) {

int x=3,y=5;

void p(int *a,int b); p(&x,y);

printf(\ p(&y, x) ;

printf(\}

void p(int *a, int b) { *a=10; b=20;

}

4. 程序设计题(全部题目均要求用指针方法实现) (1) 输入3个整数,按从大到小的次序输出。

(2) 编一个程序,输入15个整数存入一维数组,再按逆序重新存放后输出。

·109·

·109·

·110· 第7章 数组

(3) 输入一个字符串,按相反次序输出其中的所有字符。

(4) 输入一个一维实型数组,输出其中的最大值、最小值和平均值。 (5) 输入一个3×6的二维整型数组,输出其中最大值、最小值及其所在的行列下标。 (6) 输入3个字符串,输出其中最大的字符串。 (7) 输入2个字符串,将其连接后输出。 (8) 比较2个字符串是否相等。

(9) 输入10个整数,将其中最大数和最后一个数交换,最小数和第1个数交换。 (10) 写一程序,输入一行文字,找出其中大写字母、小写字母、空格、数字以及其他字符各有多少?

·110 ·


c语言习题汇总(6-10章)(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:招标文件(范本) - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: