设有如下函数定义,则输出结果为______。 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.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') continue; p++; } return p; } main() { printf("%s\n",fun("welcome!")); }A.welcome!B.come!C.wD.程序陷入死循环中”相关问题
  • 第1题:

    有以下程序:includevoid fun(char**p){++P;printf("%s\n",*p);}main()char*a[]={"Morn

    有以下程序: #include<stdio.h> void fun(char**p) { ++P;printf("%s\n",*p);} main() char*a[]={"Morning","Afternoon","Evening","Night"}; fun(A); } 程序的运行结果是( )。

    A.Afternoon

    B.fternoon

    C.Morning

    D.oring


    正确答案:A

  • 第2题:

    下列程序的输出结果是______。 includef(char 8s){char *p=s;while(*p!='\0')p++;retur

    下列程序的输出结果是______。# include<stdio.h>f(char 8s){ char *p=s; while(*p!='\0')p++; return(p-s);}main(){ printf("%d\n",f("ABCDEF"));}

    A.3

    B.6

    C.8

    D.0


    正确答案:B

  • 第3题:

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

    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

  • 第4题:

    有以下程序 include void fun(char **p) { ++p; printf("%s\n",*p);

    有以下程序 #include <stdio.h> void fun(char **p) { ++p; printf("%s\n",*p); } main() { char *a[]={"Moming","Afternoon","Evening","Night"}; fun(a); } 程序的运行结果是

    A.Afternoon

    B.fternoon

    C.Morning

    D.orning


    正确答案:A
    解析:本题主函数中定义了一个指针数组a,可以将它看成一个以字符指针为元素的一维数组。和—般的一维数组名能赋给同类型指针变量一样,该字符指针数组也可以赋给指向字符指针的指针(即字符型二级指针),所以数组名a可以用作函数fun()的实参。

  • 第5题:

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

  • 第6题:

    请读程序: includef(char * s){cahr * p=s;while(* p!='\0')p++;return(p-s);}main(){

    请读程序: # include<stdio.h> f(char * s) {cahr * p=s; while(* p!='\0')p++; return(p-s); } main() {printf("%d\n”,f("ABCDEF"));} 上面程序的输出结果是 ( )

    A.3

    B.6

    C.8

    D.0


    正确答案:B

  • 第7题:

    以下程序的输出结果是()。includeint fun (char*s){char *p=s;while (*p!='\0,) p++

    以下程序的输出结果是( )。 #include<iostream.h> int fun (char*s) { char *p=s; while (*p!='\0,) p++: return (p-s): } void main() { cout<<fun (" ABCDEF ")<<endl: }

    A.3

    B.6

    C.8

    D.0


    正确答案:B

  • 第8题:

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

  • 第9题:

    以下程序运行后,输出结果是()includess(char*s){char*p=s; while(*p)p++ return(p-s);

    以下程序运行后,输出结果是( ) #include<stdio.h> ss(char *s) { char*p=s; while(*p) p++ return(p-s); } main() { char *a="abded" int i; i=ss(a) ; printf("%d\n",i); }

    A.8

    B.7

    C.6

    D.5


    正确答案:D

  • 第10题:

    设有如下函数定义,则输出结果为_______。 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
    解析:continue语句的作用是用于结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。由于'w'>'d',执行continue语句,结束本次循环(即跳过p++;语句),还是继续比较'w'>'d',程序进入死循环。

  • 第11题:

    以下程序的输出结果是_[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 

  • 第12题:

    单选题
    有以下程序: #include int fun(char *s) {  char *p=s;  while(*p++!='\0');  return(p-s); } main() {  char *p=01234;  printf(%d,fun(p)); } 程序的运行结果是(  )。
    A

    6

    B

    5

    C

    4

    D

    3


    正确答案: B
    解析:
    程序执行过程为:定义字符串指针p并为其初始化为“01234”,调用函数fun(p),将指针传入函数。while循环找到字符串的束符地址,然后使这个指针指向结束符下一个单元,结束循环。返回字符串首地址与结束符下一个地址之差,也即是字符串长度加1。输出地址差为6,答案选择A选项。

  • 第13题:

    str为一个字符序列。请补充函数fun(),该函数的功能是:查找str中值为x的元素,返回该字符序列中值为x的元素个数,并把这些值为x的元素下标依次保存在数组bb中。例如,在“abcdefahij”中查找‘a’,结果为:2个‘a’,下标依次为 0、6。

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

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

    试题程序:

    include<stdio.h>

    include<conio.h>

    define N 20

    int bb[N];

    int fun(char *str,char ch)

    {

    int i=0, n=0;

    char t=ch;

    char *p=str;

    while(*p)

    {

    if (【 】)

    【 】;

    p++;

    i++;

    }

    return【 】;

    }

    main()

    {

    char str[N];

    char ch;

    int i, j,n;

    clrscr();

    printf("***Input the original string

    ***\n");

    gets(str);

    printf("***The Original ***\n");

    puts(str);

    printf("***Input character ***\n");

    scanf("%c",&ch);

    n=fun(str,ch);

    printf("\nThe numbr of character is:

    %d\n", n);

    printf{"***The suffix of character

    ***\n");

    for(i=0;i<n;i++)

    printf("%d ",bb[i]);

    }


    正确答案:*p==t bb[n++]=I n
    *p==t bb[n++]=I n 解析:第一空:通过指针p的移动来依次访问字符串的各个字符,如果指针p所指的字符等于待查找的字符,即表示找到了满足条件的字符。第二空:将找到的字符在字符数组中的下标值保存在数组bb中。第三空:变量n记录在字符串中找到待查找字符的个数。由main函数的调用可知函数fun()的返回值为n。

  • 第14题:

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

  • 第15题:

    请补充函数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时,表示字符串不是回文数。

  • 第16题:

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

  • 第17题:

    以下函数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。

  • 第18题:

    请读程序: 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

  • 第19题:

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

  • 第20题:

    字符串str由数字字符‘0’和‘1’组成(长度不超过8个字符),可看作二进制数,请补充函数fun(),该函数的功能是:把str字符串转换成十进制数,结果由函数返回。例如,输入“1001”,结果输出:9。

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

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

    试题程序:

    include<stdio.h>

    include<stdlib.h>

    include<string.h>

    int fun(char *str)

    {

    int n;

    char *p=str;

    【 】;

    p++;

    while (*p)

    {

    n=【 】;

    p++;

    }

    return【 】;

    }

    main()

    {

    char str[9];

    int i;

    int n;

    printf ("Enter a string made up of '0' and

    '1' digital character:");

    gets (str);

    if (strlen(str)>8)

    {

    printf ("Error:string too longer!

    please input again !\n\n");

    exit(0);

    }

    for(i=0;str[i];i++)

    if(str[i]<'0'||str[i]>'1')

    {

    printf("Error:%c not is '0'and

    '1' digital character !\n\n",

    str[i]);

    exit(0);

    }

    printf("The original string:");

    puts(str);

    n=fun(str);

    printf("\n%s is convered to decimal

    number:%d\n\n",str,n);

    }


    正确答案:n=*p-'0' n*2+*p'0' n
    n=*p-'0' n*2+*p'0' n 解析:第一空:'0'和'1'是字符串中的数字字符,为了进行数字运算,必须要将数字字符转换为数字,用数字字符减去字符'0'的ASCII码,就得到对应的数字。第二空:将二进制数转换为十进制数的算法是:以1001为例,对应的十进制数为1*23+0*22+0*2+1=2*(2*(2*1+0)+0)+1=9。明白了这一算法,此空就非常容易了。第三空:最后计算的结果存放在变量n中,所以函数的返回值为n。

  • 第21题:

    有以下程序: fun(char p[][10]) { int n=0,i; for(i=0;i<7;i++) if(P[i][0]=='T')n++; return n; } main() {char str[][10]={"Mon","Tue","wed","Thu","Fri","Sat","Sun"}; printf("%d\n",fun(str)); } 程序执行后的输出结果是( )。

    A.1

    B.2

    C.3

    D.0


    正确答案:B
    解析:fun()函数实现的功能为查找二维字符数组第一列中为字符T的个数。二维数组的地址作为函数的实参。

  • 第22题:

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

  • 第23题:

    串的操作函数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返回的是整个字符串的长度。