有以下程序:void swap (char *x,char *y){char t;t=*x,*x=*y;*y=t;}main(){char* s1="abc",*s2="

题目

有以下程序:void swap (char *x,char *y){char t; t=*x,*x=*y;*y=t;}main(){char* s1="abc",*s2="123"; swap(s1,s2); printf("%s,%s\n",s1,s2);}程序执行后的输出结果是( )。

A.123,abc

B.abc,123

C.1bc,a23

D.321,cba

参考答案和解析
正确答案:C
解析:首先看swap()函数,函数中定义了一个临时字符变量t,然后将形参指针x所指内容存入t,再将形参指针y所指内容存入到x所指内容中,最后将临时变量t的内容存入到y所指内容中。所以该函数实现的是:交换两个字符指针所指向的内容。在主函数中,首先定义了两个字符指针s1和s2,同时用字符串"abc"和"123”来初始化它们,此时它们指向的是两个字符串的第1个字符。所以,在调用完swap()函数后,彼此交换了两个字符串的第1个字符,最后输出结果为1bc,a23。故应该选择C。
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

有以下程序

void swap(char *x,char *y)

{ char t;

t=*x; *x=*y; *y=t;

}

main()

{ char *s1="abc",*s2="123";

swap(s1,s2);printf(" % s, % s\n",s1,s2);

}

程序执行后的输出结果是

A)123,abc

B)abc,123

C)1bc,a23

D)321,cba


正确答案:C
(38)C) 解析 : 这是一个转换程序 : 低字节相互转换 , 高字节不变 。 “ abc ” 的 ab 和 “ 123 ” 的 1 2相互转化。

第2题:

有以下程序: char fun(char x,char y) { if(x<y) return x; return y; } main() { int a='9',b='8',c='7'; printf("%c\n",fun(fun(a,b),fun(b,c)); } 程序的执行结果是( )。

A.函数调用出错

B.8

C.9

D.7


正确答案:D
解析:经过分析得出函数fun()的功能是比较形参x和形参y的大小,返回较小的一个。函数fun()有两个参数。本题中,首先定义了3个整型变量a、b和c,分别赋初值为9、8和7。然后执行函数fun(fun(a,b),fun(b,c))。在该函数中分别将fun(a,b)和fun(b,c)函数的返回值作为该函数的两个实参。在函数fun(a,b)中,由于a>b,故返回较小值b即8,在函数fun(b,c)中,由于bc,故返回较小值c即为7,因此调用函数fun(fun(a,b),fun(b,c))相当于执行函数fun(8,7),返回较小值即7。所以,4个选项中选项D符合题意。

第3题:

若有定义 :char *x="abcdefghi"; ,以下选项中正确运用了 strcpy 函数的是

A)char y[10]; strcpy(y,x[4]);

B)char y[10]; strcpy(++y,&x[1]);

C)char y[10],*s; strcpy(s=y+5,x);

D)char y[10],*s; strcpy(s=y+1,x+1);


正确答案:D

答案 D
解析 : 在字符拷贝函数中 strcpy( 字符数组 1 , 字符串 2) 中 , “ 字符数组 1 ” 必须写成数组名的形式,而且,数组 1 的长度要大于树组 2 的长度。因此本题 D 正确。

 

第4题:

