itgle.com

下列程序的运行结果为#include<stdio.h>void abc(char*str){ int a,b;for(a=b=0;str[a]!='\0';a++)if(str[a]!='c')str[b++]=str[a];str[b]='\0';}void main(){ char str[]="abcdef";abc(str);printf("str[]=%s",str); }A.str[]=abdefB.str[]=abcdefC.str[]=aD.str[]=ab

题目

下列程序的运行结果为

#include<stdio.h>

void abc(char*str)

{ int a,b;

for(a=b=0;str[a]!='\0';a++)

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

str[b++]=str[a];

str[b]='\0';}

void main()

{ char str[]="abcdef";

abc(str);

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

A.str[]=abdef

B.str[]=abcdef

C.str[]=a

D.str[]=ab


相似考题
参考答案和解析
正确答案:A
解析:本题考查了用字符指针引用字符数组中的字符及对字符的操作。函数abc()的for语句执行过程是:从字符指针str所指向的字符数组的第一个元素开始,逐一判断字符是否为'c',若不是就执行一次数组元素的赋值过程,若字符为'c'就不执行。
更多“下列程序的运行结果为 #include&lt;stdio.h&gt; void abc(char*str) {int a,b; for(a=b=0;str[a] ”相关问题
  • 第1题:

    下列程序的运行结果为()。 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去掉,保留剩下的。由于是通过指针调用,所以改变字符串的结果。

  • 第2题:

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

    下列程序的运行结果为( )。 #include<stdio.h> void abc(char*str) { int a,b,i,j; for(i=j=0;str[i]!='\0';i++) if(str[i]!='a') str[j++]=str[i]; 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去掉,保留剩下的。由于是通过指针调用,所以改变字符串的结果。

  • 第3题:

    下列程序的运行结果为includevold abc(char*str){int a,b; for(a=b=0;str[a]!='\0';a+

    下列程序的运行结果为 #include<stdio.h> vold abc(char*str) { int a,b; for(a=b=0;str[a]! ='\0';a++) if(str[a]!='c') str[b++]=str[a]; str[b]='\0';} void main() { char str[]="abcdef"; abc(str); printf("str[]=%s",str);}

    A.str[]=abdef

    B.str[]=abcdef

    C.str[]=a

    D.str[]=ab


    正确答案:A
    解析:本题考查了用字符指针引用字符数组中的字符及对字符的操作。函数abc()的for语句执行过程是:丛字符指针str所指向的字符数组的第一个元素开始,逐一判断字符是否为'c',若不是就执行一次数组元素的赋值过程,若字符为'c'就不执行,所以答案为A)。

  • 第4题:

    下面的程序各自独立,请问执行下面的四个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)语句不起作用。

  • 第5题:

    下列程序的运行结果为includevoid abc(char * str){ int a,b;for(a=b=0;str[a]!='\0';

    下列程序的运行结果为 #include<stdio.h> void abc(char * str) { int a,b; for(a=b=0;str[a]!='\0';a++) if(str[a]!='c') str[b++]=str[a]; str[b]='\0';} void main() { char str[]="abcdef"; abc(str); printf("str[]=%s",str);}

    A.str[]=abdef

    B.str[]=abcdef

    C.str[]=a

    D.str[]=ab


    正确答案:A
    解析:本题考查了用字符指针引用字符数组中的字符及对字符的操作。函数abc()的for语句执行过程是:从字符指针str所指向的字符数组的第一个元素开始,逐一判断字符是否为“c”,若不是就执行一次数组元素的赋值过程,若字符为“c”就不执行。