计算机二级

如有下面初始化定义: char a[]="program"; char b[]={'p','r','o','g','r','a','m'}; 则下列说法正确的是( )。A.a和b代表的数组内容完全相同,所占存储单元的数目相同B.a和b代表的数组内容不同,所占存储单元的数目相同C.a和b代表的数组内容完全相同,所占存储单元的数目不同D.a和b代表的数组内容不同,所占存储单元的数目不同

题目

如有下面初始化定义: char a[]="program"; char b[]={'p','r','o','g','r','a','m'}; 则下列说法正确的是( )。

A.a和b代表的数组内容完全相同,所占存储单元的数目相同

B.a和b代表的数组内容不同,所占存储单元的数目相同

C.a和b代表的数组内容完全相同,所占存储单元的数目不同

D.a和b代表的数组内容不同,所占存储单元的数目不同

如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

以下程序的结果是()。includevoid main(){char*p="abcdefgh",*r;long*q;q=(1ong*)P;

以下程序的结果是( )。 #include<iostream.h> void main() {char*p="abcdefgh",*r; long*q; q=(1ong*)P; q++; r=(char*)q; cout<<r<<endl;=

A.defg

B.cdef

C.ghab

D.efgh


正确答案:D

第2题:

以下程序的结果是 include void main( ) { char * p="abcdefgh",* r; long *

以下程序的结果是 #include<iostream.h> void main( ) { char * p="abcdefgh",* r; long * q; q=(long * )p; q++; r=(char * )q; cout < < r < < end1;}

A.defg

B.cdef

C.ghab

D.efgh


正确答案:D
解析:C++语言规定,如果指针变量q已指向数组中的一个元素,则(q++指向同一数组中的下一个元素(而不是将q的值简单的加1)。本题中q是long型指针,每个long型数据占内存字节数为4,所以q++则由当前位置向右移动4个字节,所以最后显示出的是efgh。注意:请注意*(P++)与(*p)++的区别。

第3题:

有以下程序: void funl(char*p) { char*q; q=P; while(*q!=\O) {(*q)++;q++;} } main { char a[]={"Program"),*P; p=&a[3];funl(p); printf("%s\n",a); } 程序执行后的输出结果是( )。

A.Prohsbn

B.Prphsbn

C.Progsbn

D.Program


正确答案:A
本题中使用了函数的调用,由{unl函数中的while循环可知,循环的作用是为了把q所指向的内容增加l,而从主函数传到函数时是从下标为3开始传,因此当调用函数执行完后,传过去的字符串为hsbn,前面不变。

第4题:

以下程序的输出结果是【 14 】

#include <stdio.h>

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

main( )

{ char *p,*q,*r,

p=q=r=(char*)malioc( sizeof(char)*20);

strcpy(p,"attaboy,welcome!");

printf(”%c%c%c\n”,p[ 11 ], q[ 3 ],r[ 4 ]);

free(p);

}


正确答案:
【答案】cab
【知识点】malloc函数与指针变量的使用
【解析】pqr三个指针指向同一个具有20个字符空间的地址。Strcpy函数的作用是将字符串attaboy,welcome!复制到p指针所指向的空间。所以打印时打印的p[11], q[3],r[4]分别为c,a,b。

第5题:

若有如下程序段: include using namespace std; int main() {char*p="abcdefgh",*r;l

若有如下程序段:

include <iostream>

using namespace std;

int main()

{

char *p="abcdefgh",*r;

long *q;

q=(long *)p;q++;

r=(char *)q;

cout<<r<<end1;

return 0;

}

该程序的输出结果是______。


正确答案:efgh
efgh 解析:本题定义了一个字符型指针变量p,并通过赋初值让它指向了一个字符串,还定义了另一个字符型指针变量r和一个长整型指针变量q。首先通过语句“a=(long*)p;”,把p的地址值强制转换为长整型地址值并赋值给小然后执行“q++”,地址值增加了4,执行语句“r=(char*)q;”,把长整型指针变量q的值再强制转换成字符型地址值并赋给r,r的值应为字符串中字符“e”的地址。最后输出r指向的字符串。

第6题:

若有如下程序:include using namespace std;int main(){ char *p="abcdefgh",*r; lon

若有如下程序: #include <iostream> using namespace std; int main() { char *p="abcdefgh",*r; long *q; q=(long *)p; q++; r=(char *)q; cout<<r<<end1; return 0; } 上述程序的输出结果是( )。

A.abcdefgh

B.0

C.abcd

D.efgh


正确答案:D
解析:本题定义了一个字符型指针变量p,并通过赋初值让它指向了一个字符串。还定义了另一个字符型指针变量r和一个长整型指针变量q。首先通过语句“q=(long*)p;”,把p的地址值强制转换为长整型地址值并赋值给q,然后执行“q++;”,地址值增加了4,执行语句“r=(char*)q;”,把长整型指针变量q的值再强制转换成字符型地址值并赋给r,r的值应为字符串中字符“e”的地址。最后输出r指向的字符串。

第7题:

以下程序的输出结果是【】。 includevoid main() {char *p= "12345678" , *r;long *q;

以下程序的输出结果是【 】。

include<iostream. h>

void main() {

char *p= "12345678" , *r;

long *q;

q=(long *)p;

q++;

r= (char *) q:

cout<<r;

}


正确答案:5678
5678

第8题:

有以下程序:

void funl(char*p)

{ char*q;

q=P;

while(*q!='\O')

{(*q)++;q++;}

}

main

{ char a[]={"Program"),*P;

p=&a[3];funl(p);

printf("%s\n",a);

}

程序执行后的输出结果是( )。

A.Prohsbn

B.Prphsbn

C.Progsbn

D.Program


正确答案:A
本题中使用了函数的调用,由{unl函数中的while循环可知,循环的作用是为了把q所指向的内容增加l,而从主函数传到函数时是从下标为3开始传,因此当调用函数执行完后,传过去的字符串为'hsbn',前面不变。

第9题:

若有以下程序段: include using namespace std; int main() {char*p="abcdefgh",*r;l

若有以下程序段:

include <iostream>

using namespace std;

int main()

{

char*p="abcdefgh",*r;

long*q;

q=(long*)p;q++;

r=(char*)q;

cout<<r<<end1;

return 0;

}

该程序的输出结果是【 】。


正确答案:efgh
efgh 解析:本题定义了一个字符型指针变量p,并通过赋初值让它指向了一个字符串,还定义了另一个字符型指针变量r和一个长整型指针变量qo首先通过语句“a=(long*)p;”,把p的地址值强制转换为长整型地址值并赋值给q,然后执行“q++;”,地址值增加了4,执行语句“F(char*)q;”,把长整型指针变量q的值再强制转换成字符型地址值并赋给r,r的值应为字符串中字符“e”的地址。最后输出r指向的字符串。