数组和函数.docx

上传人:b****1 文档编号:2531031 上传时间:2023-05-03 格式:DOCX 页数:125 大小:49.45KB
下载 相关 举报
数组和函数.docx_第1页
第1页 / 共125页
数组和函数.docx_第2页
第2页 / 共125页
数组和函数.docx_第3页
第3页 / 共125页
数组和函数.docx_第4页
第4页 / 共125页
数组和函数.docx_第5页
第5页 / 共125页
数组和函数.docx_第6页
第6页 / 共125页
数组和函数.docx_第7页
第7页 / 共125页
数组和函数.docx_第8页
第8页 / 共125页
数组和函数.docx_第9页
第9页 / 共125页
数组和函数.docx_第10页
第10页 / 共125页
数组和函数.docx_第11页
第11页 / 共125页
数组和函数.docx_第12页
第12页 / 共125页
数组和函数.docx_第13页
第13页 / 共125页
数组和函数.docx_第14页
第14页 / 共125页
数组和函数.docx_第15页
第15页 / 共125页
数组和函数.docx_第16页
第16页 / 共125页
数组和函数.docx_第17页
第17页 / 共125页
数组和函数.docx_第18页
第18页 / 共125页
数组和函数.docx_第19页
第19页 / 共125页
数组和函数.docx_第20页
第20页 / 共125页
亲,该文档总共125页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数组和函数.docx

《数组和函数.docx》由会员分享,可在线阅读,更多相关《数组和函数.docx(125页珍藏版)》请在冰点文库上搜索。

数组和函数.docx

数组和函数

数组和函数

1、若有以下定义和语句

#include

inta=4,b=3,*p,*q,*w;

p=&a;q=&b;w=q;q=NULL;

则以下选项中错误的语句是________。

A、*q=0;

B、*p=*w;

C、w=p;

D、*p=a;

答案a

2、在说明语句:

int*f();中,标识符f代表的是________。

A、一个用于指向函数的指针变量

B、一个用于指向整型数据的指针变量

C、一个用于指向一维数组的行指针

D、一个返回值为指针型的函数名

答案d

3、不合法的main函数命令行参数表示形式是________。

A、main(intarc,char**arv)

B、main(intargv,char*argc[])

C、main(intargc,char*argv)

D、main(inta,char*c[])

答案c

4、有以下程序

main()

{char*s[]={"one","two","three"},*p;

p=s[1];

printf("%c,%s\n",*(p+1),s[0]);

}

执行后输出结果是________。

A、t,one

B、o,two

C、w,one

D、n,two

答案c

5、有以下程序

main()

{intx[8]={8,7,6,5,0,0},*s;

s=x+3;

printf("%d\n",s[2]);

}

执行后输出结果是________。

A、5

B、0

C、6

D、随机值

答案b

6、若定义:

inta=511,*b=&a;,则printf("%d\n",*b);的输出结果为________。

A、512

B、无确定值

C、a的地址

D、511

答案d

7、若有定义:

int*p[3];,则以下叙述中正确的是________。

A、定义了一个名为*p的整型数组,该数组含有三个int类型元素

B、定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针

C、定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素

D、定义了一个基类型为int的指针变量p,该变量具有三个指针

答案b

8、有以下程序

#include

main()

{charstr[][20]={"Hello","Beijing"},*p=str[0];

printf("%d\n",strlen(p+20));

}

程序运行后的输出结果是________。

A、5

B、20

C、7

D、0

答案c

9、若有说明:

intn=2,*p=&n,*q=p;,则以下非法的赋值语句是________。

A、n=*q;

B、p=q;

C、*p=*q;

D、p=n;

答案d

10、有以下程序

#include

main(intargc,char*argv[])

