计算机二级

有以下程序:#include<strintg.h>main{ char p[20]={a,b,c,d),q[]="abc",r[]="abcde";strcpy(p+strlen(q),r);strcat(p,q);printf("%d%d\n",sizeof(p),strlen(p));}程序运行后的输出结果是( )。A.20 9B.9 9C.20 11D.11 11

题目

有以下程序:

#include<strintg.h>

main

{ char p[20]={'a','b','c','d'),q[]="abc",r[]="

abcde";

strcpy(p+strlen(q),r);strcat(p,q);

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

}

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

A.20 9

B.9 9

C.20 11

D.11 11

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

第1题:

有以下程序 include main() { char p[20]={'a','b','c','d'},q[]="abc",r[]

有以下程序 #include<string.h> main() { char p[20]={'a','b','c','d'},q[]="abc",r[]="abcde"; strcpy(p+strlen(q),r);strcat(p,q); printf("%d%d\n",sizeof(p),strlen(p)); } 程序运行后的输出结果是

A.20 9

B.9 9

C.20 11

D.11 11


正确答案:C
解析:函数strlen()返回的是数组的实际长度,而sizeof返回的是数组定义的总长度。因为字符数组p[20]定义为20字节长度,所以sizeof(p)的值为 20。“strcpy(p+strlen(q),r);”语句的功能把字符数组 r拷贝到字符数组p从p[3]开始到p[7]的位置中,这时字符数组p的有效字符长度为8。然后再执行"strcat (p,q);”语句(字符串连接),即把字符数组q连接到字符数组p后面,这时字符数组p的有效长度为11。

第2题:

有以下程序:includemain(){char *p,*q;p=(char*)malloc(sizeof(char)*20);q=p;scanf(

有以下程序: #include <stdlib.h> main() { char *p,*q; p=(char*)malloc(sizeof(char)*20); q=p; scanf("%s%s",p,q); ptintf("%s%s\n",p,q); } 若从键盘输入abc def<回车>,则输出的结果是( )。

A.def def

B.abc def

C.abc d

D.d d


正确答案:A
解析:本题首先定义两个字符型指针变量p和q,通过malloc()函数申请20个字符的存储空间,并把它的首地址赋给p,再把p的值赋给小p和q指向同一个存储区。在scanf()语句中读取字符串到p和q指向的字符串,先把abc读取到p指向的存储区中,第一个空格是结束标记,第二个空格是分隔符,再把def存放到q指向的存储区,把原先的内容覆盖。所以p和q指向的存储区内容是def,故最后输出的def,def。4个选项中A正确。

第3题:

有以下程序

#include <stdio.h>

void fun(char **p)

{ ++p; printf("%s\n",*p);}

main()

{ char *a[]={"Morning","Afternoon","Evening","Night"};

fun(a);

}

程序的运行结果是

A ) Afternoon

B ) fternoon

C ) Morning

D ) orning


正确答案:A

第4题:

有以下程序: includemain(){ char str[][20]={"Hello","Beijing"},*p=str;printf("%

有以下程序: # include<string.h> main() { char str[][20]={"Hello","Beijing"},*p=str; printf("%d\n",strlen(p+20)); } 程序运行后的输出结果是 ______。

A.0

B.5

C.7

D.20


正确答案:C
解析:本题中定义了一个2×20的二维字符数组str,并且初始化为str[0]="Hello",str[1]="Beijing",p是指向 char型的指针变量,并指向str数组的首地址,strlen(p+20)=strlen(str[1])=7。

第5题:

有以下程序:includemain(){char p[20]={'a','b','c','d'),q[]="abc",r[]="abcde"strc

有以下程序: #include<string.h> main() {char p[20]={'a','b','c','d'),q[]="abc",r[]="abcde" strcat(p,r);strcpy(p+strlen(q),q); printf("%d\n",sizeof(p)); } 程序运行后的输出结果是( )。

A.9

B.6

C.11

D.7


正确答案:B
解析:题目中首先通过strcat(p,r)函数将r所指字符串内容连接到p所指的字符串后面,p[20]={'a','b','c','d','a','b','c','d','e'},然后通过strcpy(p+strlen(q),q),首先在p[0]地址的基础上向后移动三位,然后将q所指字符串的内容复制到p所指的存储空间中,从字符d往后全部覆盖,p[20]={'a','b','c','a','b','c'}。在输出语句中strlen(p)是求字符串的长度。

第6题:

有以下程序 include main() { char p[20]={'a','b','c','d'},q[]="abc",r[]

有以下程序 #include<string.h> main() { char p[20]={'a','b','c','d'},q[]="abc",r[]="abcde"; strcat(p,r);strcpy(p+strlen(q),q); printf("%d\n",strlen(p)); } 程序运行后的输出结果是

A.9

B.6

C.11

D.7


正确答案:B
解析:strcpy()函数的功能是将字符串q复制到从p[3]位置开始的存储单元,同时复制字符串结束标志‘\0’到p[6]中。函数strlen()返回的是字符串中不包括‘\0’在内的实际长度,故本题答案为B)。

第7题:

有以下程序:includevoid fun(char**p){++P;printf("%s\n",*p);}main()char*a[]={"Morn

有以下程序: #include<stdio.h> void fun(char**p) { ++P;printf("%s\n",*p);} main() char*a[]={"Morning","Afternoon","Evening","Night"}; fun(A); } 程序的运行结果是( )。

A.Afternoon

B.fternoon

C.Morning

D.oring


正确答案:A

第8题:

有以下程序

main()

{ char *p[]={"3697","2584"};

int i,j; long num=0;

for(i=0;i<2;i++)

{j=0;

while(p[i][j]!='\0')

{ if((p[i][j]-'0') % 2)num=10*num+p[i][j]-'0';

j+=2;

}

}

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

}

程序执行后的输出结果是

A)35

B)37

C)39

D)3975


正确答案:C

(42)C) 解析 : while(p[i][j]!='\0') 表示 p[i][j] 不等于 '\0' 时 , 继续执行 while 中的语句。 if 语句表示(p[i][j]-'\0') 除 2 的余数不为 0 时 , 执行后面的语句。最后执行的结果是 39 。

 

第9题:

有以下程序: includemain(){char*p,*q; p=(char *)malloc(sizeof(char)* 20);q=p; sca

有以下程序: # include<stdio.h> main() { char*p,*q; p=(char *)malloc(sizeof(char)* 20);q=p; scanf("%s %s",p,q);printf("%s %s\n",p,q); } 若从键盘输入;abc def<回车>,则输出结果是 ______。

A.def def

B.abc def

C.abe d

D.d d


正确答案:A
解析:本题考查%s控制符在scanf函数中的应用。scanf函数中%s控制符的作用是将键盘输入的字符串送到内存,输入的字符串从第一个非空格字符算起,遇到空格或回车就认为是输入结束。本题中执行语句scanf("%s%s",p,q)时,从键盘输入abc def回车>后,指针变量p指向字符串"abc\0",q指向字符串"def\0",但是由于p和q指向同一个存储单元,所以存储单元中存放的是"def\0",printf函数的输出结果为def def。

第10题:

有以下程序:

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',前面不变。

更多相关问题