niusouti.com

以下函数的功能是( )。fun(char *p2, char *p1) { while((*p2=*p1)!='\0'){ p1++;p2++; }}A、将p1所指字符串复制到p2所指内存空间中B、将p1 所指字符串的地址赋给指针 p2C、对p1和p2两个指针所指字符串进行比较D、检查p1和p2两个指针所指字符串中是否有‘\0’

题目
以下函数的功能是( )。fun(char *p2, char *p1) { while((*p2=*p1)!='\0'){ p1++;p2++; }}

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

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

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

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


相似考题
更多“以下函数的功能是( )。fun(char *p2, char *p1) { while((*p2=*p1)!='\0'){ p1++;p2++; }} ”相关问题
  • 第1题:

    下列程序的运行结果是【 】。 include include void main() {char * a[5

    下列程序的运行结果是【 】。

    include<iostream. h>

    include<string. h>

    void main()

    {

    char * a[5]={"stuent","worker","teacher","soldier"," peasant"};

    char * p1, * p2;

    p1=p2=a[0]

    for(int i=0;i<5;i++)

    {

    if(strcmp(a[i],p1)>0)

    p1=a[i];

    if(strcmp(a[i],p2)<0)

    p2=a[i];

    }

    cout<<p1<<","<<p2<<endl;

    }


    正确答案:workerpeasant
    worker,peasant 解析:分析本题的for循环体内的语句可知,p1和p2将放置最大和最小的字符串,这里的比较是以第一个字符值为基准的。

  • 第2题:

    有以下程序

    void fun(char *a, char *b)

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

    main()

    { char c1='A',c2='a',*p1,*p2;

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

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

    }

    程序运行后的输出结果是

    A.Ab

    B.aa

    C.Aa

    D.Bb


    正确答案:A
    解析:本题考查了地址的调用。在子函数fun()中,a,b分别存储的是存放“A”,“a,,两个字符所在存储单元的地址。但在子函数中直接改变了指针变量a所指存储单元(a=b,即b所指单元)中的值,使其变为“b”,故子函数执行结束时,c1的值不变,c2的值改变。

  • 第3题:

    以下程序includeincludemain(){char*p1="abc",*p2="ABC",str[50]="xyz", s

    以下程序 #include<stdio.h> #include<string.h> main() { char*p1="abc",*p2="ABC",str[50]="xyz", strcpy(str+2,strcat(p1,p2)); printf("%s\n",str); } 的输出是______。

    A.xyzabcABC

    B.zabcABC

    C.yzabcABC

    D.xyabcABC


    正确答案:D
    解析:strcat(p1,p2)将字符串abcABC放到了*p1所指向的存储单元中;strcpy在本题将abcABC复制到str+2所指向的存储单元中,即覆盖原str数组中的字符z及其后的所有字符,故str的值为“xyabcABC”。

  • 第4题:

    下面程序的输出结果是 include includevoid main( ) { char p1[10] ,p2

    下面程序的输出结果是

    #include<iostream.h>

    #include<string.h>

    void main( )

    {

    char p1[10] ,p2[10] ;

    strcpy(p1,"abc") ;

    strcpy(p2,"ABC") ;

    char str[50] ="xyz";

    strcpy(str+2,strcat(p1,p2) ) ;

    cout < < str;

    }

    A.xyzabcABC

    B.zabcABC

    C.xyabcABC

    D.yzabcABC


    正确答案:C
    解析:该函数的调用方式是strcpy(字符数组,字符串) ,其中“字符串”可以是串常量,也可以是字符数组。函数的功能是将“字符串”完整地复制到“字符数组”中,字符数组中原有内容被覆盖。使用该函数时注意:①字符数组必须定义得足够大,以便容纳复制过来的字符串。复制时,连同结束标志'\0'一起复制。②不能用赋值运算符“=”将一个字符串直接赋值给一个字符数组,只能用strcpy( ) 函数来处理。strcat (字符数组,字符串) 的功能是把“字符串”连接到“字符数组”中的字符串尾端,并存储于“字符数组”中。“字符数组”中原来的结束标志被“字符串”的第一个字符覆盖,而“字符串”在操作中未被修改。使用该函数时注意:①由于没有边界检查,编程者要注意保证“字符数组”定义得足够大,以便容纳连接后的目标字符串;否则,会因长度不够而产生问题。②连接前两个字符串都有结束标志'\0',连接后“字符数组”中存储的字符串的结束标志'\0'被舍弃,只在目标串的最后保留一个'\0'。

  • 第5题:

    下面程序的输出结果是includeincludevoid main( ){char p1[10],p2[10]s

    下面程序的输出结果是 #include<iostream.h> #include<string.h> void main( ) { char p1[10],p2[10] strcpy(p1,"abc"); strcpy(p2,"ABC"); char str[50]="xyz"; strcpy(str+2,strcat(p1,p2));

    A.xyzabcABC

    B.zabcABC

    C.xyabcABC

    D.yzabcABC


    正确答案:C
    解析:该函数的调用方式是strcpy(字符数组,字符串)其中“字符串”可以是串常量,也可以是字符数组。函数的功能是将“字符串”完整地复制到“字符数组”中,字符数组中原有内容被覆盖。使用该函数时注意:①字符数组必须定义得足够大,以便容纳复制过来的字符串。复制时,连同结束标志'\0'一起复制。②不能用赋值运算符“=”将一个字符串直接赋值给一个字符数组,只能用strcpy()函数来处理。strcat (字符数组,字符串)功能是把“字符串”连接到“字符数组”中的字符串尾端,并存储于“字符数组”中。“字符数组”中原来的结束标志,被“字符串”的第一个字符覆盖,而“字符串”在操作中未被修改。使用该函数时注意:①由于没有边界检查,编程者要注意保证“字符数组”定义得足够大,以便容纳连接后的目标字符串;否则,会因长度不够而产生问题。②连接前两个字符串都有结束标志'\0',连接后“字符数组”中存储的字符串的结束标志'\0'被舍弃,只在目标串的最后保留一个'\0'。

  • 第6题:

    下面程序的输出结果为______。includemain(){char p1[7]="abc",p2[]="ABC",str[50]="x

    下面程序的输出结果为______。 #include<string.h> main() { char p1[7]="abc",p2[]="ABC",str[50]="xyz"; strcpy(str,strcat(p1,p2)); printf("%s",str); }

    A.xyzabcABC

    B.abcABC

    C.xyzabc

    D.xyzABC


    正确答案:B
    解析:strcpy(str1,s1):作用是将字符串s1拷贝到字符数组str1中去。strcat(字符数组1,字符数组2):把字符串2接到字符串1的后面,结果放在字符数组1中,函数调用后返回字符数组1的地址。本题定义了三个字符数组p1,p2,str,strcat(p1,p2)函数的作用是将字符串数组p2接到字符串p1的后面,结果放在字符数组p1,再通过strcpy()函数将该字符串拷贝到str数组中,原str数组中的字符串xyz被覆盖,因此打印输出字符串str即可得到abcABC。

  • 第7题:

    下面程序的输出是______。 fun(char *s,int p1,int p2) { char c; while(p1<p2) { c=s[p1];s[p1]=s[p2];s[p2]=c;p1++;p2--;} } main() { char a[]="ABCDEFG",k,*p; fun(a,0,2);fun(a,4,6); printf("%s\n ",a); }

    A.ABCDEFG

    B.DEFGABC

    C.GFEDCBA

    D.CBADGFE


    正确答案:D
    解析:本题主要通过while循环对满足条件的元素进行交换。

  • 第8题:

    下面程序的输出结果是()。includeincludevoid main(){char p1[10],p2[10

    下面程序的输出结果是( )。 #include<iostream.h> #include<string.h> void main() { char p1[10],p2[10]; strcpy(p1,”abc”); strcpy(p2,”ABC”); charsty[50]=“xyz”; strcpy(str+2,strcat(p1,p2)); cout<<str; }

    A.xyzabcABC

    B.zabcABC

    C.xyabcABC

    D.yzabcABC


    正确答案:C
    解析: 该函数的调用方式是strcpy(字符数组,字符串)其中”字符串”可以是串常量,也可以是字符数组。函数的功能是将”字符串”完整地复制到”字符数组”中,字符数纽中原有内容被覆盖。使用该函数时注意:①字符数组必须定义得足够大,以便容纳复制过来的字符串。复制时,连同结束标志,’\0’一起复制。②不能用赋值运算符”=”将一个字符串直接赋值给一个字符数组,只能用strcpy()函数来处理。strcat(字符数组,字符串)功能是把”字符串”连接到”字符数组”中的宇符串尾端,并存储于”字符数组”中。”字符数组”中原来的

  • 第9题:

    有以下程序

    #include<stdio.h>

    #include<string.h>

    void fun(char *w,int m)

    { char s,*p1,*p2;

    p1=w;p2=w+m-1;

    while(p1<p2){s=*p1;*p1=*p2;*p2=s;p1++;p2--;}

    }

    main()

    { char a[]="123456";

    fun(a,strlen(a));puts(a);

    }

    程序运行后的输出结果是

    A.654321

    B.116611

    C.161616

    D.123456


    正确答案:A
    解析:strlen函数的作用是计算字符串的长度,不包括'\0'在内。所以形参m的值为6,根据fun函数中pl和p2的赋值一个指向第一个字符'1',一个指向最后一个字符'6'。然后比较大小,且根据条件互换,直到条件为假跳出循环。第一次循环后为623451,第二次653421,第三次654321。即fun函数实现将一个字符串逆序存放。所以答案为A)。

  • 第10题:

    有以下程序:includevoid fun(char *a, char *b){ a=b;(*a)++;}main(){char c1='A',c2=

    有以下程序: #include <stdio.h> void fun(char *a, char *b) { a=b; (*a)++;} main() { char c1='A',c2='a',*p1,*p2; p1=&c1; P2=&c2; fun(p1,p2); printf("%c%c\n",c1,c2); } 程序运行后的输出结果是( )。

    A.Ab

    B.aa

    C.Aa

    D.Bb


    正确答案:A
    解析:本题中fun函数的形参是两个指向字符型数据的指针,其功能是把b赋给a,然后将a所指存储单元里的变量值加1。在main函数中,p1里存放的是c1的地址,p2里存放的是c2的地址,经函数调用fun(p1,P2)后,p2的值赋给了p1,使p1和p2都指向了c2,而(*a)++又使'a'的值加1变成了'b',所以此时c2的值为'b',而c1的值没变,仍为'A'。程序改变的是p1的地址和c2的值。

  • 第11题:

    以下与库函数strcpy(char*p1,char*p2)功能不相等的程序段是()

    • A、strcpyl(char*p1,char*p2){while((p1++=p2++)!=’/0’);}
    • B、strcpy2(char*pl,char*p2){while((*p1=*p2)!=’/0’)pl++,p2++;}
    • C、strcpy3(char*pl,char*p2){while((*p1++=*p2++);)
    • D、strcpy4(char*p1,char*p2){whi1e(*p2)*pl++=*p2++;}

    正确答案:D

  • 第12题:

    单选题
    有以下程序(其中的strstr()函数头部格式为:char *strstr(char *p1,char *p2)确定p2字符串是否在p1中出现,并返回p2第一次出现的字符串首地址):#include #include char *a=you;char *b=Welcome you to Beijing!;main(){ char *p; p=strstr(b,a)+strlen(a)+1; printf(%s,p);}程序的运行结果是(  )。
    A

    to Beijing!

    B

    you to Beijing!

    C

    Welcome you to Beijing!

    D

    Beijing!


    正确答案: A
    解析:
    调用strstr函数,返回值为a指向的字符串在b指向的字符串中第一次出现的位置,并将此地址赋给指针p。strlen()函数求字符串的实际长度(不包含结束标志)。strstr函数返回的地址下标值为8,加上a长度3,再加1,指针P指向的地址下标值为12,输出:to Beijing!,答案选择A选项。

  • 第13题:

    请补充函数fun(),该函数的功能是判断一个数是否为回文数。当字符串是回文时,函数返回字符申:yes!,否则函数返回字符串:no!,并在主函数中输出。所谓回文即正向与反向的拼写都一样,例如:abcba。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。

    试题程序:

    include<string.h>

    include<stdio.h>

    char *fun(char*str)

    {

    char *p1,*p2;

    int i, t=0;

    p1=str;p2=str+strlen(str)-1;

    for (i=0;【 】;i++)

    if(【 】)

    {

    t=1;

    break;

    }

    if (【 】)

    return("yes!");

    else

    return("no!");

    }

    main()

    {

    char str[50];

    printf("Input;");

    scanf("%s",str);

    printf("%s\n",fun(str));

    }


    正确答案:i=strlen(sb)/2或istrlen(sw)/2 *p1++!=*p2-- t==20
    i=strlen(sb)/2或istrlen(sw)/2 *p1++!=*p2-- t==20 解析:第一空:判断回文数就是将第一个字符与最后—个字符比较,第二个字符与倒数第二个字符进行比较,依此类推,直到中间的字符,如果比较的结果都是相同,则这个字符串就是回文数,否则不是。所以比较的次数是strlen(str)/2。第二空:指针p1从第一个字符向后移动,指针p2从最后一个字符向前移动,如果两字符不相同,则说明此字符串不是回文数,将标记变量t置为1。第三空:变量t用来标记此字符串是否为回文数,当t为0时,表示字符串是回文数,当t为1时,表示字符串不是回文数。

  • 第14题:

    以下程序的输出结果是______。main(){ char a[]="programming",b[]="language"; char *p1,*p2; int i; p1=a;p2=b; for(i=0;i<7;i++) if(*(p1+i)==*(p2+i))printf("%c",*(p1+i));}

    A.gm

    B.rg

    C.or

    D.ga


    正确答案:D

  • 第15题:

    有以下程序 void fun(char *a,char *b) { a=b; ( *a)++; } main() {char cl='A',c2='a',*p1,*p2; p1=&c1;p2:&c2; fun(p1,p2); printf("%c%c\n",c1,c2); } 程序运行后的输出结果是

    A.Ab

    B.aa

    C.Aa

    D.Bb


    正确答案:A
    解析:指针作为函数参数的运用,经过分析得知fun()函数的功能:将形参 a指向形参b所指的存储空间,然后使形参a指向变量的值加1。在主函数中定义了字符型指针变量p1和p2,并让它们分别指向“c1和c2。然后将p1、p2作为实参传递给形参a、 b。在fun()函数中,首先让指针变量p1指向P2,然后P1指向的存储空间的值加1,即让变量c2加1为“b”,而c1的值没有被改变,仍然是“A”。

  • 第16题:

    以下程序includeincludemain(){ char*p1="abc",*p2=-"ABC", str, [50]="xy

    以下程序#include<stdio.h>#include<string.h>main(){ char*p1="abc",*p2=-"ABC", str, [50]="xyz"; strcpy(str+2,strcat(p1,p2)); printf("%s\n", str);}

    A.xyzabcABC

    B.zabcABC

    C.yzabcABC

    D.xyabcABC


    正确答案:D
    解析:strcat(p1,p2)将字符串abcABC放到了*p1所指向的存储单元中;strcpy在本题将abcABC复制到sir+2所指向的存储单元中,即覆盖原str数组中的字符z及其后的所有字符,故str的值为“xyabcABC”。

  • 第17题:

    有以下程序:void fun(char* a,char* B) ;{a=b;(*A) ++;}main(){charc1='A',c2='a',*p1,*p2;p1=&a

    有以下程序: void fun(char* a,char* B) ; { a=b; (*A) ++; } main() { char c1='A',c2='a',*p1,*p2; p1=&cl; p2=&c2: fun(p1,p2); printf("%c%c\n",c1,c2); } 程序运行后的输出结果是

    A.Ab

    B.aa

    C.Aa

    D.Bb


    正确答案:A
    解析:经过分析得知fun()函数的功能:将形参9指向形参b所指的存储空间,然后使形参a指向变量的值加1。在主函数中定义了字符型指针变量p1和p2,并让它们分另别指向c1和c2.然后将p1、p2作为实参传递给形参a、b.在fun()函数中,首先让指针变量p1向p2,然后p1指向的存储空间的值加1,即让变量c2加1为“b”,而c1的值没有被改变,仍然是“A”。所以,4个选项中选项A符合题意。

  • 第18题:

    有以下程序:void fun (char *a,char *b){a=b;(*a)++;}main(){char cl='A',c2='a',*p1,*p2;p1=&am

    有以下程序: void fun (char *a,char *b) { a=b;(*a)++;} main() { char cl='A',c2='a',*p1,*p2; p1=&c1;p2=&c2;fun (p1,p2); printf("%c,%c\n",c1,c2); } 程序运行后的输出结果是( )。

    A.Ab

    B.aa

    C.Aa

    D.Bb


    正确答案:A
    解析:经过分析得知fun()函数的功能:将形参a指向形参b所指的存储空间,然后使形参a指向变量的值加1。在主函数中定义了字符型指针变量p1和p2,并让它们分别指向c1和c2。将p1、p2作为实参传递给形参a、b。在fun()函数中,首先让指针变量p1指向p2,然后p1指向的存储空间的值加1,即让变量c2加1为b,而c1的值没有被改变,仍然是A。所以,4个选项中选项A符合题意。

  • 第19题:

    已定义以下函数 fun(char*p2,char*p1) { while((*p2=*pl)!='\0'){p1++;p2++;}} 函数的功能是

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

    B.将p1所指字符串的地址赋给指针p2

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

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


    正确答案:A
    解析:在本题中,while((*p2=*p1)!='\0')有两个作用,一个是判断条件是否成立以决定是否再次进入循环,另一个作用是判定前先完成*p2=*p1,该处的作用是把p1所指存储单元的字符逐一送p2所指存储单元中,直到p1所指单元内容为'\0'为止。

  • 第20题:

    有以下程序: #include<stdio.h> #include!(string.h> void fun(char*w,int m) { char S,*pl,*p2; p1=w;p2=w+m-; while(pl<p2){s=*pl; *p1=*p2; *p2=s;pl++;p2-;} } main( ) { char a[]="l23456"; fun(a,strlen(a));puts(a); } 程序运行后的输出结果是( )。

    A.654321

    B.116611

    C.161616

    D.l23456


    正确答案:A
    此题是需要将a[]中的数值倒过来进行输出,所以答案为A。

  • 第21题:

    以下程序运行后的输出结果是______。 main() { char a[]="ABCDEFGH",b[]="abCDefGh"; char*p1,*p2;int k; p1=a;p2=b; for(k=0;k<=7;k++) if*(p1+k)==*(p2+k))printf("%c",*(p1+k)); printf("\n"); }

    A.ABCDEFG

    B.CDG

    C.abcdefgh

    D.abCDefGh


    正确答案:B

  • 第22题:

    试题35

    有以下程序

    #include <stdio.h>

    #include <string.h>

    void fun(char *w,int m)

    { char s, *p1, *p2;

    p1=w; p2=w+m-1;

    while(p1<p2){s=*p1; *p1=*p2; *p2=s; p1++; p2- -;}

    }

    main()

    { char a[]=”123456”;

    fun(a, strlen(a)); puts(a);

    }

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

    A.654321

    B.116611

    C.161616

    D.123456


    正确答案:A
    试题35分析
    while(p1<p2){s=*p1; *p1=*p2; *p2=s; p1++; p2- -;}的作用是将字符串中的字符进行首尾交换,即相当于将原来的字符串倒序输出。
    试题35答案
    A

  • 第23题:

    单选题
    有以下程序:#include #include #include main(){ char*p1,*p2; p1=p2=(char*)malloc(sizeof(char)*10); strcpy(p1,malloc); strcpy(p2,p1+1); printf(%c%c, p1[0], p2[0]);}程序的运行结果是(  )。
    A

    aa

    B

    ma

    C

    am

    D

    mm


    正确答案: B
    解析:
    malloc函数的原型为:malloc(size);,函数的作用是在内存的动态存储区申请分配一个长度为size的连续空间。程序执行过程为:定义两个字符类型指针p1和p2,动态开辟10个字符类型的内存单元,并且使指针p1与p2均指向这10个内存单元的第一个单元。调用strcpy函数,将字符串“malloc”赋值给这10个内存单元的前7个单元,存储情况为:malloc\0,此时p1指向10个内存单元的第一个单元。再次调用strcpy函数,这10个内存单元的第2个单元到第7个单元元素重新赋值给p2指向的内存单元以及以后的5个单元,存储情况为:alloc\0\0,此时p1和p2均指向10个内存单元的第一个单元。输出两个指针指向单元的数据值,结果为:aa,答案选择A选项。