更多“单选题有以下程序:#include main(){ int k=10; printf(%4d,%o,%x,k,k,k);}程序的运行结果是(  )。(u代表一个空格)A 10,12,aB uu10,012,aC 010,12,aD uu10,12,a”相关问题
  • 第1题:

    以下程序的运行结果是( )。 define S(x)x*x main() {int k=1; while(k<=4) {printf("%d,",S(k)); k++;}


    正确答案:14916
    1,4,9,16, 解析:分析程序执行过程,第1次循环,k=1时,此时s(1)=1*1=1,然后k的值加1;第2次循环,k=2时,s(2)=2*2=4,然后k的值加1;第3次循环,k=3时,s(3)=3*3=9,然后k的值加1;第4次循环,k=4时,s(4)=4*4=16,然后k的值加1;当k=5时,条件不满足,退出循环。

  • 第2题:

    以下程序的输出结果是_______。includedefine SQR(x)x*xmain(){int a;k=3; a=++SQR(k+

    以下程序的输出结果是_______。 #include<stdio.h> #define SQR(x)x*x main() { int a;k=3; a=++SQR(k+1); printf("%d\n",a) ; }

    A.8

    B.9

    C.17

    D.20


    正确答案:B
    解析:本题宏替换中遇到形参x以实参k+1代替,其他字符不变。SQR(k+1)展开后应为字符串k+1*k+1。

  • 第3题:

    以下程序的输出结果是( )。 include main()fint x=0; sub(&x,16,2); printf("%d\n",

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

    include<stdio.h>

    main()

    fint x=0;

    sub(&x,16,2);

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

    }

    sub(int*a,int n,int k)

    {if(k<=n) sub(a,n/2,2*k);

    *a+=k;

    }


    正确答案:14
    14 解析:本题考查递归函数的调用。在主函数中调用sub(&x,16,2)函数,此时n=16,k=2,if语句的控制的条件k=n成立,所以执行下面的语句,调用sub(x,8,4),此时n=8,k=4,if语句的控制条件k=n成立,所以执行下面的语句,调用sub(x,4,8),此时n=4,k=8,if语句控制的条件k=n不成立,因此,最后得x=2+4+8=14。

  • 第4题:

    有以下程序:includeint fun(int*k){int b=0;b=*k+b:return(B);}main(){int a[10]={1,2

    有以下程序: #include<stdio.h> int fun(int*k) {int b=0; b=*k+b: return(B);} main() {int a[10]={1,2,3,4,5,6,7,8},i; for(i=2;i<4;i++){printf("%d",fun(&a[i]));} printf("\n"); } 程序运行后的输出结果是( )。

    A.10 12

    B.8 10

    C.3 4

    D.10 28


    正确答案:C

  • 第5题:

    下面程序的运行结果是#include "stdio.h" void fun(int k,int *p) { int a,b; if(k==1|| k==2) *p=1; else { fun(k-1,&a); fun(k-2,&b); *p=a+b; } }main(){ int x; fun(6,&x); printf("%d\n",x);}


    正确答案:8
    本题主要考查函数的递归调用。在本题中,程序首先定义了一个无返回类型的fun函数,该函数带有一个整型变量的形参和一个指针型的变量形参。从函数体中我们可以看出,该递归函数的出口是形参k的值等于1或2,如果运行到函数出口,则指针变量形参p的值等1。
    在主函数中,首先定义了一个整型变量x,然后调用fun函数,传递的实参分别为6和变量x的地址,然后程序运行fun函数,在fun函数中,首先定义了两个整型变量a和b,然后判断形参变量k的值是否到达函数出口,这时,k的值为6,没有到达出口,然后程序分别递归执行fun(5,&a)和fun(4,&b)。从程序中可以看出,p的值为分别调用两个函数的p值的和。
    首先执行fun(5,&a)时,k=5,没有到达出口,又进行一次递归,分别执行fun(4,&a)和fun(3,&b),由于都没达到出口,分别执行fun(3,&a)和fun(2,&b),fun(2,&a)和fun(1,&b),由于fun(2,&a)和fun(1,&b)返回的p值都为1,那么fun(3,&a)返回p的值为2,fun(4,&a)返回的p值就等于fun(3,&a)和fun(2,&b)之和,为3,同理可以得出fun(5,&a)返回的p值为5,fun(6,&a)返回的p值为8。因此,最后题目要求输出的结果为8。

  • 第6题:

    以下程序的运行结果是()。includedefine MIN(x,y) (x)<(y)? (x):(y)main(){int i=10,j

    以下程序的运行结果是( )。 #include <stdio.h> #define MIN(x,y) (x)<(y)? (x):(y) main() { int i=10,j=15,k; k=10*MIN(i,j); printf("%d\n",k); }

    A.10

    B.15

    C.100

    D.150


    正确答案:B
    解析:该题考查函数的宏定义及三目运算符。表达式10*MIN(i,j)利用宏展开后为:10*ij?i:j,即10015?10:15,其值为15,然后将15赋给k。

  • 第7题:

    有以下程序: include main ( ) {int k=5,n =0; while ( k>0){switch (k) {default: b

    有以下程序: #include <stdio, h>main ( ) { int k=5,n =0; while ( k>0) { switch (k) { default: break; case 1 : n+ =k; case 2 : case3 : n+ =k; } k--; printf( "% d \n" ,n);}程序运行后的输出结果是( )。

    A.0

    B.4

    C.6

    D.7


    正确答案:D
    解析:在程序中,当L的值为5和4时,case都没有与其匹配的值,所以执行default语句;当k=3时,执行n+=k;得n=3;当L=2时,执行case2:然后顺序执行case3:n+=k;得n=5;当k=1时,执行case1:n+=k;得n=6,然后顺序执行case2:和case3:n+=k;使得n=7。

  • 第8题:

    以下程序的输出结果是()。includemain(){int k=17; printf("%d,%o,%x\n",k,k,k);}A.17,

    以下程序的输出结果是( )。 #include <stdio.h> main() { int k=17; printf("%d,%o,%x\n",k,k,k); }

    A.17,021,0x11

    B.17,17,17

    C.17,0x11,021

    D.17,21,11


    正确答案:D
    解析:printf函数对不同类型的数据用不同的格式描述符,“%d”是以带符号的十进制形式输出整数(正数不输出符号);“%o”以八进制无符号形式输出整数(不包括前导符0);“%x”以十六进制无符号形式输出整数(不包括前导符0x)。

  • 第9题:

    下列程序的运行结果是()。includedefine ADD(x) x+xmain(){int m=1,n=2,k=3; int s=AD

    下列程序的运行结果是( )。 #include<stdio.h> #define ADD(x) x+x main() { int m=1,n=2,k=3; int s=ADD(m+n)*k; printf("s=%d",s); }

    A.sum=18

    B.sum=10

    C.sum=9

    D.sum=25


    正确答案:B
    解析:本题考查带参数的宏的定义及相关运算:s=m+n+m+n*k=1+2+1+2*3=10。

  • 第10题:

    单选题
    有以下程序#include main (){ int a[5] = {2,4,6,8,10},*p,**k; p = a; k = &p; printf(%d,*(p++)); printf(%d,**k);}程序运行后的输出结果是(  )。
    A

    24

    B

    44

    C

    22

    D

    46


    正确答案: C
    解析:
    p是int类型的指针,指向数组a的首元素;k的int *类型的指针,指向p的地址,即k指针和p指针都指向元素2的位置。*(p++),先使用p的值,输出该地址对应的存储空间的值,即输出2,再执行p++,p指向a中第二个元素;k指针始终指向p的地址,那么*k的值就是p本身的值,即a[1]的地址,**k的值就是a[1],输出4。答案选择A选项。

  • 第11题:

    单选题
    有以下程序:#include void fun(int *x,int s,int n){ int i; for(i=s;i>=n;i--)  *(x+i+3)=*(x+i);}main(){ int m[]={0,1,2,3,4,5,6,7,8,9},k; fun(m,10-4,3); for(k=0;k  printf("%d",m[k]);}程序的运行结果是(  )。
    A

    0123456345

    B

    0123453456

    C

    0123456666

    D

    0123454569


    正确答案: C
    解析:
    程序的执行过程为:定义数组m,并为其赋初值,数组长度为10。调用函数fun(m,6,3)。函数实现对数组m[6]~m[9]的重新赋值,令m[9]=m[6],m[8]=m[5],m[7]=m[4],m[6]=m[3],for循环结束之后数组为m= {0,1,2,3,4,5,3,4,5,6}。依次输出数组元素,答案选择B选项。

  • 第12题:

    单选题
    有以下程序:#include void fun(int *s,int t,int *k){ int p; for(p=0,*k=p;p  if(s[p]>s[*k])*k=p;}main(){ int a[10]={11,12,13,14,15,16,20,18,19,10},k; fun(a,10,&k); printf("%d,%d",k,a[k]);}程序运行后的输出结果是(  )。
    A

    6,20

    B

    10,9

    C

    7,20

    D

    10,10


    正确答案: A
    解析:
    调用函数fun,将数组的地址、数组长度、变量k的地址传入函数。for函数实现查找数组中最大值,将其下标值存入变量k标志的内存单元。输出k=6,a[6]=20。答案选择A选项。

  • 第13题:

    有以下程序#include <stdio.h>void fun(int s[]){ static int j=0; do s[j]+=s[j+1]; while(++j<2);}main(){ int k,a[10]={1,2,3,4,5}; for(k=1;k<3;k++) fun(a); for(k=0;k<5;k++) printf("%d",a[k]);}程序的运行结果是A.34756 B.23445C.35745 D.12345


    正确答案:C
    在本题中,首先定义了一个fun函数,函数中的形参是一个数组,该函数中首先定义了一个静态整型变量j并赋了初值,注意,静态变量的作用域是整个程序,而非该函数。从该函数的程序段不难看出该函数的作用是通过一个循环求形参数组中相邻两个元素(具体根据j确定)的和,并保存。
    在主函数中,定义了一个数组并赋初值,然后用循环调用fun函数。
    当k=1时,调用fun函数,此时刚开始j的值为0,那么fun函数分别计算数组a中的第一个元素与第二个元素的和与第二个元素与第三个元素的和,并分别保存为数组的第一个元素和第二个元素,结果分别为3和5。
    当k=2时,调用fun函数,此时j的值为2,那么fun函数只计算数组a中的第三个元素与第四个元素的和,并保存为数组的第三个元素,结果为7。
    循环结束,经过该层循环后,数组a中各元素的值分别为3、5、7、4、5,最后用循环输出结果为35745。因此,答案选C。

  • 第14题:

    有以下程序

    #include <stdio.h>

    #define S(x) (x)*x*2

    main( )

    { int k=5, j=2;

    printf( "%d,”,s(k+j) ); printf(”%d\n”,s( (k-j) ) );

    }

    程序运行后的输出结果是

    A) 98,18

    B) 39,11

    C) 39,18

    D) 98,11


    正确答案:C
    【答案】C
    【知识点】带参数的宏定义
    【解析】第一次打印的值为(k+j)*k+j*2=7*5+2*2=39。第二次打印的值为(3)*3*2=18。

  • 第15题:

    以下程序的输出结果是______。includedefme SQR(x)x*xmain(){int a,k=3; a=++SQR(k+1)

    以下程序的输出结果是______。 #include<sulio.h> #defme SQR(x)x*x main() { int a,k=3; a=++SQR(k+1); printf("%d\n",a) ; }

    A.8

    B.9

    C.17

    D.20


    正确答案:B
    解析:本题宏替换中遇到形参x以实参k+l代替,其他字符不变。SQR(k+1)展开后应为字符串k+l*k+l。

  • 第16题:

    有以下程序:includemain(){int k=4,n=0; for( ;n

    有以下程序: #include <stdio.h> main() { int k=4,n=0; for( ;n<k;) { n++; if(n%3! =0) continue; k--;} printf("%d,%d\n",k,n); } 程序运行后的输出结果是( )。

    A.1,1

    B.2,2

    C.3,3

    D.4,4


    正确答案:C
    解析:本题考查循环和continue语句,continue语句的功能是结束本次循环。n从0开始循环,判断n%3!=0是否成立,如果成立,结束本次循环,继续下一次for循环;否则执行k--,并继续下一次for循环,直至循环结束。在程序中,当n取1,2时,不执行k--,当n取3时,执行k--,k变为3,循环结束,输出k,n的值分别为3,3。

  • 第17题:

    以下程序的输出结果是#include "stdio.h"int *fun(int *a,int *b){ int m; m=*a; m+=*b-3; return(&m);}main(){ int x=21,y=35,*a=&x,*b=&y; int *k; k=fun(a,b); printf("%d\n",*k);}


    正确答案:53
    本题考查指针函数的使用。题目给出的程序包括两个部分,一个为指针函数fun,一个为主函数main。主函数main部分给出两个整型变量x和y,并给出相应的赋值。main函数的执行结果为输出*k的值,而*k的值即*fun的值。fun函数包括两个整型指针形参*a和*b。通过对*a、*b进行操作,得到结果m,并将m值返回,整个程序的实际输出即为m的值。初始时,m=*a=21。随后令m=m+*b-3,得m=53。整个程序的输出结果即为53。

  • 第18题:

    下列程序的运行结果是()。 include define ADD(x)x+x main() {int m=1,n=2,k=3; int s

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

    #include<stdio.h>

    #define ADD(x)x+x

    main()

    { int m=1,n=2,k=3;

    int s=ADD(m+n)*k;

    printf("s=%d",s);

    }

    A.sum=18

    B.sum=10

    C.sum=9

    D.sum=25


    正确答案:B
    解析:本题考查带参数的宏的定义及相关运算: S=m+n+m+n*k=1+2+1+2*3=10。

  • 第19题:

    有以下程序: include define M 5 define f(x,y) x*y+M main( ) { int k; k=f(2,3)*f(2,3); printf("%d\n",k); } 程序的运行结果是( )。

    A.22

    B.41

    C.100

    D.121


    答案:B
    解析:宏定义中的函数在调用时只做简单的替换,不能进行任何修改。所以k=2*3+5*2*3+5=41。

  • 第20题:

    下列程序的运行结果是()。includevoid fun(int *a, int *b){int *k; k=a; a=b; b=k;}ma

    下列程序的运行结果是( )。 #include <stdio.h> void fun(int *a, int *b) { int *k; k=a; a=b; b=k; } main() { int a=3,b=6, *x=&a, *y=&b; fun(x,y); printf("%d%d",a,b);

    A.6 3

    B.3 6

    C.编译出错

    D.0 0


    正确答案:B
    解析:程序看上去是要实现交换两个指针的值,但是C语言中实参变量和形参变量之间的数据传递是单向的“值传递”,指针变量做函数参数也要遵循这一规则。调用函数不能企图通过改变形参指针的值而使实参指针的值也改变。所以本题的输出结果是36。

  • 第21题:

    有以下程序 union myun { struct {int x,y,z;}u; int k; }a; main() { a.u.x=4;a.u.y=5;a,u.z=6; a.k=0; printf("%d\n",a.u.x); } 程序运行后的输出结果是( )

    A.4

    B.5

    C.6

    D.0


    正确答案:D

  • 第22题:

    单选题
    有以下程序:#include #include main(){ char a[20]=ab,b[20]=cdef; int k=0; strcat(a,b); while(a[k]!='\0') {  b[k]=a[k];  k++; } puts(b);}程序的运行结果是(  )。
    A

    abcdef

    B

    cbcdef

    C

    cdef

    D

    ab


    正确答案: A
    解析:
    strcat把字符串a,b连接起来放在数组a中,while语句再将字符串a赋给字符串b。答案选择A选项。

  • 第23题:

    单选题
    有以下程序(其中k的初值为八进制数):#include main(){ int k=011; printf(%d,k++);}程序运行后的输出结果是(  )。
    A

    12

    B

    11

    C

    10

    D

    9


    正确答案: C
    解析:
    整型变量k的值“011”是用八进制表示的,即十进制的“9”,而输出格式为%d,即十进制格式,所以输出为“9”,然后k自增1。答案选择D选项。