有以下程序: include using namespace std; char *x[]={"First", "Second", "Third"

有以下程序: #include <iostream> using namespace std; char *x[]={"First", "Second", "Third" }; void f(char *z[ ]) { cout<<*z++<<end1; } int main ( ) { char **y; y=x; f(y); return 0; }

A.产生语法错误

B.First

C.Secpnd

D.Third


正确答案:B
解析:程序首先定义全局指针数组x,并赋初值。在函数f()中,语句“cout*z++end1;”是输出*z指向的字符串,然后指向下一个指针。由于在主函数中,指针y已初始化指向指针数组x,所以执行f(y)后,程序输出指针数组x中的第一个字符串"First"。

第5题:

阅读下列程序说明和c代码,将应填入(n)处的字句写在对应栏内。

[说明]

下面的程序利用递归算法计算x和y的最大公约数。

[函数2.1]

main ( )

{ int x,y,k,t;

scanf(" % d% d" , &x, &y);

if(x>y) { t=x;x=y; y=t;}

(1);

while(k! =0){

y=x;

(2);

k=y%x;

}

prinff( "% d" ,x); }

[函数2.2说明]

函数fun(char *str,char *substr的功能是计算子串sugbstr在串str中出现的次数。

[函数2.2]

fun(ehar * str, char * substr)

{ int x,y,z;

(3);

for(x=0;str[ x] ! = '\O';x + + )

for(y=x,z=0;sabstr[z] = =str[y];(4),y+ +)

if((5)= ='\0') {

num + +;

break;

}

return(num);

}


正确答案:(1)k=y%x (2)x=k (3)int num=0 (4)z++ (5)substr[z+1]
(1)k=y%x (2)x=k (3)int num=0 (4)z++ (5)substr[z+1] 解析:(1)~(2)使用递归算法计算x和y的最大公约数时,不妨令yx,如果y除x余数得。则x即为所求;否则令y←x,x←余数,继续上述判断。
(3)此处应声明变量num并初始化;
(4)次循环的功能是从str的第y个位置起与substr做比较,循环过程中y和z应同时增1;
(5)若上面的循环重复执行,直到到达substr结束,则表示substr在str中出现一次。

第6题:

若有定义:char *x="abcdefghi";,以下选项中正确运用了strcpy函数的是______。

A.char y[10]; strcpy(y,x[4]);

B.char y[10]; strcpy(++y,&x[1]);

C.char y[10],*s; strcpy(s=y+5,x);

D.char y[10],*s; strcpy(s=y+1,x+1);


正确答案:D
解析:选项A中x[4]是取字符e,也就是将字符复制到y中,strcpy实现的是地址的复制所以选项A错误;选项B中++y是错误的,不允许对常量进行自加运算(y是—个确定的地址值),所以选项B错误;选项C指针变量s指向了y向后的第5位,则存放x时会出现越界问题,所以选项C错误;选项D中,指针变量s指向了y向后的第—位,此时s可存放数据的长度为9,而地址“x+1”起的字符串的地址长度也刚好为9(包括“\0”),所以开始复制不会出现地址越界问题,故选项D正确。

第7题:

下面的程序执行后,屏幕上显示的应是 public class Exam{ public static void main(String[]args){ char char1[]={'t','e','s','t'}; char char2[]={'t','e','S','t','1'}; String s1=new String(char1); String s2=new String(char2,0,4); System.out.println(s1.equals(s2)); } }

A.true

B.false

C.test

D.编译错误


正确答案:A
解析:首先可以通过字符数组来生成一个字符串对象:String(char[]value)和 String(char[]value,int startIndex,int numChars),其中,startIndex指定字符串在数组中的起始下标, numChars表示字符个数。然后再测试字符串是否相等,可调用equals()方法,两个字符串相等则返回 true,否则返回false。题目中s1和s2都是“test”,所以最后返回是true,选项A正确。

第8题:

●有以下C程序:

char fun(char x,char y)

{if(x)return y;

}

main()

{int a=′9′,b=′8′,c=′7′;

printf("%c/n",fun(fun(a,b),fun(b,c)));

}

程序的执行结果是 (31) 。

(31) A.函数调用出错

B.8

C.9

D.7


正确答案:D
【解析】本题考查C语言以及函数调用等知识点。程序设计语言的基本成分(数据、运算、控制和传输、过程(函数)调用)等是基础知识,考生应该掌握。
根据源程序分析fun(a,b)的返回值应该是8;fun(b,c)的返回值应该是7;那么fun(8,7)的返回值就是7。

第9题:

有以下程序并includeincludefun(char * w,int n){char t,*s1,*s2; s1=w;s2=

有以下程序 并include<stdio.h> #include<string.h> fun(char * w,int n) { char t,*s1,*s2; s1=w; s2=w+n-1; while(s1<s2) { t=*s1++; * s1=*s2--; * s2=t; } } main() { char p[]="1234567"; fun(p,strlen(p)); puts(p); } 程序运行后的输出结果是( )

A.1234567

B.7654321

C.1711717

D.7177171


正确答案:C

第10题:

有以下程序: void swap(char*x,char*y) {cbar t; t=*x; *x=*y; *y=t; } main() {char*s1="abc",*s2="123"; swap(s1,s2);printf("%s,%s\n",s1,s2); } 程序执行后的输出结果是( )。

A.123,abc

B.abc,123

C.1bc,a23

D.321,cba


正确答案:C
解析:函数swap()实现的功能为交换字符指针x和y首位的数值。

更多相关问题