{inti,len=0;

for(i=1;i

len+=strlen(argv[i]);

printf("%d\n",len);

}

程序编译连接后生成的可执行文件是ex1.exe,

若运行时输入带参数的命令行是:

ex1abcdefg10<回车>

则运行的结果是________。

A、12

B、22

C、17

D、9

答案d

11、以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是________。

main()

{int*p,*q,a,b;

p=&a;

printf("inputa:

");

scanf("%d",*p);

……

}

A、*p表示的是指针变量p的值

B、*p表示的是变量a的值,而不是变量a的地址

C、*p只能用来说明p是一个指针变量

D、*p表示的是指针变量P的地址

答案b

12、已有定义intk=2;int*ptr1,*ptr2;且ptrl和ptr2均已指向变量k,下面不能正确执行的赋值语句是________。

A、ptrl=ptr2;

B、ptr2=k;

C、k=*ptr1*(*ptr2);

D、k=*ptrl+*ptr2;

答案b

13、变量的指针,其含义是指该变量的________。

A、名

B、地址

C、一个标志

D、值

答案b

14、若有语句int*point,a=4;和point=&a;下面均代表地址的一组选项是________。

A、*&point,*point,&a

B、a,point,*&a

C、&*a,&a,*point

D、&a,&*point,point

答案d

15、下面说明不正确的是________。

A、char*a;a="china";

B、chara[]="china";

C、chara[10]="china";

D、chara[10],*p;p=a="china";

答案d

16、若有说明语句

chara[]="Itismine";

char*p="Itismin;

则以下不正确的叙述是________。

A、p变量中存放的地址值可以改变

B、a+1表示的是字符t的地址

C、p指向另外的字符串时,字符串的长度不受限制

D、a中只能存放10个字符

答案d

17、若有以下定义,则对a数组元素的正确引用是________。

inta[5],*p=a;

A、*(p+5)

B、*&a[5]

C、a+2

D、*(a十2)

答案d

18、若有以下定义,则对a数组元素地址的正确引用是________。

inta[5],*p=a;

A、&a+1

B、p+5

C、*a+1

D、&a[0]

答案d

19、若有定义:

inta[2][3];则对a数组的第i行第j列(假设i,j已正确说明并赋值)元素值的正确引用为________。

A、*(*(a+i)+j)

B、*(a+i)+j

C、(a十i)[j]

D、*(a+i+j)

答案a

20、若有定义:

inta[2][3];则对a数组的第i行第j列(假设i,j已正确说明并赋值)元素地址的正确引用为________。

A、*(a+j)

B、*(a[i]+j)

C、(a+i)

D、a[i]+j

答案d

21、若有以下定义和语句,则对a数组元素地址的正确引用为________。

inta[2][3],(*p[3])

p=a;

A、p[2]

B、(p+1)+2

C、p[1]+1

D、*(p+2)

答案c

22、若有以下定义和语句,则对a数组元素的正确引用为________。

inta[3][3],(*p)[3];

p=a

A、*(p+2)+1

B、p[1]+2

C、*(p[2]+1)

D、(p+1)[0]

答案c

23、若有定义:

inta[5];则a数组中首元素的地址可以表示为________。

A、a+1

B、&a[1]

C、a

D、&a

答案c

24、若有定义:

int(*P)[4];则标识符p________。

A、是一个指针数组名

B、定义不合法

C、是一个指针,它指向一个含有四个整型元素的一维数组

D、是一个指向整型变量的指针

答案c

25、若有以下定义和赋值语句,则对S数组的第i行第j列(假设i,j已正确说明并赋值)元素地址的合法引用为________。

ints[2][3]={0},(*p)[3];

p=s;

A、p[i]+j

B、(*(p+i))[j]

C、*(p(i)+j)

D、(p+i)+j

答案a

26、若有以下定义和赋值语句.,则对b数组的第i行第j列(假设i,j已正确说明并赋值)元素的非法引用为________。

intb[2][3]={0},(*p)[3];

p=b;

A、*(p[i]+j)

B、(*(p+1))[j]

C、*(p+i)+j

D、*(*(p+i)+j)

答案c

27、以下与int*q[5];等价的定义语句是________。

A、int(*q)[5];

B、intq[5];

C、int*q;

D、int(*q[5]);

答案d

28、若有以下定义,则*(p+5)表示________。

inta[10],*p=a;

A、元素a[6]的地址

B、元素a[5]的值

C、元素a[6]的值

D、元素a[5]的地址

答案b

29、若有定义:

int*p[4];则标识符p________。

A、是一个指针,它指向一个含有四个整型元素的一维数组

B、是一个指针数组名

C、说明不合法

D、是一个指向整型变量的指针

答案b

30、一以下正确的说明语句是________。

A、inta[]={1,3,5,7,9};int*num[5]={a[0],a[2],a[3],a[4]};

B、inta[5],*num[5]={&a[0],&a[1],&a[2],&a[3],&a[4]};

C、inta[3][4],(*num)[4];num[1]=&a[1][3];

D、int*b[]={1,3,5,7,9};

答案b

31、若有以下定义,且0<=i<4,则不正确的赋值语句是________。

intb[4][6],*p,*q[4];

A、p=b[i];

B、p=b;

C、q[i]=&b[0][0];

D、q[i]=b[i];

答案b

32、以下正确的定义语句和赋值语句是________。

A、doubleb[3][5],s[5][3]},*q;q=b;s=q;

B、floatb[3][5],*P[3];P[0]=b[0];p[2]=*b+4;

C、intb[10],*q;char*s;q=b;s=b;

D、intb[3][5],(*P)[3],(*q)[5];P=b;q=b;

答案b

33、若有以下定义,则P十5表示________。

inta[10],*p=a;

A、元素a[5]的地址

B、元素a[6]的值

C、元素a[5]的值

D、元素a[6]的地址

答案a

34、若有以下定义,且0<=i<6,则正确的赋值语句是________。

ints[4][6],t[6][4],(*p)[6];

A、p=s[i];

B、p=s;

C、p=t[i];

D、p=t;

答案b

35、若有定义:

inta[4][6];则能正确表示a数组中任一元素a[i][j](此0<=i<4,o<=j<6)地址的表达式是________。

A、&a[0][0]+6*i+j

B、&a[0][0]+6*j+1

C、&a[0][0]+4*j+i

D、&a[0][0]+4*i+j

答案a

36、以下选项中,对指针变量P的正确操作是________。

A、inta[5];

int*p=a=1000;

B、inta[5],*p;

p=a;

C、inta[5];

int*p1,*p2=a;

*p1=*p2;

D、inta[5],*p;

p=&a;

答案b

37、若有以下定义和语句,则能正确表示a数组元素地址的表达式是________。

doublea[5],*p1;

p1=a;

A、a

B、&a[5]

C、p1+5

D、*p1

答案a

38、若有以下定义,且0<=i<5,则对a数组元素的非法引用是________。

inta[5],*p=a;

A、*(p+i)

B、a[i]

C、*(a+i)

D、*(&a+i)

答案d

39、若有以下定义,则数值不为3的表达式是________。

intx[10]={0,1,2,3,4,5,6,7,8,9},*p1;

A、p1=x+3,*p1++

B、p1=x+2,*++p1

C、p1=x+2,*(p1++)

D、x[3]

答案c

40、若有以下定义,则能正确的程序段是________。

int*p,*s,i,j;

char*q,ch;

A、main()

{p=&i;

q=&ch;

p=q;

....}

B、main()

{*p=1.00;

....}

C、main()

{p=&ch;

s=p;

.....}

D、main()

{p=&i;

q=&ch;

*p=40;*q=*p;

....}

答案d

41、设有以下定义:

char*cc[22]={"1234","5678"};

则正确的叙述是________。

A、cc数组的两个元素中各自存放字符串"1234"和"5678"的首地址

B、cc数组元素的值分别是"1234"和"5678"

C、cc数组的两个元素中分别存放的是含4个字符的一维字符数组的首地址

D、cc是指针变量,它是指向两个数组元素的字符型一维数组

答案a

42、以下正确的叙述是________。

A、C语言允许main函数带形参,形参名只熊是argc和argv

B、若有说明:

main(intargc,char*argv),则形参arc的值必须大于i

C、当main函数带有形参时,传给形参的值只能从命令行中得到

D、C语言允许main函数带形参,且形参个数和形参名均可由用户指定

答案c

43、main函数的正确说明形式是________。

A、main(intargc,charargv)

B、main(intabc,char**abv)

C、main(intc,charv[])

D、main(intargc,char*argv)

答案b

44、若有说明:

char*language[]={"FORTRAN","BASIC","PASCAL","JAVA","C"};则表达式*language[1]>*language[3]比较的是________。

A、字符串BASIC和字符串JAVA

B、字符串FORTRAN和字符串PASCAL

C、字符B和字符J

D、字符F和字符P

答案c

45、若有说明:

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

A、一个字符串

B、一个地址

C、一个不定值

D、一个字符

答案b

46、若有说明:

char*language[]={"FORTRAN","BASIC",'PASCAL","JAVA","C"};则以下不正确的叙述是________。

A、language是一个字符型指针数组,它包含5个元素,每个元素都是一个指向字符串变量的指针

B、language+2表示字符串"PASCAL"的首地址

C、*language[2]的值是字母P

D、language是一个字符型指针数组,它包含5个元素,其初值分别是"FORTRAN","BASIC","PASCAL","JAVA","C"

答案d

47、语句int(*ptr)();的含义是________。

A、ptr是指向int型数据的指针变量

B、ptr是一个函数名,该函数的返回值是指向int型数据的指针

C、ptr是指向函数的指针,该函数返回一个int型数据

D、ptr是指向一维数组的指针变量

答案c

48、若有函数max(a,b),并且已使函数指针变量p指向函数max,当调用该函数时,正确的调用方法是________。

A、*pmax(a,b);

B、*p(a,b);

C、(*p)(a,b);

D、(*p)max(a,b);

答案c

49、已有函数max(a,b),为了让函数指针变量P指向函数max,正确的赋值方法是________。

A、p=max;

B、*p=max(a,b);

C、*P=max;

D、p=max(a,b);

答案a

50、已有定义int(*p)();指针p可以________。

A、表示函数的类型

B、指向函数的入口地址

C、表示函数返回值的类型

D、代表函数的返回值

答案b

51、以下定义语句中正确的是________。

A、float*a,b=&a;

B、inta=10,*b=&a;

C、chara='A'b='B';

D、floata=b=10.0;

答案b

52、若有以下说明和语句,intc[4][5],(*p)[5];p=c;能正确引用c数组元素的是________。

A、*(p[0]+2)

B、*(p+1)+3

C、p+1

D、*(p+3)

答案a

53、有以下程序

main()

{inta=7,b=8,*p,*q,*r;

p=&a;q=&b;

r=p;p=q;q=r;

printf("%d,%d,%d,%d\n",*p,*q,a,b);

}

程序运行后的输出结果是________。

A、7,8,8,7

B、8,7,7,8

C、8,7,8,7

D、7,8,7,8

答案b

54、有以下程序

main()

{inta[]={1,2,3,4,5,6,7,8,9,10,11,12,},*p=a+5,*q=NULL;

*q=*(p+5);

printf("%d%d\n",*p,*1);

}

程序运行后的输出结果是________。

A、510

B、611

C、报错

D、66

答案c

55、已有定义:

inti,a[10],*p;,则合法的赋值语句是________。

A、p=a+2;

B、p=a[2]+2;

C、p=100;

D、p=a[5];

答案a

56、若有说明语句:

inta,b,c,*d=&c;则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是________。

A、scanf("%d%d%d",&a,&b,d);

B、scanf("%d%d%d",a,b,*d);

C、scanf("%d%d%d",&a,&b,&d);

D、scanf("%d%d%d",a,b,d);

答案a

57、有以下程序

int*f(int*x,int*y)

{if(*x<*y)

returnx;

else

returny;

}

main()

{inta=7,b=8,*p,*q,*r;

p=&a;q=&b;

r=f(p,q);

printf("%d,%d,%d\n",*p,*q,*r);

}

执行后输出结果是________。

A、8,7,7

B、7,8,7

C、8,7,8

D、7,8,8

答案b

58、有以下程序,输出结果为________。

voidfun(char*a,char*b)

{a=b;(*a)++;}

main()

{charc1='A',c2='a',*p1,*p2;

p1=&c1;p2=&c2;fun(p1,p2);

printf("%c%c\n",c1,c2);

}

A、Ab

B、Bb

C、aa

D、Aa

答案a

59、若程序中已包含头文件stdio.h,以下选项中,正确运用指针变量的程序段是________。

A、long*L;*L='\0';

B、chart='m',*c=&t;

C、float*f=NULL;*f=10.5;

D、int*i=NULL;scanf("%d",i);

答案b

60、有以下程序段

main()

{inta=5,*b,**c;

c=&b;b=&a;

……

}

程序在执行了c=&b;b=&a;语句后,表达式:

**c的值是________。

A、变量b中的值

B、变量b的地址

C、变量a中的值

D、变量a的地址

答案c

61、已定义以下函数

fun(char*p2,char*p1)

{while((*p2=*p1)!

='\0'){p1++;p2++;}}

函数的功能是________。

A、将p1所指字符串复制到p2所指内存空间

B、检查p1和p2两个指针所指字符串中是否有'\0'

C、将p1所指字符串的地址赋给指针p2

D、对p1和p2两个指针所指字符串进行比较

答案a

62、有以下程序

#include

main()

{char*p="abcde\0fghjik\0";

printf("%d\n",strlen(p));

}

程序运行后的输出结果是________。

A、6

B、12

C、15

D、5

答案d

63、有以下程序

#include

main()

{char*p,*q;

p=(char*)malloc(sizeof(char)*20);q=p;

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

}

若从键盘输入:

abcdef<回车>,则输出结果是________。

A、defdef

B、dd

C、abcdef

D、abcd

答案a

64、以下程序的运行结果是________。

sub(intx,inty,int*z)

{*z=y-x;}

main()

{inta,b,c;

sub(10,5,&a);

sub(7,a,&b);

sub(a,b,&c);

printf("%4d,%4d,%4d\n",a,b,C);

}

A、-5,-12,-17

B、-5,-12,-7

C、5,-2,-7

D、5,2,3

答案b

65、执行以下程序后,a的值为0,b的值为________。

main()

{inta,b,k=4,m=6,*p1=&k,*p2=&m;

a=p1==&m;

b=(-*p1)/(*p2)+7;

printf("a=%d\n",a);

printf("b=%d\n",b);

}

A、6

B、10

C、7

D、5

答案c

66、下面程序应能对两个整型变量的值进行交换。

以下正确的说法是________。

main()

{inta=10,b=20;

printf("

(1)a=%d,b=%d\n",a,b);

swap(&a,&b);

printf("

(2)a=%d,b=%d\n",a,b);

}

swap(intp,intq)

{intt;

t=p;p=q;q=t;

}

A、该程序有错,只要将swap()函数中的形参p和q以及t均定义为指针(执行语句不变)即可

B、该程序完全正确

C、该程序有错,只要将语句swap(&a,&b);中的参数改为a,b即可

D、以上说法都不正确

答案d

67、以下程序有错,错误原因是________。

main()

{int*p,i;char*q,ch;

p=&i;

q=&ch;

*p=40;

*p=*q;

……

}

A、q没有指向具体的存储单元,所以*q没有实际意义

B、p和q的类型不一致,不能执行*p=*q;语句

C、*p中存放的是地址值,因此不能执行*p=40

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2