设有如下函数定义,则输出结果为_______。 char*fun(char*str) { char*p=str; while(*p) {if(*p>'d')continue; p++; } return p; } main() { printf("%s\n",fun("welcome!")); }A.welcomeB.come!C.wD.程序进入死循环

题目

设有如下函数定义,则输出结果为_______。 char*fun(char*str) { char*p=str; while(*p) {if(*p>'d')continue; p++; } return p; } main() { printf("%s\n",fun("welcome!")); }

A.welcome

B.come!

C.w

D.程序进入死循环


相似考题
更多“设有如下函数定义,则输出结果为_______。char*fun(char*str){char*p=str;while(*p){if(*p>'d')con ”相关问题
  • 第1题:

    请补充函数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后面的功能。

  • 第2题:

    以下程序运行后的输出结果是( )。

    include

    char*ss(char*s)

    {char*p,t;

    P=s+1;t=*s;

    while(*p){ *(P-1)=*P;P++;}

    *(P-1)=t;

    return s;

    }

    main()

    {char*p,str[10]="abcdefgh";

    p=ss(str);

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

    }


    正确答案:bcdefgha
    bcdefgha

  • 第3题:

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

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

    A.8

    B.7

    C.6

    D.5


    正确答案:C
    解析:本题通过函数gets()从键盘接收一个字符串,并通过调用fune()函数,统计串中字符的个数。

  • 第4题:

    下列程序的输出结果是______。 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"。

  • 第5题:

    设有如下函数定义,则输出结果为______。 char*fun (char*str) {char*p=str; while(*p) { if(*p>'d') continue; p++; } return p; } main() { printf("%s\n",fun("welcome!")); }

    A.welcome!

    B.come!

    C.w

    D.程序陷入死循环中


    正确答案:D

  • 第6题:

    设有如下函数定义。若在主函数中用语句cout<<f("good")调用上述函数,则输出结果为(48)。 int f(char *s){ char *p=s; while(*p! ='\0')p++; return(p-s); }

    A.3

    B.4

    C.5

    D.6


    正确答案:B
    解析:程序中的while循环执行完以后,s指向字符中的第一个元素,p指向'\0'(字符串的末尾位置),所以p-s是字符申的长度。所以选择B。

  • 第7题:

    char str[ ]= "Hello";

    char *p=str;

    int n=10;

    sizeof(str)=( )

    sizeof(p)=( )

    sizeof(n)=( )

    void func(char str[100])

    { }

    sizeof(str)=( )


    正确答案:
     

  • 第8题:

    char*getmemory(void)

    { char p[]=”hello world”;

    return p;

    }

    void test(void)

    {

    char *str=null;

    str=Getmemory();

    printf(str);

    } 请问运行 Test 函数会有什么样的结果.


    正确答案:
     

  • 第9题:

    char *GetMemory(void){ char p[] = "hello world";return

    p; }void Test(void){char *str = NULL;str = GetMemory(); printf(str);}请问运行 Tes

    t 函数会有什么样的结果?


    正确答案:
     

  • 第10题:

    请补充函数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循环要继续执行。

  • 第11题:

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

  • 第12题:

    串的操作函数str定义为: int str(char*s){ char*p=s; while(*p!=’\0')p++; return p=s; } 则str("abcde")的返回值是 ( )

    A.3

    B.4

    C.5

    D.6


    正确答案:C
    解析:由此操作函数可知,循环执行前,P和S均指向字符串的首字符,循环执行结束后,S仍指向首字符,而P指向字符串之后的结束符(\0),故P—S返回的是整个字符串的长度。

  • 第13题:

    请补充函数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。

  • 第14题:

    请补充函数fun(),该函数的功能是判断一个数是否为回文数。当字符串是回文时,函数返回字符申:yes!,否则函数返回字符串:no!,并在主函数中输出。所谓回文即正向与反向的拼写都一样,例如:abcba。

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

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

    试题程序:

    include<string.h>

    include<stdio.h>

    char *fun(char*str)

    {

    char *p1,*p2;

    int i, t=0;

    p1=str;p2=str+strlen(str)-1;

    for (i=0;【 】;i++)

    if(【 】)

    {

    t=1;

    break;

    }

    if (【 】)

    return("yes!");

    else

    return("no!");

    }

    main()

    {

    char str[50];

    printf("Input;");

    scanf("%s",str);

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

    }


    正确答案:i=strlen(sb)/2或istrlen(sw)/2 *p1++!=*p2-- t==20
    i=strlen(sb)/2或istrlen(sw)/2 *p1++!=*p2-- t==20 解析:第一空:判断回文数就是将第一个字符与最后—个字符比较,第二个字符与倒数第二个字符进行比较,依此类推,直到中间的字符,如果比较的结果都是相同,则这个字符串就是回文数,否则不是。所以比较的次数是strlen(str)/2。第二空:指针p1从第一个字符向后移动,指针p2从最后一个字符向前移动,如果两字符不相同,则说明此字符串不是回文数,将标记变量t置为1。第三空:变量t用来标记此字符串是否为回文数,当t为0时,表示字符串是回文数,当t为1时,表示字符串不是回文数。

  • 第15题:

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

  • 第16题:

    以下函数fun的功能是返回str所指字符串中以形参c中字符开头的后续字符串的首地址,例如,str所指字符串为Hello!,c中的字符为e,则函数返回字符串ello!的首地址。若str所指字符串为空或不包含c中的字符,则函数返回NULL,请填空。char *fun(char *str,char c){ int n=0; char *p=str; if(p!=NULL) while(p[n]!=c&&p[n]!=’\0’) n++; if(p[n]==’\0’) return NULL; return();}


    正确答案:p+n
    在本题中,函数fun的功能是返回str所指字符串中以形参c中字符开头的后续字符串的首地址。
    在本题的程序中,fun函数带有两个形参,其中一个是指针str,它指向字符串的首地址,另一个是字符变量c。程序首先定义了一个整型变量n,从程序中可知,它是字符串str中参数c相对于首地址的偏移量,然后定义了一个指针变量p,指向字符串str的首地址,然后执行条件语句,如果字符串不为空,则执行循环语句,循环结束的条件是要么字符串结束,要么找到形参c中对应的字符。根据循环结束的条件我们可以判断,其非死循环,循环结束后,从程序中可以看出,判断循环结束的原因是否因为字符串结束而结束的,如果是,说明没找到形参c中对应的字符,返回NULL。
    如果不是,则说明是因为找到了形参c中对应的字符而结束循环的。根据题目要求,需要返回以形参c中字符开头的后续字符串的首地址,而这时以形参c中字符开头的后续字符串的首地址为p+n。

  • 第17题:

    请读程序: includde include void fun(char * s) {char a[10]; str

    请读程序: # includde<stdio.h> # include<string.> void fun(char * s) {char a[10]; strcpy(a,"STRING"); s=a; } main() { char*p; fun(p); print{("%s\n",p); } 上面程序的输出结果(表示空格) ( )

    A.STRING

    B.STRING

    C.STRING

    D.不确定的值


    正确答案:D

  • 第18题:

    void setmemory(char **p, int num)

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

    void test(void)

    { char *str=NULL;

    getmemory(&str,100);

    strcpy(str,"hello");

    printf(str);

    }

    运行test函数有什么结果?( )


    正确答案:
     

  • 第19题:

    有关内存的思考题

    1. void getmemory(char *p)

    { p=(char*)mallol(100);

    }

    void test(void)

    {

    char * str =null;

    getmemory(str);

    strcpy(str,”hello,world”);

    printf(str);

    }

    请问运行 Test 函数会有什么样的结果


    正确答案:
     

  • 第20题:

    void GetMemory(char *p){p = (char *)malloc(100);}void Test(void) {char *str

    = NULL;GetMemory(str); strcpy(str, "hello world");printf(str);}请问运行 Test 函数

    会有什么样的结果?


    正确答案:
     

  • 第21题:

    Void GetMemory2(char **p, int num){*p = (char *)malloc(num);}void

    Test(void){char *str = NULL;GetMemory(&str, 100);strcpy(str, "hello"); printf(str); }请问

    运行Test 函数会有什么样的结果?


    正确答案:
     

  • 第22题:

    请补充函数fun(),该函数的功能是:把一个字符串中的字符(字母)按从小到大排序,并把这个全部由字母组成的字符串保存在原串中,函数返回这个字符串的长度。例如;输入“cixbr2.3”,如果为bcirx,字符串长度为5。

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

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

    include <stdio.h>

    define N 20

    int fun (char *str)

    {

    int i=0,j=0,k=-0,m=0;

    char t;

    char *p=str;

    while(*p)

    {

    if((*p>='A'&&*p<='Z')||(*p>='a'

    &&*p<='z'))

    【 】

    p++;

    }

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

    【 】;

    while(*(p+j))

    {

    k=j;

    【 】;

    while (*(p+k))

    {

    if(*(p+k)<*(str+m)

    {

    t=*(str+m);

    *(str+m)=*(p+k);

    *(p+k)=t;

    }

    k++;

    }

    j++;

    }

    return i; }

    main()

    {

    char str[81];

    iht n;

    clrscr();

    printf("Input the original string ");

    gets(str);

    printf("*** The Original string ***In");

    puts(str);

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

    n=fun(str);

    puts(str);

    printf("***The length of new string is:

    %d***\n",n);

    }


    正确答案:*(str+i++)=*p p=str m=j
    *(str+i++)=*p p=str m=j 解析:第一空:将字符串中的字母字符存入原字符串str中,通过变量i的自加逐一向后移动字符串指针。第二空:从后面的程序中可以看出,通过指针p对字符串进行排序,所以应使指针p指向字符串str的首部,即将字符串str的首地址赋给p。第三空:本题采用选择法对字符串进行排序,选择法的思路是,假设从小到大排序,依次用当前取得的元素和它后面的所有元素进行比较,在第一个元素和它后面的元素顺次比较时,可以借助中间变量来对两数进行交换,要保证这第一个元素始终存放数组中的最小数,以后依次挑出次小数,这样最终的数组就是按从小到大的顺序排列。此处要将变量j的值赋给m。

  • 第23题:

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