有以下等程序include void f(char *s, char *t){ chark; k=*s; *s=*t; *t=k; s++;t-有以下等程序#include <string. h>void f(char *s, char *t){ char k; k=*s; *s=*t; *t=k; s++; t--; if(*s) f(s, t);}main (){ char stt[10] ="abcdefg", *p; p=str+strlen (str)/2+1; f (p,p-2); print

题目
有以下等程序include void f(char *s, char *t){ chark; k=*s; *s=*t; *t=k; s++;t-

有以下等程序#include <string. h>void f(char *s, char *t){ char k; k=*s; *s=*t; *t=k; s++; t--; if(*s) f(s, t);}main (){ char stt[10] ="abcdefg", *p; p=str+strlen (str)/2+1; f (p,p-2); print f ( "%s\n", str);}

A.abcdefg

B.gfedcba

C.gbcdefa

D.abedcfg


相似考题
参考答案和解析
正确答案:B
解析:本题考查的是递归函数。在一个函数中直接或间接地调用了自身,则称此函数为递归函数。本题定义的函数f()就是一个递归函数。它先交换两个字符指针所指的内容,然后将第1个指针往后移动一位,第2个指针往前移动一位,如果第1个指针所指内容不是字符串结束标志,则递归调用自身。主函数中首先定义了一个字符数组sTR[10]="abcdefg",然后定义了一个字符指针p=str+strlen(str)/2+1,即让p指向str+4(或&str[4])的位置.然后调用f(p,p-2);,这使得p所指的str[4]及其以后的2个位置str[5]、str[6]中的内容同p-2所指的3tr[2]及其以前的2个位置str[1]、str[0]中的内容互相交换。即让整个字符串逆序。所以本题应该选择B。
更多“有以下等程序include void f(char *s, char *t){ chark; k=*s; *s=*t; *t=k; s++;t- 有以下等程序#include <string. h>void f(char *s, char *t){ char k; k=*s; *s=*t; *t=k; s++; t--; if(*s) f(s, t);}main (){ char ”相关问题
  • 第1题:

    有以下程序

    #include <stdio.h>

    void fun(char *t,char *s)

    { while(*t!=0) t++;

    while((*t++=*s++)!=0);

    }

    main()

    { char ss[10]="acc",aa[10]="bbxxyy";

    fun(ss,aa); printf("%s,%s\n",ss,aa);

    }

    程序的运行结果是

    A.accxyy,bbxxyy

    B.acc,bbxxyy

    C.accxxyy,bbxxyy

    D.accbbxxyy,bbxxyy


    正确答案:D
    解析:本题中fun函数实现了字符串函数strcat的功能,将字符串aa连接到字符串ss的末尾。调用fun函数时,形参t和s分别指向了字符串ss和aa,然后通过一个while循环使t指向字符串ss的结束符的位置,第二个while循环将字符串aa中的字符(包括结束符'\0')逐个复制到字符串ss的末尾处。

  • 第2题:

    有以下程序

    void ss(char *s,char t)

    { while(*s)

    { if(*s==t)*s=t-′a′+′A′;

    s++; } }

    main()

    { char str1[100]="abcddfefdbd",c=′d′;

    ss(str1,c); printf("%s\n",str1);}

    程序运行后的输出结果是

    A.ABCDDEFEDBD

    B.abcDDfefDbD

    C.abcAAfefAbA

    D.Abcddfefdbd


    正确答案:B
    解析:在内存中,字符数据以ASCII码存储,它的存储形式与整数的存储形式类似。C语言中,字符型数据和整型数据之间可以通用,也可以对字符型数据进行算术运算,此时相当于对它们的ASCII码进行算术运算,在本题中,s++相当于s=s+1,即让s指向数组中的下一个元素。

  • 第3题:

    有以下程序:includevoid f(char*s,char*t){ char k;k=*s;*s=*t;*t=k;s++;t--;if(*s)f

    有以下程序: #include<string.h> void f(char*s,char*t) { char k; k=*s; *s=*t; *t=k; s++; t--; if(*s) f(s,t); } main( ) {char str[10]="abcdefg",*p; p=str+strlen(str)/2+1; f(p,p-2); printf(~%s\n",str); } 程序运行后的输出结果是 ______。

    A.abcdef

    B.gfedcba

    C.gbcdefa

    D.abedcfg


    正确答案:B
    解析:p=str+strlen(str)/2+1=str+4,f(p,p-2)的功能是将p[4]与p[2]互换,p[5]与p[1]互换,p[6]与p[0]互换,最后的结果为gfedcba。

  • 第4题:

    有以下程序 include void fun(char *t, char *s) { whil

    有以下程序 #include <stdio.h> void fun(char *t, char *s) { while(*t!=0) t++; while( (*t++ = *s++ )!=0 ); main() { char ss[10]="acc",aa[10]="bbxxyy"; fun(ss, aa); printff"%s,%s\n", ss,aa); 程序的运行结果是

    A.accxyy, bbxxyy

    B.acc, bbxxyy

    C.accxxyy, bbxxyy

    D.accbbxxyy, bbxxyy


    正确答案:D
    解析:函数fun()中,前一个while循环的作用是:如果形参指针t所指内容不为0,则让t增1,直到它指向0。后一个 while循环的作用是:将s所指内容赋给t所指地址,然后两者同时增1,直到赋给t的内容为0。由此可见,函数fun()的作用就是将形参s所指字符串连接到形参t所指字符串末尾,相当于库函数中的strcat()。主函数中使用fun()将数组aa中的字符串连接到了数组ss中原有字符串之后,所以执行完后,ss中的字符串为"accbbxxyy"。故最终输出的结果是:accbbxxyy,bbxxyy,应该选择D。

  • 第5题:

    有以下程序includeincludevoidfun(char*s[],intn){char*t;int i,j;for(i=0

    有以下程序 #include <stdio.h> #include <string.h> void fun(char *s[],int n) { char *t; int i,j; for(i=0;i<n-1;++) for(j=i+1;j<n;j++) if(strlen(s[i])>strlen(s[j])) {t=s[i];s[i];s[j];s[j]=t;} } main() { char *ss[]={"bcc

    A.xy,aaaacc

    B.aaaacc,xy

    C.bcc,aabcc

    D.aabcc,bcc


    正确答案:A
    解析: 函数fun(char*s[],int n)的功能是对字符串数组的元素按照字符串的长度从小到大排序。在主函数中执行fun(ss,5)语句后,*ss[]={"xy","bcc"," bbcc","aabcc","aaaacc"},ss[0],ss[4]的输出结果为xy,aaaacc。

  • 第6题:

    有下列程序:includevoid fun(char *a, char *B){while(*a=='*')a++;while(*b=*A){b++;

    有下列程序: #include <stdio.h> void fun(char *a, char *B) { while(*a=='*')a++; while(*b=*A) {b++;a++;} } main() { char *s="*****a*b****",t[80]; fun(s,t);puts(t); 程序的运行结果是( )。

    A.*****a*b

    B.a*b

    C.a*b****

    D.ab


    正确答案:C
    解析:主函数main()定义了指向字符串的指针和一个字符数组,接着调用fun(s,t)函数,进行实参向形参传递,函数fun()第一个 while语句判断*a中的值为“*”时继续扫描,当遇到不是“*”时结束,接着第二个while循环语句,将*a中从“a”开始的后续所有字符都赋予*b,也就是t[80]中的内容为“a*b****”,所以此题的运行结果为选项C)。

  • 第7题:

    有以下程序 void ss(char*s,char t) { while(*s) { if(*s==t)*s=t-'a'+'A'; s++; }} main() { char strl[100]="abcddfefdbd",c='d'; ss(str1,c);printf("%s\n",strl);} 程序运行后的输出结果是

    A.ABCDDEFEDBD

    B.abcDDfefDbD

    C.abcAAfefAbA

    D.Abcddfefdbd


    正确答案:B
    解析:在内存中,字符数据以ASCII码存储,它的存储形式就与整数的存储形式相类似。C语言使字符型数据和整型数据之间可以通用。也可以对字符数据进行算术运算,此时相当于对它们的ASCII码进行算术运算,在本题中,s++相当于s=s+1,即让s指向数组中的下一个元素。

  • 第8题:

    有以下程序: #include<stdio.h> void fun(char*t,char*s) { while(*t!=O)t++; while((*t++=*s++)!=0); } main { char ss[10]="acc",aa[10]="bbxxyy"; fun(ss,aa);printf("%S,%s",ss,aa); } 程序运行结果是( )。

    A.accxyy,bbxxyy

    B.ace,bbxxyy

    C.accxxyy,bbxxyy

    D.accbbxxyy,bbxxyy


    正确答案:D
    主函数中语句fun(ss,aa)的功能是将字符串8a连接到字符串ss的末尾。

  • 第9题:

    有以下程序includevoid ss(char*s,char t){ while(*s){if(*S==t)*s=t-'a'+'A';s++;

    有以下程序 #include<iostream.h> void ss(char*s,char t) { while(*s) { if(*S==t)*s=t-'a'+'A'; s++;} } void main( ) { char strl[100]="abcddfefdbd",c='d': ss(strl,c) ;cout<<strl;} 程序运行后的输出结果是

    A.ABCDDEfEBD

    B.abcDDfefDbD

    C.abcAAfefALbA

    D.Abcddfefdbd


    正确答案:B
    解析:在内存中,字符数据以ASCII码存储,它的存储形式就与整数的存储形式相类似。C++语言使字符型数据和整型数据之间可以通用。也可以对字符数据进行算术运算,此时相当于对它们的ASCII码进行算术运算,在本题中,s++相当于s=s+1,即让s指向数组中的下一个元素。

  • 第10题:

    有以下程序includeincludevoidfun(char,*s[],intn){char*t;inti,j; for(i=

    有以下程序 #include <stdio.h> #include <string.h> void fun(char,*s[],int n) { char *t; int i,j; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(strlen(s[i])>strlen(s[j])) {t=s[i];s[i]:s[j];s[j]=t;} } main() { char *ss[]={"bcc","bbcc","xy","aaaacc","aabcc"}; fun(ss,5); printf("%s,%s\n",ss[0],ss[4]); } 程序的运行结果是

    A.xy,aaaacc

    B.aaaacc,xy

    C.bcc,aabcc

    D.aabcc,bcc


    正确答案:A
    解析:函数fun(char,s[],int n)的功能是对字符串数组的元素按照字符串的长度从小到大排序。在主函数中执行fun(ss,5)语句后,*ss[]={"xy","bcc","bbcc","aabcc","aaaacc"},ss[0],ss[4]的输出结果为xy,aaaacc。

  • 第11题:

    有以下程序

    #include <stdio.h>

    void fun(char *t,char *s)

    {while(*t!=0) t++;

    while(*t++=*s++)!=0);

    }

    main()

    {char ss[10]=”acc”,aa[10]=”bbxxyy”;

    fun(ss,a

    A.; printf(“%s,%s\n”,ss,a

    A.;

    }

    程序的运行结果是( )。

    A.accxyy,bbxxyy

    B.acc,bbxxyy

    C.accxxyy,bbxxyy

    D.accbbxxyy,bbxxyy


    正确答案:D

  • 第12题:

    单选题
    有以下程序#include void  fun(char *a, char *b){ while(*a=='*') a++; while(*b=*a) {  b++;  a++; }}main(){ char *s=*****a*b**** , t[80]; fun(s,t); puts(t);}程序的运行结果是(  )。
    A

    *****a*b

    B

    a*b

    C

    a*b****

    D

    ab


    正确答案: C
    解析:
    注意两个while,第一个是判断相等“==”,第二个是赋值“=”,第一个循环终止的条件是指针指向的字符不为'*',那么就会在遇到字符'a'时停止,第二个循环把a指针所指的内容依次赋给了b指针指向的内容,直到字符串结束时终止。答案选择C选项。

  • 第13题:

    有以下程序:includeincludeincludevoid f(char*s,char*t){char k;k=*s; *

    有以下程序: #include<stdio.h> #include<string.h> #include void f(char*s,char*t) { char k; k=*s; *s=*t; *t=k; s++;t--; if(*s)f(s,t): } main() {char str[10]="abcdefg",*P; P=str+strlen(str)/2+1: f(p,p-2); printf("%s\n",str); } 程序运行后的输出结果是( )。

    A.abcdefg

    B.gfedcba

    C.gbcdefa

    D.abedcfg


    正确答案:B

  • 第14题:

    有以下程序:includevoid f(char *s, char *t){ char k;k=*s;*s=*t; *t=k;s++;t- -;

    有以下程序:#include <string .h>void f(char *s, char *t){ char k; k=*s; *s=*t; *t=k; s++; t- -; if(*s) f(s, t);}main(){ char str[10]="abcdefg",*p; p=str+strlen(str)/2+ 1; f(p,p-2); printf("%s\n", str);}程序运行后的输出结果是( )。

    A.abcdcfg

    B.gfedcba

    C.gbcdefa

    D.abedcfg


    正确答案:B
    解析:本题定义的函数f()是一个递归函数。它先交换两个字符指针所指的内容,然后将第1个指针往后移动—位,第2个指针往前移动一位,如果第1个指针所指内容不是字符串结束标志,则递归调用自身。主函数中首先定义了—个字符数组sir[10]=“ahcdeft”然后定义了一个字符指针p=str+strlen(str)/2+1,即让p指向str+4(或&str[4])的位置。然后调用f(p,p-2);,这使得p所指的str[4]及其以后的2个位置str[5]、str[6]中的内容同p-2所指的str[p]及其以前的2个位置str[1]、str[0]中的内容互相交换。即让整个字符串逆序。所以本题应该选择B。

  • 第15题:

    有以下程序: include void f(char *s,char *t) {char k; k=*s; +s=*t;

    有以下程序: #include<string.h> void f(char *s,char *t) {char k; k=*s; +s=*t; *t=k; S++; t--; if(*s) f(s,t); } main() {char.str[10]="abcdefg",*p; p=str+strlen(str) /2+1; f(p,p-2); printf("%s\n",str); } 程序运行后的输出结果是 ______。

    A.abcdefg

    B.gfedcba

    C.gbcdefa

    D.abedcfg


    正确答案:B
    解析:本程序的作是将字符串str倒序。语句“p=str+strlen(str)/2+1;”用于将指针变量p指向e字符所在的存储单元,p-2指向了c字符所在的存储单元,在函数f中将这两个存储单元的内容交换,并使得f函数中指向c字符的指针变量s加1。指向c字符的指针变量t减1,然后继续将s和t指向的存储单元的内容进行交换,直到s指向的存储单元的内容为空为止。所以本题程序输出的结果是字符串“abcdefg”的倒序形式“gfedcba”。

  • 第16题:

    有以下程序 void ss(char *s,char t) { while { *s) if (*s==t) *s-t-'a' +'A'; S++; main () { char strl [100] =" abcddfefdbd" , c= 'd'; ss(str1,c); printf ("%s\n" ,str1); } 程序运行后的输出结果是

    A.ABCDDEFEDBD

    B.abcDDfefDbD

    C.abcAAfefAbA

    D.Abcddfefdbd


    正确答案:B
    解析:本题中的函数ss()有两个参数,一个是字符型指针变量s,另一个是字符型变量t在函数中通过一个while循环,在循环中一次取出s指向的字符串并判断它是否和t中存放的字符相同,若相等,则执行“s=t-'a'+'A':”(若是小写字母,则把它转换成大写字母)语句。在主函数中执行函数调用ss(strl,c),很显然是把str1数组中所有字符“d”变成大写字母,其他字符不变。所以4个选项中B正确。

  • 第17题:

    有以下程序 void ss(char *s,char t) { while(*s) { if(*s==t)*s=t-'a'+'A'; s++; } } main() {char strl[100]=“abcddfefdbd”,c=‘d’; ss(strl,c);printf(“%s\n”,strl); } 程序运行后的输出结果是

    A.ABCDDEFEDBD

    B.abeDDfefDbD

    C.abcAMefAbA

    D.Abcddfefdbd


    正确答案:B
    解析:本题中的函数ss()有两个参数,一个是字符型指针变量s;另一个是字符型变量t。在函数中通过一个while循环,在循环中一次取出e指向的字符串并判断它是否和t中存放的字符相同,若相等,则执行“*s=t-'a'+'A';”(若是小写字母,则把它转换成大写字母)语句。在主函数中执行函数调用ss(strl,c),很显然是把stfl数组中所有字符“d”变成大写字母,其他字符不变。

  • 第18题:

    有以下程序:includeinclude"string.h"void fun(char*s[],int n){char*t;int i,j;for(

    有以下程序: #include<stdio.h> #include"string.h" void fun(char*s[],int n) { char*t;int i,j; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(strlen(s[i])>strlen(s[j])){t=s[i];s[i]=s[j];s[j]=t;} } main() { char*ss[]={"bee","bbcc","xy","aaaacc","aabcc"}; fun(ss,5);printf("%s,%s\n",ss[0],ss[4]); } 程序的运行结果是( )。

    A.xy,aaaacc

    B.aaaacc,xy

    C.bcc,aabcc

    D.aabcc,bcc


    正确答案:A

  • 第19题:

    有以下程序: include include void f(char * s,char*t){char k; k=*s;*s=*

    有以下程序: #include <stdio.h>#include <string.h>void f(char * s,char*t){ char k; k=*s; *s=*t; *t=k; s++; t--; if( * s) f(s,t);}main( ){ char str[10] :"abedefg", * p; p = str + strlen(str)/2+1; f(p,p -2); printf( "% s \n" ,str);程序运行后的输出结果是( )。

    A.abcdefg

    B.gfedcba

    C.gbcdefa

    D.abedcfg


    正确答案:B
    解析:本程序的作用是将字符串str倒序。语句p=str+strlen(str)/2+1;将指针变量p指向字符'e'所在的存储单元,P-2指向字符,'c'所在的存储单元,在函数f中将这两个存储单元的内容交换,然后将f函数中指向字符'e'的指针变量s加1,指向字符'c'的指针变量t减1,继续将s和t指向的存储单元的内容进行交换,直到s指向的存储单元的内容为空为止。所以本题程序输出的结果是字符串"abcdefe”的倒序形式"gfedcba"。

  • 第20题:

    有以下程序 include void fun(char *t,char *s) { while(*t!=0) t++; while((*t++=*s

    有以下程序

    #include <stdio.h>

    void fun(char *t,char *s)

    { while(*t!=0) t++;

    while((*t++=*s++)!=0);

    }

    main( )

    { char ss[10]="acc",aa[10]="bbxxyy";

    fun(ss,aa); printf("%s,%s\n",ss,aa);

    }

    程序的运行结果是

    A.accxyy,bbxxyy

    B.acc,bbxxyy

    C.accxxyy,bbxxyy

    D.accbbxxyy,bbxxyy


    正确答案:D
    解析:本题中fun函数实现了字符串函数strcat的功能,将字符串aa连接到字符串ss的末尾。调用fun函数时,形参t和s分别指向了字符串ss和aa,然后通过一个while循环使t指向字符串ss的结束符的位置,第二个while循环将字符串aa中的字符(包括结束符“\0”)逐个复制到字符串ss的末尾处。

  • 第21题:

    有以下程序:include void swap(char * x,ehar * y){ char t;t= *x; *x: *y; *y=t;main

    有以下程序:#include <stdio.h>void swap(char * x,ehar * 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,abe

    B.abe,123

    C.1bc,a23

    D.321,cba


    正确答案:C
    解析:C语言中,字符串常量在内存中是以字符数组的形式存放的,形参字符指针x和y指向的是各字符串的首地址,在swap函数中,*x与*y交换的是字符串的第一个字符,即字符'a'与'1'的交换,而字符串中其他字符保持不变。

  • 第22题:

    下面程序输出的结果是()。includemain(){char *a="1234";fun(a);printf("\n");}fun(cha

    下面程序输出的结果是( )。 #include<stdio.h> main() { char *a="1234"; fun(a); printf("\n"); } fun(char *s) { char t; if(*s) { t=*S++;fun(s);} else return; if(t!='\0') putchar(t); }

    A.1234

    B.4321

    C.1324

    D.4231


    正确答案:B
    解析:本题的fun()函数是用递归法实现逆序输出一个字符串。函数中首先定义一个局部变量t,然后s所指的内容是否为字符串结束符,不是的话将s所指的内容赋给t,同时使s后移一位,然后递归调用fun(s)。到这条语句为止是递归过程,即接下来连续递归调用fun(s)都只会执行到这一半,直到回朔条件(s所指内容是字符串结束符)出现,fun()函数连续返回,判断t不等于0的话,就输出t,所以输入的字符串被逆序输出,故本题的正确答案应该是B。

  • 第23题:

    单选题
    有以下程序#include void fun(char *t,char *s){ while(*t!=0)t++; while((*t++=*s++)!=0);}main(){ char ss[10]="acc",aa[10]="bbxxyy"; fun(ss,aa); printf("%s,%s",ss,aa);}程序的运行结果是(  )。
    A

    accbbxxyy,bbxxyy

    B

    acc,bbxxyy

    C

    accxxyy,bbxxyy

    D

    accxyy,bbxxyy


    正确答案: C
    解析:
    函数fun的功能是将第二个字符串链接到第一个字符串的末尾,第二个字符串不变。答案选择A选项。