以下程序includemain(){char a1[80],a2[80],*s1=a1,*s2=a2; gets(s1);gets(s2) if(!s以下程序 #include<string.h> main() { char a1[80],a2[80],*s1=a1,*s2=a2; gets(s1);gets(s2) if(!strcmp(s1,s2))printf("*"); else printf("#"); printf("%d\n",strlen(strcat(s1,s2))); } 如果从键盘上

题目
以下程序includemain(){char a1[80],a2[80],*s1=a1,*s2=a2; gets(s1);gets(s2) if(!s

以下程序 #include<string.h> main() { char a1[80],a2[80],*s1=a1,*s2=a2; gets(s1);gets(s2) if(!strcmp(s1,s2))printf("*"); else printf("#"); printf("%d\n",strlen(strcat(s1,s2))); } 如果从键盘上输入: book<回车> book<空格><回车> 则输出结果是( )

A.*8

B.#9

C.#6

D.*9


相似考题
更多“以下程序includemain(){char a1[80],a2[80],*s1=a1,*s2=a2; gets(s1);gets(s2) if(!s 以下程序 #include<string.h> main() { char a1[80],a2[80],*s1=a1,*s2=a2; gets(s1);gets(s2) if(!strcmp(s1,s2))printf("*"); ”相关问题
  • 第1题:

    有以下程序并includeincludefun(char * w,int n){char t,*s1,*s2; s1=w;s2=

    有以下程序 并include<stdio.h> #include<string.h> fun(char * w,int n) { char t,*s1,*s2; s1=w; s2=w+n-1; while(s1<s2) { t=*s1++; * s1=*s2--; * s2=t; } } main() { char p[]="1234567"; fun(p,strlen(p)); puts(p); } 程序运行后的输出结果是( )

    A.1234567

    B.7654321

    C.1711717

    D.7177171


    正确答案:C

  • 第2题:

    以下程序段的输出结果是______ 。 main() { char s1[10],s2[10],s3[10]; scanf("%s",s1);gets(s2);gets(s3); puts(s1);puts(s2);puts(s3); } 输入数据如下: (此处<CR>代表回车符) aaa<CR> bbb<CR>

    A.aaa bbb

    B.aaa bbb

    C.aaa\0bbb\0

    D.aaabbb


    正确答案:B
    解析:scanf是标准输入函数,在输入字符串a阻时,实际的内容为“aaa、0”,“\0”是由系统自动加入的;gets的功能是从终端读入一行字符,即一直读到换行符为止,并由系统自动以“、0”代替换行符。

  • 第3题:

    以下程序的输出结果是______。includeincludefun(char*w,int n){ char t,*s

    以下程序的输出结果是______。 #include<stdio.h> #include<string.h> fun(char*w,int n) { char t,*s1,*s2; s1=w;s2=w+n-1; while(s1<s2) { t=*s1++; *s1=*s2-; *s2=t; } } main() { char*p; p="1234567"; fun(p,strlen(p)); puts(p); }

    A.1234567

    B.7654321

    C.1711717

    D.7177171


    正确答案:C
    解析:在子函数fun中,s1为字符串w的起始地址,s2为字符串的结束地址(字符'\0'除外),当执行循环结束循环, w="1711717"。

  • 第4题:

    请读程序:includeincludemain(){char *s1="AbCdEf",*s2="aB"; s1++;s2++;

    请读程序: #include<stdio.h> #include<string.h> main() { char *s1="AbCdEf",*s2="aB"; s1++;s2++; printf("%d\n",strcmp(s1,s2)); } 上面程序的输出结果是______。

    A.正数

    B.负数

    C.零

    D.不确定的值


    正确答案:A
    解析:函数strcmp的功能是比较字符串s1和s2,如果s1>s2,则返回个正数;如果s1s2,则返回负数,否则返回零。由于本题中小写字母b的ASCII码值大于大写字母B,故s1>s2,所以函数的值为正数。

  • 第5题:

    以下程序的输出结果是______。includeincludefun(char *w,int n){ char t,*

    以下程序的输出结果是______。 #include<stdio.h> #include<siring.h> fun(char *w,int n) { char t,*s1,*s2; s1=w;s2=w+n-1; while(s1<s2) { t=*s1++; *s1=*s2-; *s2=t; } } main() { char *p; p="1234567"; fun(p,strlen(p)); puts(p); }

    A.1234567

    B.7654321

    C.1711717

    D.7177171


    正确答案:C
    解析:在子函数fun中,s1为字符串w的起始地址,s2为字符串的结束地址(字符'\0'除外),当执行循环结束循环,w=“1711717”。

  • 第6题:

    以下程序的输出结果是_______。includeincludefun(char*w,int n){char t,*s

    以下程序的输出结果是_______。 #include<stdio.h> #include<string.h> fun(char*w,int n) { char t,*s1,*s2; s1=w;s2=w+n-1; while(s1<s2) { t=*s1++: *sl=*s2-; *s2=t; } } main() { char*p; p="1234567"; fun(p,strlen(p)); puts(p); }

    A.1234567

    B.7654321

    C.1711717

    D.7177171


    正确答案:C
    解析:在于函数fun中,s1为字符串w的起始地址,s2为字符串的结束地址(字符'\0'除外),当执行循环结束循环,w="1711717"。

  • 第7题:

    以下程序中函数scmp的功能是返回形参指针s1和s2所指字符串中较小字符串的首地址。 #include<string> char*scmp(char*s1,char*s2) { if(strcmp(s1,s2)<0) return(s1); else retrun(s2); } main() { int i;char string[20],str[3][20]; for(i=0;i<3;i+

    A.abcd

    B.abba

    C.abc

    D.abca


    正确答案:B

  • 第8题:

    设已包含头文件,下列程序段的运行结果是()。 char s1[]={"ACDEF"}; char s2[]="ABC"; s

    设已包含头文件<string.h>,下列程序段的运行结果是( )。

    char s1[]={"ACDEF"};

    char s2[]="ABC";

    strcpy(s1,s2) ;

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

    A.3

    B.4

    C.6

    D.5


    正确答案:A
    解析:头文件string.h>是字符串处理函数对应的头文件,要想调用C语言的库函数时,都要在程序中嵌入该函数对应的头文件,否则无法使用库函数。
      strcpy(s1,s2)把s2中的字符串复制到s1中,所以结果就为s2的长度。

  • 第9题:

    有以下程序:include using namespace std;int main ( ){ char s1[10],s2[10]; char*p

    有以下程序: #include <iostream> using namespace std; int main ( ) { char s1[10],s2[10]; char *p=s1,*q=s2; cin>>s1>>s2; while (*p ! =' \0 ' ) p++; while (*q!='\0') *p++=*q++; *p='\0'; cout<<s1<<end1; return 0; }

    A.abcd0ghij

    B.abcd0ghij0

    C.abcd

    D.abcdghij


    正确答案:D
    解析:程序定义两个字符串指针p和q,并使指针分别指向字符串数组s1和s2。数组s1和s2通过输入的字符串赋初值。程序中第1个while语句,用来计算s1的长度,并把指针p移到数组s1的最后一个元素。第2个while语句,是将数组s2中的字符串合并到数组s1的后面。语句“*p'\0';”,是合并后的字符串s1的结束标志。所以最后s1中的字符串为abcdghij。

  • 第10题:

    有以下程序:void swap (char *x,char *y){char t; t=*x,*x=*y;*y=t;}main(){char* s1="abc",*s2="123"; swap(s1,s2); printf("%s,%s\n",s1,s2);}程序执行后的输出结果是( )。

    A.123,abc

    B.abc,123

    C.1bc,a23

    D.321,cba


    正确答案:C
    解析:首先看swap()函数,函数中定义了一个临时字符变量t,然后将形参指针x所指内容存入t,再将形参指针y所指内容存入到x所指内容中,最后将临时变量t的内容存入到y所指内容中。所以该函数实现的是:交换两个字符指针所指向的内容。在主函数中,首先定义了两个字符指针s1和s2,同时用字符串"abc"和"123”来初始化它们,此时它们指向的是两个字符串的第1个字符。所以,在调用完swap()函数后,彼此交换了两个字符串的第1个字符,最后输出结果为1bc,a23。故应该选择C。

  • 第11题:

    以下程序的输出结果是( )。 include main() {char*s1,*s2,m; s1=s2=(char*)malloc(size

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

    include<stdlib.h>

    main()

    {char*s1,*s2,m;

    s1=s2=(char*)malloc(sizeof(char));

    *s1=15;

    *s2=20;

    m=*s1+*s2:

    printf("%d\n",m);

    }


    正确答案:40
    40 解析:malloc()函数的作用是开辟一个长度为sizeof(char)的内存区,s1、s2为指向字符型数据的指针变量,执行“s1=s2=(char*)malloc(sizeof(chat));”语句后,s1、s2指向同一个存储空间,此时m=*s1+*s2=20+20=40。

  • 第12题:

    单选题
    有以下程序 #include  void swap(char *x,char *y) {  char t;  t=*x;  *x=*y;  *y=t; } main() {  char *s1,*s2;   char a[]=abc;  char b[]=123;  s1=a;  s2=b;  swap(s1,s2);  printf(%s,%s,s1,s2); } 程序执行后的输出结果是(  )。
    A

    1bc,a23

    B

    abc,123

    C

    123,abc

    D

    321,cba


    正确答案: B
    解析:
    字符串是一个特殊的数组,按照数组的规则,s1应该指向的是数组的首地址,即"abc"的第一个字符的地址。s2指向的是"abc"的第一个字符的地址。调用swap函数之后交换的是两个字符串的第一个字符'a'和'1'的内容,答案选择A选项。

  • 第13题:

    对于下面的程序includeincludechar *scmp(char*s1,char*s2){if(strcmp(s1,

    对于下面的程序 #include<stdio.h> #include<string.h> char *scmp(char*s1,char*s2) { if(strcmp(s1,s2)<0)return(s1); else return(s2); } main() { int i:char string[20],sb[3][20]; for(i=0;i<3;i++)gets(str[i]); strcpy(string,scmp(str[0],str[1])); strcpy(string,scmp(string,str[21)); printf("%s\n",string); } 若运行时依次输入abcd、abba和abc三个字符串,则输出结果为______。

    A.abcd

    B.abba

    C.abc

    D.abca


    正确答案:B
    解析:本题自定义函数scrnp()的作用是比较字符串s1和s2的大小,如果s1s2,函数返回s1的值,否则返回s2的值。若运行时依次输入abcd、abba和abc三个字符串,执打strcpy(string,scmp(str[0],str[1]));后,string的值为abba,再执行strcpy(string,scmp(string,str[2]));,由于scmp(string,str[2])返回string的值abba,再拷贝到字符串数组string中,所以本题输出abba。

  • 第14题:

    下列程序的运行结果是()。 include include main() {char*s1="abDuj"; char

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

    #include<stdio.h>

    #include<string.h>

    main()

    { char*s1="abDuj";

    char*s2="ABdUG";

    int t;

    t=strcmp(s1,s2) ;

    printf("%d",t);

    }

    A.正数

    B.负数

    C.零

    D.不确定的值


    正确答案:A
    解析:本题考查字符串比较函数和两个字符串比较的原则两个知识点:①原则是依次比较两个字符串同一位置的一对字符,若它们的ASCII码值相同,则继续比较下一对字符,若它们的ASCII码值不同,则ASCII码值较大的字符所在的字符串较大;若所有字符相同,则两个字符串相等;若一个字符串全部i个字符与另一个字符串的前i个字符相同,则字符串较长的较大。② strcmp(s1,s2)的返回值,当str1str2时,返回值0:当 str1=str2时,返回值为0;当str1>str2,返回值>0。

  • 第15题:

    以下程序的输出结果是()includemain(){chars1[]="123",s2[]="abc",ss[20]="010";strc

    以下程序的输出结果是 ( ) #include<string.h> main() {char s1[]="123",s2[]="abc",ss[20]="010"; strcat(ss+1,strcpy(s2,s1)); printf("%s\n",ss); }

    A.10123

    B.0abc

    C.1123

    D.01abc


    正确答案:A

  • 第16题:

    对于下面的程序includeincludechar * scmp(char * s1,char * s2){if(strcm

    对于下面的程序 #include<stdio.h> #include<string.h> char * scmp(char * s1,char * s2) { if(strcmp(s1,s2)<0)return(s1); else return(s2); } main() { int i;char string[20],str[3][20]; for(i=0;i<3;i++)gets(str[i]); strcpy(string,scmp(str[0],str[1])); strcpy(string,scmp(string,str[2])); printf("%s\n",string); } 若运行时依次输入abcd、abba和abc三个字符串,则输出结果为 ______。

    A.abcd

    B.abba

    C.abc

    D.abca


    正确答案:B
    解析:本题自定义函数scmp()的作用是比较字符串s1和s2的大小,如果s1s2,函数返回s1的值,否则返回s2的值。若运行时依次输入abcd、abba和abc三个字符串,执行strcpy(string,scmp(str[0],str[1]));后,string的值为abba,再执行strcpy(string,scmp(string,str[2]));,由于scmp(stringstr[2])返回string的值abba,再拷贝到字符串数组string中,所以本题输出abba。

  • 第17题:

    下面程序的运行结果是includeincludemain(){ char*s1="AbDeG";char*s2="Ab

    下面程序的运行结果是 #include<stdio.h> #include<string.h> main() { char*s1="AbDeG"; char*s2="AbdEg"; s1+=2;s2+=2; printf("%d\n",strcmp(s1,s2)); }

    A.正数

    B.负数

    C.零

    D.不确定的值


    正确答案:B
    解析:本题考查了用指针处理字符串的方法。用指针处理字符串,首先要使指针指向该字符串。例如本题中的s1="AbDeG"就是使字符指针指向了字符串"AbDeG",而指针s1+=2则是指针向后移动了两个字符的位置,指向了字符‘D’。strcmp则是字符串比较函数。

  • 第18题:

    请读程序:includeincludemain(){char*s1="AbCdEf",*s2="aB";s1++;s2++;pri

    请读程序: #include<stdio.h> #include<string.j> main() { char*s1="AbCdEf",*s2="aB"; s1++;s2++; printf("%d\n",strcmp(s1,s2)); }上面程序的输出结果是______。

    A.正数

    B.负数

    C.零

    D.不确定的值


    正确答案:A
    解析:函数strcmp的功能是比较字符串s1和s2,如果s1>s2,则返回个正数:如果s1s2,则返回负数,否则返回零。由于本题中小写字母b的ASCII码值大于大写字母B,故s1>s2,所以函数的值为正数。

  • 第19题:

    设有如下程序: #include'string.h" main() { static char s1[20],s2[20]; scanf("%s",s1);scanf("%s",s2); if(strcmp(s1,s2)) printf("@"); else printf("$"); printf("%d\n",strlen(strcat(s1,s2))); } 如果从键盘上输入name1<回车>name2<回车>,则程序运行后的输出结果是( )。

    A.$9

    B.@11

    C.$10

    D.@10


    正确答案:D
    解析:本题首先定义了两个字符数组,然后从键盘读入两个字符串"name1"和"name2"分别赋给它们,接下来使用strcmp()函数比较两个字符串是否相等,若不相等就输出一个‘@’字符,否则输出一个‘$’字符,所以本题先输出一个‘@’字符。最后使用strcat()函数将两个字符串连成一个,然后使用strlen()函数求连接后的字符串长度,所以接下来又输出一个10。故本题的正确答案为D。

  • 第20题:

    有以下程序:include void swap(char * x,ehar * y){ char t;t= *x; *x: *y; *y=t;main

    有以下程序:#include <stdio.h>void swap(char * x,ehar * y){ char t; t= *x; *x: *y; *y=t;main ( ){ char *s1 ="abc", * s2 ="123"; swap(s1 ,s2); printf("%s,%s \n" ,s1 ,s2);}程序执行后的输出结果是( )。

    A.123,abe

    B.abe,123

    C.1bc,a23

    D.321,cba


    正确答案:C
    解析:C语言中,字符串常量在内存中是以字符数组的形式存放的,形参字符指针x和y指向的是各字符串的首地址,在swap函数中,*x与*y交换的是字符串的第一个字符,即字符'a'与'1'的交换,而字符串中其他字符保持不变。

  • 第21题:

    下面程序的运行结果是______。 include include fun(char*w,int n) { char

    下面程序的运行结果是______。 #include<stdio.h> #include<string.h> fun(char*w,int n) { char t,*s1,*s2; s1=w;s2=w+n-1; while(s1<s2) {t=*s1++;*s1=*s2--;*s2=t;} } main() { char*p; p="1234567"; fun(p,strlen(p)); puts(p); }

    A.7654321

    B.1714171

    C.1711717

    D.7177171


    正确答案:C

  • 第22题:

    以下程序中函数scmp的功能是返回形参指针s1和s2所指字符串中较小字符串的首地址。 #include <stdio.h> #include <string.h> char *scmp(char*s1,char*s2) { if(strcmp(s1,s2)<0) return(s1); else return(s2); } main() { int i; char string[20],str[3][20]; for(i=0;i<3;i++) gets(str[i]); strcpy(string,scmp(str[0],str[1])); /*库函数strcpy对字符串进行复制*/ strcpy(string,scmp(string,str[2])); printf("%s\n",string); } 若运行时依次输入:abcd、abba和abc三个字符串,则输出结果为( )。

    A.abcd

    B.abba

    C.abc

    D.baca


    正确答案:B
    解析:本题考查返回指针值的函数。一个函数可以带回一个整型值、字符值、实型值等,也可以带回指针型的数据,即地址。函数strcmp(字符串1,字符串2)的作用是比较字符串1和字符中2。如果字符串1=字符串2,函数值为0;如果字符串1,字符串2,函数值为一正整数;如果字符串1字符串2,函数值为一负整数。本题程序中scmp函数的作用是比较s1和s2的大小,对strcmp函数的返回值进行判断,如果字符串1字符串2,则返回字符串1的值,反之返回字符串2的值。所以main函数中scmp(str[0],str[1])的返回值是abba,通过strcpy函数把返回值abba复制到string中。当执行scmp(string,str[2])时,scrap函数的返回值为abba,再次复制到string中,最后string的值为abba。

  • 第23题:

    试题30

    若有定义语句: char *s1=”OK”, *s2=”ok”; , 以下选项中,能够输出”OK”的语句是()

    A.if(strcmp(s1,s2)==0) puts(s1);

    B.if(strcmp(s1,s2)!=0) puts(s2);

    C.if(strcmp(s1,s2)==1) puts(s1);

    D.if(strcmp(s1,s2)!=0) puts(s1);


    正确答案:D
    试题30分析
    strcmp(s1,s2)函数,如果s1>s2,结果大于0;如果s1=s2,结果等于0;如果s1<s2,结果小于0;D项strcmp(s1,s2)!=0成立,所以输出s1。
    试题30答案
    D