以下程序的运行结果是______。 main() { char t=02; printf("%d\n",t=++t>>2); }A.0B.1C.2D.3

题目

以下程序的运行结果是______。 main() { char t=02; printf("%d\n",t=++t>>2); }

A.0

B.1

C.2

D.3


相似考题
更多“以下程序的运行结果是______。main(){ char t=02;printf("%d\n",t=++t>>2);}A.0B.1C.2D.3 ”相关问题
  • 第1题:

    有以下程序

    void ss(char *s,char t)

    { while(*s)

    { if(*s==t)*s=t-′a′+′A′;

    s++; } }

    main()

    { char str1[100]="abcddfefdbd",c=′d′;

    ss(str1,c); printf("%s\n",str1);}

    程序运行后的输出结果是

    A.ABCDDEFEDBD

    B.abcDDfefDbD

    C.abcAAfefAbA

    D.Abcddfefdbd


    正确答案:B
    解析:在内存中,字符数据以ASCII码存储,它的存储形式与整数的存储形式类似。C语言中,字符型数据和整型数据之间可以通用,也可以对字符型数据进行算术运算,此时相当于对它们的ASCII码进行算术运算,在本题中,s++相当于s=s+1,即让s指向数组中的下一个元素。

  • 第2题:

    有以下程序:includevoid f(char *s, char *t){ char k;k=*s;*s=*t; *t=k;s++;t- -;

    有以下程序:#include <string .h>void f(char *s, char *t){ char k; k=*s; *s=*t; *t=k; s++; t- -; if(*s) f(s, t);}main(){ char str[10]="abcdefg",*p; p=str+strlen(str)/2+ 1; f(p,p-2); printf("%s\n", str);}程序运行后的输出结果是( )。

    A.abcdcfg

    B.gfedcba

    C.gbcdefa

    D.abedcfg


    正确答案:B
    解析:本题定义的函数f()是一个递归函数。它先交换两个字符指针所指的内容,然后将第1个指针往后移动—位,第2个指针往前移动一位,如果第1个指针所指内容不是字符串结束标志,则递归调用自身。主函数中首先定义了—个字符数组sir[10]=“ahcdeft”然后定义了一个字符指针p=str+strlen(str)/2+1,即让p指向str+4(或&str[4])的位置。然后调用f(p,p-2);,这使得p所指的str[4]及其以后的2个位置str[5]、str[6]中的内容同p-2所指的str[p]及其以前的2个位置str[1]、str[0]中的内容互相交换。即让整个字符串逆序。所以本题应该选择B。

  • 第3题:

    下面程序的运行结果是( )。 define POW(r)r*r main() {int x=2,y=3,t; t=POW(x+y); printf("%d\n",t); }


    正确答案:11
    11

  • 第4题:

    以下程序的输出结果是( )。 main {int x=0.5;char z=a; printf("%d\n",(x&1)&&(z<2));}A.0S

    以下程序的输出结果是( )。 main {int x=0.5;char z=a; printf("%d\n",(x&1)&&(z<2));}

    A.0

    B.1

    C.2

    D.3


    正确答案:B
    (x&1)&&(z<2)=(0.5&1)&&(a<z)=1&&1=1,故选择B选项。

  • 第5题:

    以下程序的输出结果是()includeincludemain(){char str[12]={'s','t','r',

    以下程序的输出结果是( ) #include<stdio.h> #include<string.h> main() {char str[12]={'s','t','r','i','n','g'}; printf("%d\n",strlen(str)); }

    A.6

    B.7

    C.11

    D.12


    正确答案:A

  • 第6题:

    下列程序的运行结果是()。 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。

  • 第7题:

    若有如下程序: main() {char a[]={"1234"};int i,t=0; for(i=0;a[i]>='0'&&a[i]<='9';i+=2) t=10*t+a[i]一-'0'; printf("%d\n',t);} 则程序运行后的输出结果是( )。

    A.13

    B.1234

    C.24

    D.123


    正确答案:A
    解析:程序中首先以字符串常量定义并初始化了一个字符数组a,此时数组a包含5个元素{'1','2','3','4','\0'},然后定义了一个变量t,并初始化为0。接下来是一个for循环,循环变量i从0开始每次递增2,循环条件a[i]是一个数字字符。因为a[0]、a[2]分别是数字字符'1'、'3'而a[4]不是,所以循环体执行了两次,第一次执行前t为0,执行后t=10*t+a[i]-'0'=10*0+'1'-'0'=1,所以第二次执行结果为t=10*t+a[i]-'0'=10*1+'3'-'0'=13。程序运行后的输出结果是13,本题选A。

  • 第8题:

    以下程序的输出结果是()。includeinclude main(){char str[12]={'s','t','r

    以下程序的输出结果是( )。 #include <stdio.h> #include <string.h> main() { char str[12]={'s','t','r','i','n','g'}; printf("%d\n",strlen(str) ); }

    A.6

    B.7

    C.11

    D.12


    正确答案:A
    解析:本题考查求字符串的长度。程序中定义字符串str时中请了12个字节的内存空间,对它赋初值后,函数strlen在求串长度时,以'\0'作为串结束符,所以,strlen(str)的值为6。

  • 第9题:

    下面程序的运行结果是#include #define SIZE 12sub(char *a,int t1,int t2) { char ch; while(t1<t2) { ch=*(a+t1); *(a+t1)=*(a+t2); *(a+t2)=ch; t1++;t2--; }} main() { char s[SIZE]={’A’,’B’,’C’,’D’,’E’,’F’,’G’,’H’,’I’,’J’,’K’,’L’}; int i; sub(s,7,SIZE-1); for(i=0;i<SIZE;i++) printf("%c ",s[i]); printf("\n");}


    正确答案:A B C D E F G L K J I H
    在本题中,程序首先定义了一个大小为12的宏SIZE,然后定义了一个函数sub,该函数带有三个形参,第一个为字符型指针变量,另外两个为整型变量。
    在主函数中,首先定义了一个大小为宏SIZE的字符型数组s,并对其进行了初始化操作,然后定义一个循环变量i,接着调用函数sub,传递的实参分别为数组名s,7和数组长度减1,此时程序运行到sub函数,在该函数体中,首先运行while循环,该循环的结束条件为t1<t2,从传递的参数可以知道t1和t2的初值分别为7和11。
    第一次循环时,将*(a+t1)即a[7]的值赋值给ch,然后将*(a+t2)即a[11]的值赋给a[7],将ch的值赋给a[11],从分析可以知操作其实是交换*(a+t1)与*(a+t2)的值,即a[7]和a[11]的值,然后变量t1加1为8,t2减1为10。
    由于8<10,程序进行第二次循环,即交换数组元素a[8]和a[10]的值,然后变量t1加1为9,t2减1为9。由于这两个变量的值相等,循环结束。
    循环结束后,数组s中各元素的值分别为A、B、C、D、E、F、G、L、K、J、I、H,最后主函数用一个循环,输出数组s中各元素的值,因此,最后输出的结果是A B C D E F G L K J I H。

  • 第10题:

    有以下程序: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'的交换,而字符串中其他字符保持不变。

  • 第11题:

    有以下程序

    #include <stdio.h>

    void fun(char *t,char *s)

    {while(*t!=0) t++;

    while(*t++=*s++)!=0);

    }

    main()

    {char ss[10]=”acc”,aa[10]=”bbxxyy”;

    fun(ss,a

    A.; printf(“%s,%s\n”,ss,a

    A.;

    }

    程序的运行结果是( )。

    A.accxyy,bbxxyy

    B.acc,bbxxyy

    C.accxxyy,bbxxyy

    D.accbbxxyy,bbxxyy


    正确答案:D

  • 第12题:

    单选题
    有以下程序#include void fun(char *t,char *s){ while(*t!=0)t++; while((*t++=*s++)!=0);}main(){ char ss[10]="acc",aa[10]="bbxxyy"; fun(ss,aa); printf("%s,%s",ss,aa);}程序的运行结果是(  )。
    A

    accbbxxyy,bbxxyy

    B

    acc,bbxxyy

    C

    accxxyy,bbxxyy

    D

    accxyy,bbxxyy


    正确答案: C
    解析:
    函数fun的功能是将第二个字符串链接到第一个字符串的末尾,第二个字符串不变。答案选择A选项。

  • 第13题:

    有以下程序: #include<stdio.h> main { char s[]="rstuv"; printf("%c\n",*s+2); } 程序运行后的输出结果是( )。

    A.tuv

    B.字符t的ASCIl码值

    C.t

    D.出错


    正确答案:C
    本题中,语句printf函数输出的是字符指针S所指变量的ASCIl表对应值,即ASCIl表中值为s[0]+2的字符。所以选C。

  • 第14题:

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

    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

  • 第15题:

    有以下程序:includevoid f(char*s,char*t){ char k;k=*s;*s=*t;*t=k;s++;t--;if(*s)f

    有以下程序: #include<string.h> void f(char*s,char*t) { char k; k=*s; *s=*t; *t=k; s++; t--; if(*s) f(s,t); } main( ) {char str[10]="abcdefg",*p; p=str+strlen(str)/2+1; f(p,p-2); printf(~%s\n",str); } 程序运行后的输出结果是 ______。

    A.abcdef

    B.gfedcba

    C.gbcdefa

    D.abedcfg


    正确答案:B
    解析:p=str+strlen(str)/2+1=str+4,f(p,p-2)的功能是将p[4]与p[2]互换,p[5]与p[1]互换,p[6]与p[0]互换,最后的结果为gfedcba。

  • 第16题:

    下面程序的运行结果是( )。include define SlZE 12 main() {char s[SIZE];int i;for(i=0

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

    include<stdio.h>

    define SlZE 12

    main()

    {char s[SIZE];int i;

    for(i=0;i<SIZE;i++) s[i]='A'+i+32;

    sub(s,5,SIZE-1);

    for(i=0;i<SIZE;i++)printf("%c",s[i]);

    printf("\n");}

    sub(char *a,int t1,int t2)

    { char ch;

    while(t1<t2)

    { ch=*(a+t1);

    *(a+t1)=*(a+t2);

    *(a+t2)=ch;

    t1++;t2--;

    }

    }


    正确答案:abcdelkjihgf
    abcdelkjihgf 解析:本题先给字符型数组s的12个元素赋值a到1共12个字母,函数sub(char*a,int t1,int t2)的功能是将数组a的从第t1+1个元素到t2+1个元素进行逆置,在主函数中调用sub(s,5,SIZE-1)函数,是将数组s的第6个元素到第12个元素进行逆置,其他元素位置不变。

  • 第17题:

    有以下程序: include void f(char *s,char *t) {char k; k=*s; +s=*t;

    有以下程序: #include<string.h> void f(char *s,char *t) {char k; k=*s; +s=*t; *t=k; S++; t--; if(*s) f(s,t); } main() {char.str[10]="abcdefg",*p; p=str+strlen(str) /2+1; f(p,p-2); printf("%s\n",str); } 程序运行后的输出结果是 ______。

    A.abcdefg

    B.gfedcba

    C.gbcdefa

    D.abedcfg


    正确答案:B
    解析:本程序的作是将字符串str倒序。语句“p=str+strlen(str)/2+1;”用于将指针变量p指向e字符所在的存储单元,p-2指向了c字符所在的存储单元,在函数f中将这两个存储单元的内容交换,并使得f函数中指向c字符的指针变量s加1。指向c字符的指针变量t减1,然后继续将s和t指向的存储单元的内容进行交换,直到s指向的存储单元的内容为空为止。所以本题程序输出的结果是字符串“abcdefg”的倒序形式“gfedcba”。

  • 第18题:

    有以下程序 void ss(char *s,char t) { while { *s) if (*s==t) *s-t-'a' +'A'; S++; main () { char strl [100] =" abcddfefdbd" , c= 'd'; ss(str1,c); printf ("%s\n" ,str1); } 程序运行后的输出结果是

    A.ABCDDEFEDBD

    B.abcDDfefDbD

    C.abcAAfefAbA

    D.Abcddfefdbd


    正确答案:B
    解析:本题中的函数ss()有两个参数,一个是字符型指针变量s,另一个是字符型变量t在函数中通过一个while循环,在循环中一次取出s指向的字符串并判断它是否和t中存放的字符相同,若相等,则执行“s=t-'a'+'A':”(若是小写字母,则把它转换成大写字母)语句。在主函数中执行函数调用ss(strl,c),很显然是把str1数组中所有字符“d”变成大写字母,其他字符不变。所以4个选项中B正确。

  • 第19题:

    有以下程序 void ss(char *s,char t) { while(*s) { if(*s==t)*s=t-'a'+'A'; s++; } } main() {char strl[100]=“abcddfefdbd”,c=‘d’; ss(strl,c);printf(“%s\n”,strl); } 程序运行后的输出结果是

    A.ABCDDEFEDBD

    B.abeDDfefDbD

    C.abcAMefAbA

    D.Abcddfefdbd


    正确答案:B
    解析:本题中的函数ss()有两个参数,一个是字符型指针变量s;另一个是字符型变量t。在函数中通过一个while循环,在循环中一次取出e指向的字符串并判断它是否和t中存放的字符相同,若相等,则执行“*s=t-'a'+'A';”(若是小写字母,则把它转换成大写字母)语句。在主函数中执行函数调用ss(strl,c),很显然是把stfl数组中所有字符“d”变成大写字母,其他字符不变。

  • 第20题:

    下列程序的运行结果是______。

    define POW(r)(r)*?

    main()

    { int x=3,y=2,t;

    t=POW(x+y);

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

    }


    正确答案:
    解析: 本题考查带参数的宏的定义及相关运算。运算过程为:t=POW(x+y)=(2+3)*(2+3)=25。

  • 第21题:

    有以下程序 void ss(char*s,char t) { while(*s) { if(*s==t)*s=t-'a'+'A'; s++; }} main() { char strl[100]="abcddfefdbd",c='d'; ss(str1,c);printf("%s\n",strl);} 程序运行后的输出结果是

    A.ABCDDEFEDBD

    B.abcDDfefDbD

    C.abcAAfefAbA

    D.Abcddfefdbd


    正确答案:B
    解析:在内存中,字符数据以ASCII码存储,它的存储形式就与整数的存储形式相类似。C语言使字符型数据和整型数据之间可以通用。也可以对字符数据进行算术运算,此时相当于对它们的ASCII码进行算术运算,在本题中,s++相当于s=s+1,即让s指向数组中的下一个元素。

  • 第22题:

    下面程序输出的结果是()。includemain(){char *a="1234";fun(a);printf("\n");}fun(cha

    下面程序输出的结果是( )。 #include<stdio.h> main() { char *a="1234"; fun(a); printf("\n"); } fun(char *s) { char t; if(*s) { t=*S++;fun(s);} else return; if(t!='\0') putchar(t); }

    A.1234

    B.4321

    C.1324

    D.4231


    正确答案:B
    解析:本题的fun()函数是用递归法实现逆序输出一个字符串。函数中首先定义一个局部变量t,然后s所指的内容是否为字符串结束符,不是的话将s所指的内容赋给t,同时使s后移一位,然后递归调用fun(s)。到这条语句为止是递归过程,即接下来连续递归调用fun(s)都只会执行到这一半,直到回朔条件(s所指内容是字符串结束符)出现,fun()函数连续返回,判断t不等于0的话,就输出t,所以输入的字符串被逆序输出,故本题的正确答案应该是B。

  • 第23题:

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

    • A、abe,123
    • B、123,abc
    • C、321,cba
    • D、1bc,a23

    正确答案:D