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

题目
单选题
有如下程序:#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


相似考题
更多“单选题有如下程序:#include int disp(char *str){ while(*str) putchar(*str++); return *str;}main(){ printf(%d,disp(NAME));}程序运行后的输出结果是(  )。A NAME0B NAMEEC NAMED NAME\0”相关问题
  • 第1题:

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

    有以下程序: # 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
    解析:本题中定义了一个2×20的二维字符数组str,并且初始化为str[0]="Hello",str[1]="Beijing",p是指向 char型的指针变量,并指向str数组的首地址,strlen(p+20)=strlen(str[1])=7。

  • 第2题:

    下列程序运行后,如果从键盘上输入ABCDE<回车>,则输出结果为______。includeinclude

    下列程序运行后,如果从键盘上输入ABCDE<回车>,则输出结果为______。 #include<stdio.h> #include<string.h> fuch (char str[] ) { int num=0; while (*(str+num)!='\0')num++; return(num); } main() { char str[10],*p=str; gets(p);printf("%d\n",fuch(p)); }

    A.8

    B.7

    C.6

    D.5


    正确答案:D

  • 第3题:

    以下C程序段的输出结果是(30)。 include void abc(char *str){ int a, b;

    以下C程序段的输出结果是(30)。 #include <stdio. h> void abc(char *str){ int a, b; for(a=b=0;str[a]!='\O';a++)if(str[a]!='c') str[b++]=str[a]; str[b]='\O'; } void main(){ char str[]="abcdef"; abc(str); printf("str[]=%s",str); }

    A.str[]=a

    B.str[]=ab

    C.str[]=abdef

    D.str[]=abcdef


    正确答案:C
    解析:本试题核心在于子函数的for循环。For循环将整个字符串中的字符处理一遍,每次处理时,函数的基本工作是将除字母c之外的字符重新赋值,然后a++,b++,继续处理下一个字符。对于字母c不赋值,且只有a++而b不变。可见for循环的目的只是将字母c剔除。

  • 第4题:

    如下程序段#include <stdio.h>#include <ctype.h>#include <conio.h>int fun (char *str){ int i,j=0; for(i=0;str[i]!= ’\0’;i++) if(str[i]!= ’ ’)str[j++]=str[i]; str[j]= ’\0’;}main(){ char str[81]; int n; clrscr(); printf("Input a string : "); gets(str); fun(str); printf("%s\n",str);}当运行程序时,输入asd af aa z67<回车>,则输出是A.asdafaaz67 B.asd af aa z67 C.asd D.z67


    正确答案:A
    在本题中,程序首先定义一个返回类型为整型的函数fun,该函数带有一个指针型的形参变量str,从主函数中对其调用时传递的参数我们可以知道,该指针指向的是一个数组,在该函数体中,首先定义两个整型变量,然后执行循环,循环变量i的初始值为0,循环结束的条件是str[i]!=’\0’,表示取到的数组元素是字符串结束标识,即字符串中的字符被处理完,在循环体中,首先执行条件判断语句if(str[i]!=’ ’),如果结果为真,说明取到的当前字符不是空字符,这时执行str[j++]=str[i],即将非空格字符保存到数组中;如果为假,说明取到了空格字符,此时不保存,而接着执行下次循环跳过空格字符。循环结束后执行str[j]= ’\0’;,即保存字符结束标识符,用来标识字符串结束。通过上面的这些分析,我们可以知道函数fun的作用是去掉字符数组中的空格字符。
    在主函数中,首先定义了一个大小为81的字符数组,然后调用函数clrscr()清除输入文本窗口,接着输出一条提示语句,执行gets(str);语句,该语句的作用是从键盘输入一个字符串到str数组,碰到换行符结束。然后调用函数fun,其实参为str。通过上面对函数fun作用的分析我们可以知道,调用函数后输入字符串中的空格符都被删除了,最后得到的字符串为asdafaaz67。
    程序最后执行输出语句,输出字符数组str中的字符串,因此,程序最终的输出结果是asdafaaz67,本题答案选A。

  • 第5题:

    以下程序的输出结果是【 】。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"。

  • 第6题:

    下列程序的输出结果是______。 char*fun(char*str,int n) { int i; char*p=str; for(i=0;i<10;i++,str++) *str='a'+i; return++p; } main() { char a[10]; printf("%s\n",fun(a,10)); }

    A.ABCDEFGHIJ

    B.abcdefghij

    C.bcdefghij

    D.不确定的值


    正确答案:C
    解析:调用函数fun使字符数组中的内容是"abcdefghij",函数的返回值是字符数据的地址,该地址指向数组的第二个字符,因此,主函数的输出结果是字符串 "bcdefghij"。

  • 第7题:

    若有以下程序: include using namespace std; int main() {char str[10];cin>>str;co

    若有以下程序:

    include <iostream>

    using namespace std;

    int main()

    {

    char str[10];

    cin>>str;

    cout<< str<<end1;

    return 0;

    }

    当输入为:

    This is a program!

    那么执行程序后的输出结果是【 】。


    正确答案:This
    This 解析:本题考核C++的标准输入/输出。提取符可以从输入流中读取一个字符序列,即一个字符串。在处理这种字符序列时,字符串被认为是一个以空白字符结束的字符序列。因此,本题得到的输入仅仅是第一个空白符之前的字符序列 This。所以程序最后的输出是This。

  • 第8题:

    阅读下面程序,程序执行后的结果为( )。 #include"stdio.h" main() {char*str="abcdefghijklnmopq": while(*str++!='e'); printf("%c\n",*str); }

    A.f

    B.a

    C.e

    D.a


    正确答案:A
    解析:本题考查的是取内容运算符“*”和自加运算符“++”的优先级问题。由于“++”的优先级高于“*”,所以题干中*str++!='e',即*(str++)!='e',当str指向字符'e'时,while循环的条件不成立,但str已经进行了自加指向了字符'f',所以*str输出字符'f'。

  • 第9题:

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

  • 第10题:

    当运行以下程序时,输入abcd,程序的输出结果是:( )。

    insert(char str[])

    {int i;

    i=strlen(str);

    while(i>0)

    {str[2*i]=str[i];str[2*i-1]='*';i--;}

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

    }

    main()

    {char str[40];

    scanf("%s",str);insert(str);

    }


    正确答案:a*b*c*d*
    a*b*c*d* 解析:字符处理函数strlen()测试字符串常量的长度,不包括‘\0’在内。因此,函数insert()实现了将字符数组中每个非‘\0’的字符后插入字符‘*’的功能。故输出结果是a*b*c*d*。

  • 第11题:

    单选题
    有如下程序:#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选项。

  • 第12题:

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

    C##123#0

    B

    C##1230

    C

    C##0

    D

    C##123#\0


    正确答案: B
    解析:
    disp函数中,存在while循环,当指针指向地址单元存储的字符不等于空字符'\0',输出此字符,否则退出循环,输出'#'。在主函数中调用disp函数时,字符串"C##123"先全部输出,当指针指向字符串最后的空字符时,退出循环,输出'#',并且再将'\0'返回输出。由于disp函数返回类型为int,所以返回'\0'的ASCII码0,答案选择A选项。

  • 第13题:

    有如下程序: include using namespace std; int main() { char st

    有如下程序: #include <iostream> using namespace std; int main() { char str[100], *p; cout<<"Please input a string:"; cin>>str; p=str; for (int i=0; *p!='\0'; p++,i++); cout<<i<<endl; return 0; }运行这个程序时,若输入字符串为 abcdefgabcd则输出结果是

    A.7

    B.12

    C.13

    D.100


    正确答案:A
    解析:本题考查的知识点是:默认的输入格式。C++流所识别的输入数据的类型及其默认的输入格式包括:
    short、int、long(signed、unsigned).与整型常量同
    float、double、long double:与浮点数常量同
    char(signed、unsigned):第一个非空白字符
    char*(signed、unsigned):从第一个非空白字符开始到下一个空白字符结束
    void*:无前缀的16进制数
    bool:VC6.0中把0识别为false,其他的值均识别为true
    注意其中空白字符和非空白字符的概念。空白字符是指空格、Tab符、回车换行等无显示的字符,否则就是非空白字符。本题的输入数据类型为char*,因此输入的数据是“从第一个非空白字符开始到下一个空白字符结束”,而输入数据为abcdefg abcd,其中abcdefg后有一个空格(空白字符)。所以输入后str中为字符串"abcdefg”,主函数中接下来for语句的作用是计算字符串p的长度。故最终输出的结果是"abcdefg”的长度7,本题应该选择A。

  • 第14题:

    有以下程序:includeincludeusingnameSpacestd;classperson{ intage; Char*nam

    有以下程序:

    include <iostream>

    include <string>

    using nameSpace std;

    class person

    {

    int age;

    Char * name;

    public:

    person ( int i, Char * str )

    {

    int j;

    j = strlen( str ) + 1;

    name = new char[ j ];

    strcpy( name, str );

    age = i;

    }

    ~person()

    {

    delete name;

    cout<<"D";

    }

    void display()

    {

    cout<<name<<":"<<age;

    }

    };

    int main()

    {

    person demo( 30,"Smith" );

    demo.display();

    return 0;

    }

    则该程序的输出结果为:【 】。


    正确答案:Smith:30 D
    Smith:30 D 解析:本题考核类与对象的操作。主函数中定义类person的对象 demo,并赋初值(30,"smith")。然后调用成员函数display()输出赋值结果,即Smitch:30。程序结束时demo对象的析构函数被调用,再输出“D”。

  • 第15题:

    有以下程序: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符合题意。

  • 第16题:

    下列程序的运行结果为()。 include voidabc(char*str) {int a,b,i,j; for(i=j=0;str[i]

    下列程序的运行结果为( )。

    #include<stdio.h>

    voidabc(char*str)

    {int a,b,i,j;

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

    if(str[i]!='a')

    str[j++]=str[j];

    str[j]='\0';

    }

    void main()

    {char Str[]="abcdef';

    abc(str);

    printf("str[]=%s",str);

    }

    A.str[]=bcdef

    B.str[]=abcdef

    C.str[]=a

    D.str[]=ab


    正确答案:A
    解析:本题考查函数调用时的参数传递。通过函数abc的执行,将字符串中的字母a去掉,保留剩下的。由于是通过指针调用,所以改变字符串的结果。

  • 第17题:

    以下程序运行后输入:3,abcde<回车>,则输出结果是【 】include move(char *str,

    以下程序运行后输入:3,abcde<回车>,则输出结果是【 】

    include <string.h>

    move(char *str, int n)

    { char temp; int i;

    temp=str[n-1];

    for(i=n-1;i>0;i--) str[i]=str[i-1];

    str[0]=temp;

    }

    main( )

    { char s[50]; int n, i, z;

    scanf("%d,%s",&n,s);

    z=strlen(s);

    for(i=1; i<=n; i++) move(s, z);

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

    }


    正确答案:cdeab
    cdeab 解析:本题主要考查函数move()的功能。经过分析可知,每次调用该函数时,都是把最后一个字符移到串的最前端,而原先的第一个字符至倒数第二个字符顺次后移。

  • 第18题:

    有以下程序#include "stdio.h"main() { char str[]="tomeetme",str1[]="toseeyou"; char *p=str,*p1=str1; int i; for(i=0;i if(*(p+i)==*(p1+i)) putchar(*(p+i)); printf("\n");}程序的运行结果是A.to B.tomeetC.toeeD.程序段不能通过编译


    正确答案:C
    本题属于综合性题目,考查的知识点有字符数组的指针表示,for循环与if语句的结合,初始时定义两个字符数组:str和str1,用两个指针p、p1分别指向这两个数组,每个数组中都是长度为8的字符串。定义变量i作为数组下标的增量,if语句表示如果有*(p+i)=*(p1+i),即str[i]=str1[i],则将相同的字符输出。tomeetme中与toseeyou相同位置上具有的相同字符为toee。

  • 第19题:

    阅读下列程序,当运行函数时,输入asd af aa z67,则输出为includeincludeinc

    阅读下列程序,当运行函数时,输入asd af aa z67,则输出为 #include<stdio.h> #include<ctype.h> #include<string.h> int fun(char*str) { int i,j=0; for(i=0;str[i]!='\0';i++) if(str[i]!='')str[j++]=str[i]; str[j]='\0'; } main() { char str[81]; int n; clrscr(); printf("Input a string:"); gets(str); puts(str); fun(str); printf("%s\n",str); }

    A.asdafaaz67

    B.asdafaaz67

    C.asd

    D.z67


    正确答案:A
    解析:本题题意要求删除所有空格,即除了空格以外的其他所有字符都要留下。由于C语言中没有直接删除字符的操作,所以我们对于删除字符的操作都是采用“留下”字符的算法,以前的题目亦是如此。用str[i]从串头到串尾逐一走动,每走到一个字符都判断其是否为空格,若不是空格(注意在if()的单引号之间有一个空格),则将其保存str[j]中。注意j的下标变化、初值及最后加串结束符'\0'。

  • 第20题:

    阅读下列程序,当运行程序时,输入asd af aa z67,则输出为()。includeint fun (char *str

    阅读下列程序,当运行程序时,输入asd af aa z67,则输出为( )。 #include <sldio.h> int fun (char *str) { int i,j=0; for(i=0;str[i]! ='\0';i++) if(str[i]! =") str[j++]=str[i]; str[j]='\0'; } main() { char str[81]; int n; printf("Input a string:"); gets(str); fun(str); printf("%s\n",str); }

    A.asdafaaz67

    B.asd af aa z67

    C.asd

    D.z67


    正确答案:A
    解析:本题题意是删除字符串中所有空格。由于C语言中没有直接删除字符的操作,所以删除字符的操作都是采用“留下”字符的算法来实现。从串头str[0]到串尾逐一比较,判断其是否为空格,若不是空格,则将其保存在str[j]中,最后加串结束符“\0”。

  • 第21题:

    下列程序的输出结果是______。 include int CalcDigital(char*str) { if(str= =NULL)

    下列程序的输出结果是______。

    include<iostream.h>

    int CalcDigital(char*str)

    {

    if(str= =NULL)

    return 0;

    int num_of_digital=0;

    for(int i=0;str{i]!=0x0;i++)

    if(str[i]<='9'&& str[i]>='0')

    num_of_digital++;

    return num_of_digital;

    }

    void main( )

    {

    char a[]="Beijing20080lympic";

    cout<<CalcDigital(a)<<endl;

    }


    正确答案:4
    4 解析:分析本题可知函数功能为计算一个字符串中包含的数字个数。字符串中包含的数字有2008,故输出为4。

  • 第22题:

    下列程序的输出结果是 ()。 #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

  • 第23题:

    单选题
    有以下程序:#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选项。