●执行下面的一段C程序后,变量ret的值为(61)。char str[20];int ret= strlen(strcpy(str,"Hello_World\0"));(61) A.0B.11C.12D.20

题目

●执行下面的一段C程序后,变量ret的值为(61)。

char str[20];

int ret= strlen(strcpy(str,"Hello_World\0"));

(61) A.0

B.11

C.12

D.20


相似考题
参考答案和解析
正确答案:B
更多“●执行下面的一段C程序后,变量ret的值为(61)。 char str[20]; int ret= strlen(strcpy(str,"Hello_ ”相关问题
  • 第1题:

    下面的程序各自独立,请问执行下面的四个TestMemory 函数各有什么样的结果?

    ①void GetMemory(char * p)

    {

    p = (char * )malloc(100);

    }

    void TestMemory (void)

    {

    char *str = NULL;

    GetMemory (str);

    strcpy(str, "hello world");

    prinff(str);

    }

    ② char * GetMemory (void)

    {

    char p[ ] = "hello world";

    return p;

    }

    void TestMemory (void)

    {

    char * str = NULL;

    str = GetMemory( );

    printf(str);

    }

    ③void GetMemory(char * * p, int num)

    {

    * p = (char * )malloc(num);

    }

    void TestMemory (void)

    {

    char * str = NULL;

    GetMemory(&str, 100);

    strcpy( str, "hello" );

    printf(sir);

    }

    ④void TestMemory (void)

    {

    char *str = (char * )malloe(100);

    strepy (str, "hello" );

    free ( str );

    if(str ! = NULL)

    {

    strepy( str, "world" );

    printf(str);

    }

    }


    正确答案:程序1程序崩溃。因为GetMemory并不能传递动态内存TestMemory函数中的str一直都是 NULL。strcpy(str “hello world”);将使程序崩溃。 程序2可能是乱码。因为GetMemory返回的是指向“栈内存”的指针该指针的地址不是 NULL但其原来的内容已经被清除新内容不可知。 程序3能够输出hello但是会发生内存泄漏。 程序4篡改动态内存区的内容后果难以预料非常危险。因为free(str);之后str成为野指针if(str!=NULL)语句不起作用。
    程序1程序崩溃。因为GetMemory并不能传递动态内存,TestMemory函数中的str一直都是 NULL。strcpy(str, “hello world”);将使程序崩溃。 程序2可能是乱码。因为GetMemory返回的是指向“栈内存”的指针,该指针的地址不是 NULL,但其原来的内容已经被清除,新内容不可知。 程序3能够输出hello,但是会发生内存泄漏。 程序4篡改动态内存区的内容,后果难以预料,非常危险。因为free(str);之后,str成为野指针,if(str!=NULL)语句不起作用。

  • 第2题:

    有以下程序:include include using namespace std;class Y;class X{private

    有以下程序: #include <iostream> #include <string> using namespace std; class Y; class X { private: int x; char *strx; public: X(int a, char *str) { x=a; strx=new char[strlen(str)+1]; strcpy(strx,str); } void show(Y &ob) ; }; class Y { private: int y; char *stry; public: Y(int b,char *str) { y=b; stry=new char[strlen(str)+1]; strcpy(stry, str); } friend void X: :show(Y &ob) ; }; void X: :show(Y &ob) { cout<<strx<<", "; cout<<ob, stry<<end1; } int main ( ) { X a(10,"X"); Y b (20, "Y"); a. show(B) ; return 0; } 执行后的输出结果是( )。

    A.X,Y

    B.a,b

    C.X,X

    D.Y,Y


    正确答案:A
    解析:本题考核类的定义和友元函数的应用。①该程序中,类X的成员函数show()在类Y中说明为友元,因此,在该友元成员show()中可以访问类Y的私有成员stry。②成员函数show()的功能就是输出类X的私有成员strx和Y对象ob的私有成员stry,③主函数main()中定义了X类的一个对象a和Y类的一个对象b,并且都进行了初始化。然后调用对象a的成员函数show,输出对象a中私有成员strx中的内容和对象b中私有成员stry中的内容,即字符串stringX和stringY。

  • 第3题:

    执行下面的一段C程序后,变量ret的值为( )。char str[20];int ret=strlen(strcpy(str,”Hello_World”));

    A.0
    B.11
    C.12
    D.20

    答案:B
    解析:
    题中,从最内层括号开始看起,将常量拷贝到str中,strcpy函数会在字符结束符\0时停止拷贝,因此只管Hello_World长度,strlen相当于strlen(str),字符串长度为11.

  • 第4题:

    执行下列语句后,输出结果为steven的是 Char * str="steven"; cout. write(str, );

    A.strlen(str)

    B.sizeof(str)

    C.strlen(str+1)

    D.sizeof(str-1)


    正确答案:A
    解析:本题考察在C++中,字符串的存放方式,以及不同的字符串函数的作用.其中, strlen是专门用于求字符串长度的,其自动去掉字符数组后面的那个‘/0’,而sizeof后面求的则是 str指针,指针在目前的32位机器中是固定大小的,其值与字符中的长度是没有关系的。故可以排除B和D。而选项C则将‘/0’多考虑了一次。

  • 第5题:

    下面函数的功能应该是:删除字符串str中所有与变量ch相同的字符,并返回删除后的结果。例如:若str="ABCDABCD",ch="B",则函数的返回值为:"ACDACD"

    Function delchar(str As String,ch As String)As String

    Dim k As Inlegcr,temp As String,ret As String

    ret=""

    For k=1 To Len(str)

    temp=Mid(str,k,1)

    If temp=ch Then

    ret=ret&temp

    End If

    Next k

    delchar=ret

    En d Function

    但实际上函数有错误,需要修改,下面的修改方案中正确的是( )。

    A.把ret=ret&temp改为ret=temp

    B.把If temp=ch Then改为If temp<>ch Then

    C.把delchar=ret改为delchar=temp

    D.把ret=""改为temp=""


    正确答案:B
    B。【解析】Mid函数用于提取字符串中的指定位数。Len函数的作用是返回串的长度。本题中,Fork=1ToLen(str),语句的作用是每次循环提取str串中的一个字符,语句temp=Mid(str,k,1)的作用是将提取的字符存入字符变量temp中,然后将temp和用户欲删除的字符做比对,若不同,则将此字符插入的字符串ret的末尾。循环结束ret中保存的就是不包含用户欲删除字符的字符串,也就是题目要求的字符串了。所以选B。