使用VC++6.o打开考生文件夹下的源程序文件2.cpp。请完成函数fun(char*str1,char*str2),此函数的功能是计算str1中出现str2的个数,当不出现时,则返回0。 例如: str1为“asdfsfdfg” str2为“sf”则返回1 str2为“df”则返回3 注意:不能修改函数的其他部分。 试题程序: include<iostream.h> //注意只能使用int类型,不能类型转换 intfun(char*str1,char*str2) { } voidmain() { cha

题目

使用VC++6.o打开考生文件夹下的源程序文件2.cpp。请完成函数fun(char*str1,char*str2),此函数的功能是计算str1中出现str2的个数,当不出现时,则返回0。 例如: str1为“asdfsfdfg” str2为“sf”则返回1 str2为“df”则返回3 注意:不能修改函数的其他部分。 试题程序: include<iostream.h> //注意只能使用int类型,不能类型转换 intfun(char*str1,char*str2) { } voidmain() { charstr1[1024]; charstr2[256]; cout<<"pleaseinputastring:"<<endl; cin.getline(str1,1024); cout<<"pleaseinputotherstring;"<<endl cin.getline(str2,256); cout<<fun(str1,str2); cout<<endl; return; }


相似考题
更多“使用VC++6.o打开考生文件夹下的源程序文件2.cpp。请完成函数fun(char*str1,char*str2),此函数的功能是计算str1中出现str2的个数,当不出现时,则返回0。 例如: str1为“asdfsfdfg” str2为“sf”则返回1 str2为“df”则返回3 注意:不能修改函数的其他部分。 试题程序: includeiostream.h //注意只能使用int类型,不能类型转换 intfun(char*str1,char*str2) { } voidmain() { chars”相关问题
  • 第1题:

    请补充main函数,该函数的功能是:从一个字符串中截取前面若干个给定长度的子字符串。其中,str1指向原字符串,截取后的字符存放在str2所指的字符数组中,n中存放需截取的字符个数。

    例如:当str1=“cdefghij”,然后输入4,则str2=“cdef”。

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

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

    试题程序:

    include<stdio.h>

    include<conio.h>

    define LEN 80

    main()

    {

    char str1[LEN),str2[LEN);

    int n,i;

    clrscr();

    printf(“Enter the string:\n”);

    gets(str1);

    printf“Enter the position of the string

    deleted:”);

    scanf(【 】);

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

    【 】

    str2[i]=‘\0’;

    printf(“The new string is:%s\n”,【 】);

    }


    正确答案:"%d"&n str2[i]=str1[i] str2
    "%d",&n str2[i]=str1[i] str2 解析:第一空:本题考查对标准输入函数scanf()的调用格式,由后面的程序可以知道,变量n保存了要截取的字符数,注意在n前面不要忘了取址符‘&’。第二空:截取前n个字符,就是将字符串str1的前n个字符依次赋给字符串str2的前n个字符。第三空:本题考查对标准输出函数printf()的调用格式,根据题意,应输出截取后的字符串,即字符串str2。

  • 第2题:

    请补充函数fun(),该函数的功能是:把从主函数中输入的字符串str2接在字符串str1的后面。

    例如:str1=“How do”,str2=“you do?”,结果输出: How do you do?

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

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

    试题程序:

    include<stdio.h>

    include<conio.h>

    define N 40

    void fun(char*str1,char *str2)

    {

    int i=0;

    char *pl=str1;

    char*p2=str2;

    while(【 】)

    i++;

    for(;【 】;i++)

    *(p1+i)=【 】;

    *(p1+i)='\0';

    }

    main()

    {

    char str1[N],str2[N);

    clrscr();

    printf("*****Input the string str1 & Str2*****\n");

    printf("\nstr1:");

    gets(str1);

    printf("\nstr2:");

    gets(str2);

    printf("**The string str1 & str2**\n");

    puts(str1);

    puts(str2);

    fun(str1,str2);

    printf("*****The new string *****\n");

    puts(str1);

    }


    正确答案:*(p1+i) *p2 *p2++
    *(p1+i) *p2 *p2++ 解析:第一空:变量i用来记录字符串str1的长度,当指针指列宁符串str1结束标志符‘\0’时,while循环结束,变量 i停止累加。第二空:指针p2指向字符串str2,通过for循环将字符中str2按在str1后面,循环结束的条件是指针p2所指的字符是字符串结束标志符‘\0’。第三空:指针p2最初指向字符串str2的首字符,通过自加1,使指针p2依次向后移动,指向str2的各个字符,实现将宁符串str2接在str1后面的功能。

  • 第3题:

    阅读以下程序说明和C程序,将应填入(n)处的子句,写在对应栏内。

    【程序说明】

    函数int commstr(char * str1,char * str2,int * sublen)从两已知字符串str1和str2中,找出它们的所有最长的公共子串。如果最长公共子串不止1个,函数将把它们全部找出并输出。约定空串不作为公共子串。

    函数将最长公共子串的长度送入由参数sublen所指的变量中,并返回字符串str1和str2的最长公共子串的个数。如果字符串str1和str2没有公共子串,约定最长公共子串的个数和最长公共子串的长度均为0。

    【程序】

    int strlen(char * s)

    {char *t=s;

    while( * ++);

    return t-s-1;

    }

    int commstr(char) *str1,char *str2,int *sublen

    { char*s1, *s2;

    int count=0,len1 ,len2,k,j,i,p;

    len1:=strlen(str1)

    len2 = strlen(str2);

    if(len1>len2)

    {s1=str1 ;s2=str2;}

    else {len2 = len1;s1 = str2;s2 = str1;}

    for(j=len2;j>0;j--) /*从可能最长子串开始寻找*/

    {for(k=0;(1)<:len2;k++) /*k为子串s2的开始位置*/

    {for(i=0;s1[(2)]!='\0';i++;) /*i为子串s1的开始位置*/

    { /*s1的子串与s2的子串比较*/

    for (p=0;p<j)&&(3);p++);

    if ((4)) /*如果两子串相同*/

    {for(p=0);p<j;p++} /*输出子串*/

    printf ("%c",s2[k+p]);

    printf ("\n");

    count++;/*计数增1 */

    }

    }

    }

    if (count>0) break;

    *sublen=(count>0)?(5):0;

    return count;

    }


    正确答案:(1)k+j (2)i+j-1 (3)s1[i+P]==s2[k+P] (4)P==j或p>=j (5)j
    (1)k+j (2)i+j-1 (3)s1[i+P]==s2[k+P] (4)P==j或p>=j (5)j

  • 第4题:

    下面函数的功能是 char*fun(char*strl,char*str2) { while((*strl)&&(*str2++=*strl++)); return str2;}

    A.求字符串的长度

    B.比较两个字符串的大小

    C.将字符串str1复制到字符串str2中

    D.将字符串str1接续到字符串str2中


    正确答案:C
    解析:while语句的一般形式为:while(表达式)语句;其中表达式是循环条件,语句为循环体,while语句的语义是:计算表达式的值,当值为真(非0)时,执行循环体语句。本题中逻辑与符号连接的表达式值为真,*str2++=*strl++语句是将strl的内容逐个复制到str2字符串。

  • 第5题:

    阅读下列程序,写出程序的运行结果【】。 include void main() { charstr1[ ]: "Hello,

    阅读下列程序,写出程序的运行结果【 】。

    include<iostream. h>

    void main() { char str1[ ]: "Hello, World?;

    char str2[100];

    int i=0;

    do{

    if (str1[i]>= 'a'&& str1[i]<= 'z' )

    str2[i]=str1[i]-32;

    else

    str2[i]=strl [i];

    i++;

    }while(strl[i]!='\0');

    str2[i]='\0';

    cout<<str1<<end1;

    cout<<str2<<end1;

    }


    正确答案:Hello World! HELLO WORLD!
    Hello, World! HELLO, WORLD!

  • 第6题:

    下列给定程序中,函数proc的功能是:首先把b所指字符串中的字符按逆序存放,然后将str1所指字符串中的字符和Str2所指字符串中的字符,按排列的顺序交叉合并到str所指数组中,过长的剩余字符接在str所指数组的尾部。例如,当str1所指字符串中的内容为ABCDEFG,str2 所指字符串中的内容为1234时,str所指数组中的内容应该为A483C2D1EFG;而当str1所指字符串中的内容为1234,str2所指字符串中的内容为ABCEDFG时,str所指数组中的内容应该为1G2F31:4DCBA。 请修改程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: include<stdlib.h> include<conio.h> include<stdio。h> include<string.h> void proc(char*strl,char*str2,char*str) { int i,j;char ch; i=0;j=strleu(str2)-1; //****found**** while(i>j) { ch=str2[i];str2[i]=str2[j];str2[j]=ch; i++;j--; } while(*str1||*str2) { if(*str1){*str=*str1;str++;str1++;) if(*str2){*str=*str2;str++;str2++;) } //****found**** *str=0: } void main { char s1[100],s2[100],t[200]; system("CLS"); printf("\nEnter s1 string:"); scanf("%s",sl); printf("\nEnter s2 string:"); scanf("%s",s2); proc(s1,s2,t); printf("\nThe result is:%s\n",t); }


    正确答案:

    (1)错误:while(i>j)
    正确:while(i<j)
    (2)错误:*str=0;
    正确:*str='\0 ';
    【解析】由函数proc可知,变量i和j分别存放的是字符串str前面和后面第i个字符的位置,当i<j时,两个位置的字符交换。因此,“while(i>j)”应改为“while(i<j)”;交叉合并完成后,要为新的字符串添加结束符,因此,“*str= 0;”应改为“*str='\0';”,

  • 第7题:

    下列语句中,正确的是______。

    A.static char str[]="China";

    B.static char str[];str="China";

    C.static char str1[5],str2[]={"China"};strl=str2;

    D.static char str1[],str2[];str2={"China"};strcpy(str1,str2);


    正确答案:A

  • 第8题:

    以下选项中,属于合法语句的是( )。

    A.char nm[10]; nm="C Program";

    B.char str1[10]="computer",str2[10]; str2=str1;

    C.char str[7]="siring!";

    D.char sp[]="Hello!";


    正确答案:D
    解析:本题考查字符串数组的定义和初始化,属于概念考查类型的题目。A选项中,"CProgram"这个字符串常量在赋值过程中给出的是这个字符串在内存中所占连续存储单元的首地址,而nm是不可直接赋值的数组名,因此A选项中的语句不合法。B选项,C++不支持数组之间的直接赋值,所以也不正确。C选项,表面上没有错,但仔细看一下会发现,定义时数组长度为7,而赋值的字符串常量的个数为8,最终导致越界,所以也不合法。

  • 第9题:

    在下列语句中,正确的是( )

    A.static char str[]="China";

    B.static char str[];str="China";

    C.static char str1[5],str2[]={"China"};str1=str2;

    D.static char str1[],str2[];str2={"China"};strcpy(str1,str2);


    正确答案:A

  • 第10题:

    下列程序的输出结果是 ()。 #include  #include   main( ) {    int i=0;    char str1[10]=“1234”, str2[10]= “567”;    strcat(str1,str2);    while(str2[i++]!=‘/0’)     str2[i]=str1[i];    puts(str2);   }


    正确答案:5234567

  • 第11题:

    设已定义:char str1[10],str2[10]=”Fujian”;则能将字符串”Fujian”赋给数组str1的正确语句是()

    • A、str1=”Fujian”
    • B、strcpy(str1,str2)
    • C、strcpy(str2,str1)
    • D、str1=str2

    正确答案:B

  • 第12题:

    单选题
    设已定义:char str1[10],str2[10]=”Fujian”;则能将字符串”Fujian”赋给数组str1的正确语句是()
    A

    str1=”Fujian”

    B

    strcpy(str1,str2)

    C

    strcpy(str2,str1)

    D

    str1=str2


    正确答案: A
    解析: 暂无解析

  • 第13题:

    阅读下列函数说明和C函数,将应填入(n)处的字句写在对应栏内。

    [函数2.1说明]

    函数strcpy的功能是将字符串str2的内容复制到字符申str1。

    [函数2.1]

    (1) strcpy (char *slr1, const char *str2)

    { char * temp;

    while( * str2!='\0') *cp++ =(2);

    (3)='\0';

    return str1;

    }

    [函数2.2说明]

    函数int strcmp(const char *str1, const char *str2)的功能是按字典序比较两个字符串str1和str2的大小。当str1<str2时返回-1,当str1>str2时返回1,否则返回0。

    [函数2.2]

    int strcmp(const char *str1, const char *str2)

    { while( *str1= =* str2) {

    if(* s1= =(4)) return 0;

    s1++;

    (5);

    }

    if( *str1<*str2) return -1;

    return 1;

    }


    正确答案:char * (2) * str2++ (3) * cp (4) ‘\0’ (5) s2++或 ++s2
    char * (2) * str2++ (3) * cp (4) ‘\0’ (5) s2++或 ++s2 解析:(1)根据函数说明,char *是函数strcpy的返回值类型;
    (2)while循环是字符串复制的关键,它将str2的字符一个个复制到cp;
    (3)字符复制完成后,应在字符串cp的末尾添加结束符;
    (4)~(5):while循环的功能是从字符串首开始逐个比较str1和str2的每一字符,如果循环一直执行到两字符串末尾,则说明两串相等,应返回0值。

  • 第14题:

    请补充函数fun,该函数的功能是比较字符串str1和str2的大小,井返回比较的结果。

    例如: 当str1=“cdef",str2=“cde”时,函数fun()返回“>”。

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

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

    试题程序:

    include< stdio, h>

    include<conio. h>

    define N 80

    char *fun (char *str1,char *str2)

    {

    char *p1=str1, *p2=str2;

    while (*p1 & & *p2 )

    {

    if (【 】)

    return "<";

    if(【 】)

    return ">";

    p1++;

    p2++;

    }

    if (*p1=*p2)

    return "==";

    if (*p1==【 】)

    return "<";

    else

    return ">";

    }

    main()

    {

    char str1 [N], str2 [N];

    clrscr ();

    printf ("Input str1: \n");

    gets (str1);

    printf ("Input str2: \n");

    gets (str2);

    printf ("\n*****the result*****\n");

    printf ("\nstr1 %s str2", fun (str1, str2) );

    }


    正确答案:*p1*p2 *p1>*p2 \0’
    *p1*p2 *p1>*p2 \0’ 解析:第一空:比较两个字符串的大小,是从第一个字符开始比较,如果两字符不相等,则由字符的大小决定字符串 P2指向字符串str2,如果p1所指的字符小于p2所指的字符,则字符串str1小于字符串str2。第三空:如果p1所指的字符大于p2所指的字符,则字符串str1 大于字符串str2。第三空:如果str1是str2 的前一部分,则str1 的所有字符都等于str2 中的对应字符,而字符串结束标记符‘\0’小于其他字符,所以,这里如果p1所指的字符等于‘\0’,则表示字符串str1小于字符串str2。

  • 第15题:

    请补充main函数,该函数的功能是:从键盘输入一个字符串并保存在字符str1中,把字符串str1中下标为偶数的字符保存在字符串str2中并输出。例如,当str1=“cdefghij”,则 str2=“cegi”。

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

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

    试题程序:

    include<stdio.h>

    include<conio.h>

    define LEN 80

    main()

    {

    char str1[LEN],str2 [LEN];

    char *p1=str1,*p2=str2;

    int i=0,j=0;

    clrscr();

    printf("Enter the string:\n");

    scanf(【 】);

    printf("***the origial string***\n");

    while(*(p1+j))

    {

    printf("【 】",*(p1+j));

    j++;

    }

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

    *p2++=*(str1+i);

    *p2='\0';

    printf("\nThe new string is:%s\n", 【 】 );

    }


    正确答案:"%s"str1 %c str2
    "%s",str1 %c str2 解析:第一空:本题考查对标准输入函数scanf()的调用格式,当输入字符串时,格式控制字符串为“%s”,题目要求输入的字符串保存在str1中,所以地址表列应为字符串的首地址,即为str1。第二空:本题考查对标准输出函数printf()的调用格式,当输出为字符型变量时,格式控制字符串为“%c”。第三空:题目要求将str1中下标为偶数的字符保存在字符串str2中并输出,所以ptintf()函数的输出表列是str2。

  • 第16题:

    语句定义如下: char strl[50],str2[20],ch; 则下列语句正确的是______。

    A.str1={"Crazy"}; str2=str1;

    B.str1={"Crazy"}; str2={"English"}; strcpy(str1,str2);

    C.ch="xy";

    D.ch='x';


    正确答案:D
    解析:str1和str2是数组名,是常量,其值不可改变,所以A和B中将字符串常量赋值给str1和str2是错误的。字符变量ch占一个字节,只能存放一个字符,所以C也不正确。

  • 第17题:

    写一个函数 int strcmp(const str *str1,const str *str2)

    要求:如果str1=str2 return 0;如果str1>str2 返回一个正数;如果 str1<str2 返回一个负数。

    不能调用其他函数。。。。。


    正确答案:
     

  • 第18题:

    请补充函数fun(),该函数的功能是:把从主函数中输入的字符串str2倒置后接在字符串str1后面。

    例如:str1=“How do”,str2=“?od uoy”,结果输出:“How do you do?”。

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

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

    试题程序:

    include<stdio.h>

    include<conio.h>

    define N 40

    void fun(char *str1,char *str2)

    {

    int i=0,j=0,k=0,n;

    char ch;

    char *p1=str1;

    char *p2=str2;

    while(*(p1+i))

    i++;

    while(*(p2+j))

    j++;

    n=【 】;

    for(;k=j/2;k++,j--)

    {

    ch=*(p2+k);

    *(p2+k)=*(p2+j);

    *(p2+j)=ch;

    }

    【 】;

    for(;【 】;i++)

    *(p1+i)=*p2++;

    *(p1+i)='\0';

    }

    main()

    {

    char str1[N],str2[N];

    int m,n,k;

    clrscr();

    printf("***Input the string str1 & str2

    ***\n");

    printf("\nstr1:");

    gets(str1);

    printf("\nstr2:");

    gets(str2);

    printf("***The string str1 & str2 ***\n");

    puts(str1);

    puts(str2);

    fun(str1,str2);

    printf("*** The new string ***\n");

    puts (str1);

    }


    正确答案:j-- *(p2+n)='\0' *p2
    j-- *(p2+n)='\0' *p2 解析:第一空:while循环执行后,变量j中保存了字符串str2的长度,而后面的for循环是将字符串str2倒置,即将第一个字符与最后一个字符对调,第二个字符与倒数第二个字符对调,如此循环直到中间的字符。第一次执行循环时,*(p2+j)指向最后一个字符,所以j要减1,并将未减1之前的数赋给n。第二空:将字符串str2倒置后,在字符串的最后要加上结束标记符,'\0'。第三空:当*p2所指的字符为,'\0'时,说明已经将倒置后的字符串str2都接在字符串str1后面了,for循环应该结束。当*p2所指的为其他字符时,for循环要继续执行。

  • 第19题:

    阅读下列函数说明和C函数,将应填入(n)处的字句写在对应栏内。

    [函数2.1说明]

    Fibonacci数列中头两个数均为1,从第三个数开始,每个数等于前两个数之和。下述程序计算Fibonacci数列中前15个数,并以每行5个数的格式输出。

    [函数2.1]

    include <stdio.h>

    main()

    { int i,f,f1=1,f2=1;

    printf("%5d%5d",f1,f2);

    for(i=3;i<=15;i++){

    f=(1);

    printf("%5d",f);

    if((2)= =0) printf("\n");

    f1=12;

    (3);

    }

    }

    [函数2.2说明]

    函数fun(char *str1,char *str2)的功能是将字符串str2拼接到str1之后。

    [函数2.2]

    fun(char *str1,char *str2)

    { int i,j;

    for(i=0;str1[i]!='\0';i++);

    for(j=0;str2[j]!='\0';j++) (4);

    (5);

    }


    正确答案:(1) f1+f2 (2) i%5 (3) f2=f (4) str1[i++]=str2[j] (5) str1[i]='\0'
    (1) f1+f2 (2) i%5 (3) f2=f (4) str1[i++]=str2[j] (5) str1[i]='\0' 解析:(1)根据Fibonacci数列的性质,f等于前两数f1与f2之和;
    (2)每输出5个数以后应当换行,此条件即:i除以5余 0;
    (3)计算一个数值前,f1与f2都应更新,其中f2应为刚计算出的f;
    (4)此循环的功能是将str2的字符添加到str1末尾;
    (5)函数结束前应在str1末尾添加结束符。

  • 第20题:

    若有下列说明,则( )不是对strcpy库函数的正确的调用。strcpy库函数用于复制一个字符串:char*str1="abcdt",str2 [10],*str3="hijklmn",*str4[2],*str5="aaaa";

    A.strcpy(str2,str1)

    B.strcpy(str3,str1)

    C.strcpy(str4,str1)

    D.strcpy(str5,str1)


    正确答案:C
    解析:strcpy(s1,s2)函数的功能是将字符串s2复制到字符串s1中(注意:要保证s1存储区能容纳下s2字符串)。

  • 第21题:

    设char str1[11]="HELLO,",str2[10]=“world”;则执行语句cout<

    设char str1[11]="HELLO,",str2[10]=“world”;则执行语句 cout<<strlen(strcpy(str1,str2)));后的输出结果是 ______。

    A.12

    B.11

    C.7

    D.5


    正确答案:D

  • 第22题:

    如果strcmp(str1,str2)的返回值为0,则说明()

    • A、str1比str2大
    • B、str1比str2小
    • C、str1与str2相等
    • D、字符串无法比较

    正确答案:C

  • 第23题:

    填空题
    下列程序的输出结果是 ()。 #include  #include   main( ) {    int i=0;    char str1[10]=“1234”, str2[10]= “567”;    strcat(str1,str2);    while(str2[i++]!=‘/0’)     str2[i]=str1[i];    puts(str2);   }

    正确答案: 5234567
    解析: 暂无解析