单选题有如下程序:#include #include main(){ char name[10]=c-book; char *str=name; printf(%d,%d,%d,%d, sizeof(name), strlen(name), sizeof(str), strlen(str));}程序运行后的输出结果是(  )。A 10,6,4,6B 11,6,11,6C 11,6,1,6D 10,7,1,7

题目
单选题
有如下程序:#include #include main(){ char name[10]=c-book; char *str=name; printf(%d,%d,%d,%d, sizeof(name), strlen(name), sizeof(str), strlen(str));}程序运行后的输出结果是(  )。
A

10,6,4,6

B

11,6,11,6

C

11,6,1,6

D

10,7,1,7


相似考题
参考答案和解析
正确答案: B
解析:
由一维数组初始化的知识可知,name[10] = "c-book",即name[10]="c-book\0\0\0\0"。sizeof函数用来获取类型或数据对象的长度,也即是一个这种数据类型的变量在内存中所占字节数。strlen函数统计字符串长度,遇到'\0'统计结束。字符指针变量和字符数组在内存中的存储情形不同,数组指的是按照数组长度分配的若干存储空间,在内存中字符类型变量占1个字节;而指针只是一个存储字符串首地址的存储空间,指针占4个字节。所以sizeof(name)=1×10=10,strlen(name)=6,sizeof(str)=4,strlen(str)=6。答案选择A选项。
更多“单选题有如下程序:#include #include main(){ char name[10]=c-book; char *str=name; printf(%d,%d,%d,%d, sizeof(name), strlen(name), sizeof(str), strlen(str));}程序运行后的输出结果是(  )。A 10,6,4,6B 11,6,11,6C 11,6,1,6D 10,7,1,7”相关问题
  • 第1题:

    以下程序的输出结果是()includeincludemain(){char str[12]={'s','t','r',

    以下程序的输出结果是( ) #include<stdio.h> #include<string.h> main() {char str[12]={'s','t','r','i','n','g'}; printf("%d\n",strlen(str)); }

    A.6

    B.7

    C.11

    D.12


    正确答案:A

  • 第2题:

    有以下程序:includemain(){charstr[][20]={"Hello","Beijing"}*p=str;printf("%\n",s

    有以下程序: #include <string.h> main() { char str[][20]={"Hello","Beijing"}*p=str; printf("%\n",strlen(p+20)); } 程序运行后的输出结果是

    A.0

    B.5

    C.7

    D.20


    正确答案:C
    解析:本题考核的知识点是二维数组的初始化及库函数strlen()的应用。主函数中定义了一个二维字符数组并初始化,初始化后的结果为str[0]="Hello",str[1]="Beijing",然后定义一个字符指针变量p并让它指向数组的首地址,即指向str[0],而在C语言中无论是一维还是多维数组,其元素在内存中都是顺序存放的,故p+20后指针指向str[1],所以strlen(P+20);返回的是str[1]中的字符串的长度,即Beijing的长度为7,所以最后输出的值为7,所以,4个选项中选项C符合题意。

  • 第3题:

    以下程序的输出结果是【 】。includeincludechar*fun(char*0{ char *p--t;retur

    以下程序的输出结果是【 】。

    include <stdio.h>

    include <string.h>

    char *fun(char *0

    { char *p--t;

    return (p+strlen(t)/2);

    }

    main()

    { char *str="abcdefgh";

    str=ftm(str);

    puts(str);

    }


    正确答案:efgh
    efgh 解析:本题考查的知识点是:字符指针。题目中的fun()函数,通过strlen()库函数得到形参t所指字符串的长度。然后返回t所指字符串首地址值加上该长度值的一半。所以fun()函数的作用就是返回所给字符串的中间位置。故最后通过puts()输出的字符串为"efgh"。

  • 第4题:

    以下程序的输出结果是()。includeinclude main(){char str[12]={'s','t','r

    以下程序的输出结果是( )。 #include <stdio.h> #include <string.h> main() { char str[12]={'s','t','r','i','n','g'}; printf("%d\n",strlen(str) ); }

    A.6

    B.7

    C.11

    D.12


    正确答案:A
    解析:本题考查求字符串的长度。程序中定义字符串str时中请了12个字节的内存空间,对它赋初值后,函数strlen在求串长度时,以'\0'作为串结束符,所以,strlen(str)的值为6。

  • 第5题:

    下列程序在32位linux或unix中的结果是什么?

    func(char *str)

    {

    printf(" %d",sizeof(str));

    printf(" %d",strlen(str));

    }

    main()

    {

    char a[]="123456789";

    printf(" %d",sizeof(a));

    printf(" %d",strlen(a));

    func(a);

    }


    正确答案:

     

    10 9 4 9

  • 第6题:

    有以下程序: 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"。

  • 第7题:

    有以下程序:includeincludemain(){char str[][20]={"Hello","Beijing"},*P

    有以下程序: #include <stdio.h> #include <string.h> main() { char str[][20]={"Hello","Beijing"},*P=str[0]; printf("%d\n",strlen(p+20)); } 程序运行后的输出结果是( )。

    A.0

    B.5

    C.7

    D.20


    正确答案:C
    解析:本题考查字符数组和指针的运用。strlen是测试字符串长度的函数,函数的值为字符串的实际长度,不包括'/0'在内。str[][20]={"Hello","Beijing"}定义了一个2行20列的数组,数组的首地址是&str[0][0],p+20是从首地址向后移了20位,指针指向了str[1][0]处,此时求字符串的长度,是从str[1][0]开始的,即“Beijing”的长度,所以输出结果是7。

  • 第8题:

    以下程序的输出结果是_[13]_______

    #include <stdio.h>

    #include <string.h>

    char *fun(char *t)

    { char *p=t;

    return(p+strlen(t)/2);

    }

    main()

    { char *str="abcdefgh";

    str=fun(str);

    puts(str);

    }


    正确答案:

    efgh 

  • 第9题:

    单选题
    有以下程序:#include #include main(){ char str[12]={'s', 't', 'r', 'I', 'n', 'g'}; printf(%d,strlen(str));}程序运行后的输出结果是(  )。
    A

    6

    B

    7

    C

    11

    D

    12


    正确答案: B
    解析:
    str[12]是字符数组,初始化时未赋初始值的自动赋值'\0',即str[12]={'s', 't', 'r', 'i', 'n', 'g', '\0', '\0', '\0', '\0', '\0', '\0'}。strlen函数求字符串长度,统计长度时以'\0'结束,即统计到长度为6时结束,strlen函数返回值为6。答案选择A选项。

  • 第10题:

    单选题
    有如下程序:#include int disp(char *str){ while(*str) putchar(*str++); return *str;}main(){ printf(%d,disp(NAME));}程序运行后的输出结果是(  )。
    A

    NAME0

    B

    NAMEE

    C

    NAME

    D

    NAME\0


    正确答案: D
    解析:
    程序执行过程为:调用函数disp,将字符串“NAME”首地址传给指针str,在while循环中,依次判断字符串中字符是否为'\0',不是'\0'则输出字符,否则结束循环。当(*str) = '\0'时,结束循环,返回字符'\0'的ASCII码0,并输出。程序运行后的输出结果是:NAME0。答案选择A选项。

  • 第11题:

    单选题
    有以下程序:#include #include main(){ char name[9]=c##line; char *str=name;  printf(%d,%d,%d,%d, sizeof(name), strlen(name), sizeof(str), strlen(str)); }程序运行后的输出结果是(  )。
    A

    9,7,4,7

    B

    8,6,9,6

    C

    8,6,3,6

    D

    10,8,5,8


    正确答案: D
    解析:
    由于name是一个长度为9的一维数组,故在内存中占用9字节长度,而其中字符串"c##line"只有7个字符,strlen函数返回的是该字符串的长度,不包含结束符,str是一个指针变量,占用4字节长度,但是由于name首地址赋给了str指针变量,在调用strlen函数时,返回的是指针对应地址单元的字符串的长度7,答案选择A选项。

  • 第12题:

    单选题
    有以下程序:#include #include main(){ char str[]={Hello,Beijing}; printf(%d,%d,strlen(str),sizeof(str));}程序的运行结果是(  )。
    A

    13,13

    B

    13,14

    C

    13,15

    D

    14,15


    正确答案: B
    解析:
    strlen返回字符串的长度,不包含字符串末尾的结束字符'\0',结果为13;sizeof返回字符串所占存储空间的大小,由于字符串最后要加上一个'\0',所以结果为13+1=14。答案选择B选项。

  • 第13题:

    有以下程序:includemain(){ char str[][20]={"Hello","Beijing"),*p=str[0];printf("

    有以下程序: #include<string.h> main() { char str[][20]={"Hello","Beijing"),*p=str[0]; printf("%d\n",strlen(p+20)); } 程序运行后的输出结果是( )。

    A.0

    B.5

    C.7

    D.20


    正确答案:C
    解析:主函数中定义了一个二维字符数组并初始化,初始化后的结果为str[0]="Hello"、str[1]="Beijng",然后定义一个字符指针变量p并让它指向str[0],即指向数组的首地址,而在C语言中无论是一维还是多维数组,其元素在内存中都是顺序存放的,故p+20后指针指向str[1],所以strlen(p+20);返回的是str[1]中字符串的长度,即"Beijng"的长度7,故4个选项中选项C符合题意。

  • 第14题:

    有以下程序includemain(){charstr[][20]={"Hello","Beijing"},*p=str;printf("%d\n",

    有以下程序 #include <string.h> main() {char str[][20]={"Hello","Beijing"},*p=str; printf("%d\n",strlen(p+20)); } 程序运行后的输出结果是

    A.0

    B.5

    C.7

    D.20


    正确答案:C
    解析:二维数组的初始化及库函数strlen()的应用,主函数中定义了一个二维字符数组并初始化,初始化后的结果为str[0]=“Hello”、str[1]=“Beijing”,然后定义一个字符指针变量p并让它指向数组的首地址,即指向str[0],而在C语言中无论是一维还是多维数组,其元素在内存中都是顺序存放的,故p+20后指针指向str[1],所以strlen(p +20);返回的是str[1]中的字符串的长度,即Beijing的长度为7,所以最后输出的值为7。

  • 第15题:

    有以下程序: #include 〈iostream〉 #include 〈string〉 using namespace std; class visited { private: int number; char *name; public: static int glob; void set mes(char *a); }; void visited::set mes(char *a) { name=new char[strlen(A) +1]; strcpy(name,A) ; number=++glob; } int visited::glob-O; int main() { visited person[10]; int i; char str[8]; for(i=0;i<5;i++) { cin>>str; person[i] .set mes(str); } cout<

    A.5

    B.4

    C.3

    D.2


    正确答案:A
    解析:本题考核静态数据成员的应用。分析程序:①类visited中,定义了两个私有成员:整型变量number和指针变量name。两个公有成员:静态数据变量glob和函数setmes()。②在函数setmes中,把传入的字符串保存在类的私有成员name中,并把静态数据成员glob自加,同时赋值给私有成员number。通过以上分析可知,函数setmes()用来记录输入的名字(即来访者的姓名),静态数据变量glob用来记录有多少来访者。在主函数中,输入5个字符串(即5个来访者的姓名)后,用来记录来访者数目的静态数据成员glob的值变成5。所以程序最后的输出结果是5。

  • 第16题:

    下列程序在32位linux或unix中的结果是什么?

    func(char *str)

    {

    printf("%d",sizeof(str));

    printf("%d",strlen(str));

    }

    main()

    {

    char a[]="123456789";

    printf("%d",sizeof(a));

    func(a);

    }


    正确答案:

     

    10 4 9

  • 第17题:

    若有如下程序; main() {char a[]="china\0name\0"; printf("%d,",strlen(A) ); printf("%d\n",sizeof(A) ); } 则程序运行后的输出结果是( )

    A.5,11

    B.5,12

    C.11,11

    D.12,12


    正确答案:B

  • 第18题:

    有以下程序: include include main() { char str[ ]={"Hello,Beijing"}; printf("%d,%d\n",strlen(str),sizeof(str)); } 程序的运行结果是( )。

    A.13,13

    B.13,14

    C.13,15

    D.14,15


    答案:B
    解析:strlen返回字符串的长度,不包含字符串末尾的结束字符′\0′,结果为13;sizeof返回字符串所占存储空间的大小,由于字符串最后要加上一个′\0′,所以结果为13+1=14。

  • 第19题:

    以下程序的输出结果是【 】。includeincludechar*fun(char*t){ char *p=t;retur

    以下程序的输出结果是【 】。

    include <stdio.h>

    include <string.h>

    char *fun(char *t)

    { char *p=t;

    return (p+strlen(t)/2);

    }

    main()

    { char *str="abcdefgh";

    str=ftm(str);

    puts(str);

    }


    正确答案:
    efgh 解析:本题考查的知识点是:字符指针。题目中的fun()函数,通过strlen()库函数得到形参t所指字符串的长度。然后返回t所指字符串首地址值加上该长度值的一半。所以fun()函数的作用就是返回所给字符串的中间位置。故最后通过puts()输出的字符串为"efgh"。

  • 第20题:

    以下程序的输出结果是()  #include      #include      main( )  {char str[12]={‘8’,‘t’,‘r’,‘i’, ‘n’,‘g’,‘、0’,‘a’};      printf(“%d/n”,strlen(str));} 

    • A、6
    • B、7
    • C、8
    • D、12

    正确答案:D

  • 第21题:

    单选题
    以下程序的输出结果是()  #include      #include      main( )  {char str[12]={‘8’,‘t’,‘r’,‘i’, ‘n’,‘g’,‘、0’,‘a’};      printf(“%d/n”,strlen(str));}
    A

    6

    B

    7

    C

    8

    D

    12


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

  • 第22题:

    单选题
    有以下程序:#include #include main(){ char str[][20]={One*World,One*Dream!}, *p=str[1]; printf(%d,,strlen(p)); printf(%s,p);}程序运行后的输出结果是(  )。
    A

    9,One*World

    B

    9,One*Dream!

    C

    10,One*Dream!

    D

    10,One*World


    正确答案: D
    解析:
    本程序将两个字符串常量赋值给一个二维字符数组,然后p指向第二个字符串。strlen统计字符串中有效字符的个数,可知“One*Dream!”中共有10个字符。所以答案选择C选项。

  • 第23题:

    单选题
    有如下程序:#include main(){ char name[10] = {'S','T','R','I','N','G'}; name[3]='E'; name[5]=0; printf(%s,name);}程序运行后的输出结果是(  )。
    A

    STRENG

    B

    STRIEG

    C

    STREN

    D

    STREN0


    正确答案: C
    解析:
    printf函数按照格式符说明输出对应的数据。%s控制符用于输出字符串,输出时从给定地址开始依次输出字符,直到遇到'\0'结束。给字符变量赋值0,相当于赋值'\0'。初始化时name = "STRING",改动数组第4个和第6个元素之后字符串变为"STREN"。调用printf输出字符串为STREN,答案选择C选项。