若k是int型变量,且有下面程序片段: k=-3; if(k若k是int型变量,且有下面程序片段: k=-3; if(k<=0)printf("# # # #") else printf("& & & &") 上面程序片段的输出结果是 ( )A.# # # #B.& & & &C.# # # & & & &D.有语法错误,无输出结果

题目
若k是int型变量,且有下面程序片段: k=-3; if(k<=0)printf(" ") else printf("& &a

若k是int型变量,且有下面程序片段: k=-3; if(k<=0)printf("# # # #") else printf("& & & &") 上面程序片段的输出结果是 ( )

A.# # # #

B.& & & &

C.# # # & & & &

D.有语法错误,无输出结果


相似考题
更多“若k是int型变量,且有下面程序片段: k=-3; if(k<=0)printf("# # # #") else printf("&amp; &a ”相关问题
  • 第1题:

    以下程序的输出结果是 ( ) main( ) { int w=5;fun(w);printf("\n");} fun (int k) { if (k>0) fun (k-1); printf("%d",k); }

    A.5 4 3 2 1

    B.0 1 2 3 4 5

    C.1 2 3 4 5

    D.5 4 3 2 1 0


    正确答案:B

  • 第2题:

    以下语句段执行后的输出结果是()。includemain(){int k=3;if(k)printf("")elseprint

    以下语句段执行后的输出结果是( )。 #include<stdio.h> main() {int k=3; if(k) printf("###") else printf("&&&&");}

    A.###

    B.&&&&

    C.###&&&&

    D.有语法错误,不能执行


    正确答案:D
    解析:在C语言中语句结束时应该以分号结尾,程序中的第1个printf("###")输出语句后面少了一个分号(;),因此执行程序时会出错。

  • 第3题:

    该程序运行的结果是( )。

    #include

    #include

    #define M 100

    void fun(int m, int *a, int *n)

    { int i,j=0;

    for(i=1;i<=m;i++)

    if(i%7==0||i==0)

    a[j++]=i;

    *n=j;}

    main()

    { int aa[M],n,k;

    clrscr();

    fun(10,aa,&n);

    for(k=0;k

    if((k+1) ==0)printf("\n");

    else printf("M",aa[k]);

    printf("\n");}


    正确答案:
    7

  • 第4题:

    以下程序的输出结果是()。includemain(){int a=-1,b=1,k; if((++a<0)&&! (b--

    以下程序的输出结果是( )。 #include <stdio.h> main() { int a=-1,b=1,k; if((++a<0)&&! (b-- <=0)) printf("%d %d\n",a,b); else printf("%d %d\n",b,a); }

    A.-1 1

    B.0 1

    C.1 0

    D.0 0


    正确答案:C
    解析:本题考查if语句。++a是先自增后使用,b--是先使用后自减。执行++a后,a值为0,不满足条件,所以a为0,b仍为1,接下去执行else语句,输出10。

  • 第5题:

    请编写函数void countValue(int *a,int *n),它的功能是:求出1到1000之内能被7或11整除但不能同时被7和11整除的所有整数并存放在数组a中,并通过n返回这些数的个数。

    注意:部分源程序已给出。

    请勿改动主函数main()和写函数writeDAT()的内容。

    试题程序:

    include<conio.h>

    include<stdio.h>

    void countValue(int *a, int *n)

    {

    }

    main ( )

    {

    int aa[1000],n, k;

    clrscr();

    countValue (aa, &n);

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

    if((k+1) %10 ==0)

    {

    printf("%5d",aa[k]);

    printf("\n");

    }

    else printf("%5d",aa[k]);

    writeDAT();

    }

    writeDAT ( )

    {

    int aa[1000],n, k;

    FILE *fp;

    fp=fopen("out79.dat","w");

    countValue(aa,&n);

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

    if((k+1)%10==0)

    {

    fprintf(fp,"%5d",aa[k]);

    fprintf(fp,"\n");

    }

    else fprintf (fp,"%5d",aa[k]);

    fclose(fp);

    }


    正确答案:void countValue(int *a int *n) { int i; *n=0; for(i=1;i=1000;i++) if(i%7==0 && i%11) /*将能被7整除但不能被11整除的数存入数组a中*/ { *a=i; *n-*n+1; /*统计个数*/ a++; } else if (i%7 && i%11==0) /*将能被11整除但不能被7整除的数存入数组a中*/ { *a=i; *n=*n+1; /*统计个数*/ a++; } }
    void countValue(int *a, int *n) { int i; *n=0; for(i=1;i=1000;i++) if(i%7==0 && i%11) /*将能被7整除但不能被11整除的数存入数组a中*/ { *a=i; *n-*n+1; /*统计个数*/ a++; } else if (i%7 && i%11==0) /*将能被11整除但不能被7整除的数存入数组a中*/ { *a=i; *n=*n+1; /*统计个数*/ a++; } } 解析:本题考查的知识点如下:
    (1)指针的使用。
    (2)“%”运算符。
    (3)判断结构中多个条件的布尔运算。
    本题中,函数countValue()以指针为参数,这里就要涉及到指针的使用。a是指向数组的指针,初始时,指向数组的第一个元素。地址每加1时,依次指向后面的元素。一个数a若能被b整除,则a除以b取余得数为0。能被7或11整除,但不能被7和11同时整除,则有两种情况,能被7整除但不能被11整除,能被11整除但不能被7整除。这里就要用到多个条件的布尔运算。

  • 第6题:

    有以下程序,若从键盘上输入7和3 main(){ int a,b,k; scanf("%d,%d ",&a,&b); k=a; if(a<b)k=a%b; else k=b%a; printf("%d\n ",k);}程序运行后的输出结果是A.7 B.3C.1 D.0


    正确答案:B
    本题考查C语言中的求余数运算。
    题目给出的程序首先通过scanf函数向整型变量a、b输入值7、3。程序最后的结果为输出k的值。if语句中的判别条件为a>b,若该条件成立,则令k等于a整除b后的余数,7整除3后所得到的余数为1。如果判别条件不成立,则令k等于b整除a后的余数,3整除7后所得到的余数为3。显然,判别条件是不成立的,故输出结果为3。

  • 第7题:

    下列给定程序中,函数fun()的功能是:判断一个整数m是否是素数,若是返回l,否则返回0。在main()函数中,若fun()返回1则输出YES,若fun()返回0则输出NO!

    请改正程序中的错误,使它能得出正确的结果。

    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构.

    试题程序:

    include <conio.h>

    include <stdio.h>

    int fun(int m)

    { int k=2;

    while (k<=m&&(m%k))

    /*************found*********************/

    k++

    /*************found*********************/

    if(m=k)

    return 1;

    else return O;

    }

    main ( )

    { iht n;

    clrscr ();

    printf("\nPlease enter n: ");

    scanf ("%d", &n);

    if (fun (n)) printf ("YES\n");

    else printf ("NO! \n");

    }


    正确答案:(1)错误:k++ 正确:k++ (2)错误:if(m=k) 正确:if(m==k)
    (1)错误:k++ 正确:k++ (2)错误:if(m=k) 正确:if(m==k) 解析:函数fun()的功能是判断m是否为素数:m从2开始作为除数,并对m取余,若不存在一个数使得余数为0,则m为素数,程序的错误在于if(m=k)语句中的逻辑表达式写成了赋值表达式。

  • 第8题:

    以下程序的输出结果是#include <conio.h>#include <stdio.h>#define M 100void fun(int m, int *a, int *n){ int i,j=0; for(i=1;i<=m;i++) if(i%7==0||i%11==0) a[j++]=i; *n=j;}main(){ int aa[M],n,k; clrscr(); fun(100,aa,&n); for(k=0;k<n;k++) if((k+1)%20==0)printf("\n"); else printf("%d",aa[k]); printf("\n"); }


    正确答案:77
    在本题中,程序首先定义一个宏M,然后定义一个fun函数,函数带有三个形参,分别是一个整型形参m和两个整型指针形参a、n。在函数体中,首先定义两整型变量i和j,并给j赋初值为0,然后执行循环,循环体中首先是一个条件判断语句,如果结果为真,则说明变量i能同时被7和11整除,并将变量i保存到数组中,循环结束后,将数组中元素的个数通过指针变量n进行返回。通过分析可以知道,fun函数的作用是求取1到m中能同时被7和11整除的整数,并将结果保存到数组a中。
    在主函数中,首先定义了两个整型变量和一个整型数组aa,然后调用clrscr()函数对文本模式窗口进行清除操作。接着调用fun函数,根据上面我们对fun函数的分析,要计算1~100之间能同时被7和11整除的整数,很显然,这样的数只有77一个,那么此时数组aa中只有一个元素为77,而n的值是1。
    接着执行for循环,从程序中不难看出循环的作用是将数组aa中的元素按一定的规则输出,其规则为每行最多只能输出20个值。结合上面的分析,数组aa中只有一个元素为77,因此,本题程序的最终输出结果为77。

  • 第9题:

    若有以下程序段,w和k都是整型变量:

    w=k:

    LB:if(w==0)go to LE;

    W--:

    printf("*")

    goto LB;

    LE;

    则不能与上面程序段等价的循环语句是( )。

    A.for(w=k;w!=0;w--)printf("*");

    B.for(w=k;w;--w)printf("*");

    C.w=k; while(w--!=0)printf("*");

    D.w=k;w++; do{w--;printf("*");}while(w!=0);


    正确答案:C
    当循环结束时,w的值应为-1,而其他选项中w的值为0,故选择C选项。

  • 第10题:

    以下程序的输出结果是()。includeint fan(int);main(){int w=5; fun(w);printf("\n");}

    以下程序的输出结果是( )。 #include <stdio.h> int fan(int); main() { int w=5; fun(w); printf("\n"); } fun(int k) { if(k>0) fun(k-1); printf("%d",k); }

    A.5 4 3 2 1

    B.0 1 2 3 4 5

    C.1 2 3 4 5

    D.5 4 3 2 1 0


    正确答案:B
    解析:本题考查函数的递归调用。fun函数共被调用6次,即fun(5)、fun(4)、fun(3)、fun(2)、fun(1)、fun(0),其中fun(5)是main函数调用的,其余是在fun函数中调用的。

  • 第11题:

    试题12

    有以下程序

    #include <stdio.h>

    main()

    { int c[3]={0}, k, i;

    while((k=getchar())!=’\n’)

    c[k-‘A’]++;

    for(i=0; i<3; i++) printf(“%d”, c[i]); printf(“\n”);

    }

    若程序运行时从键盘输入ABCACC<回车>, 则输出结果为______.


    正确答案:
    试题12分析
    ABCACC使得k-‘A’有两个为0,3个位2,1个为1,即c[0]自增2次,c[1]自增1次,c[3]自增3次。
    试题12答案
      213

  • 第12题:

    问答题
    对于以下程序,   main( )  { int a[5],*p;    int k;    for(k=0,p=a;k0;k--)     printf(“%d”,*(--p));  }  若输入为:1 2 3 4 5(注:表示回车),则输出结果是多少?

    正确答案: 输出结果是54321
    解析: 暂无解析

  • 第13题:

    若执行下面的程序时,从键盘输入5和2,则输出结果是

    main()

    { int a,b,k;

    scanf("%d,%d ",&a,&b);

    k=a;

    if(a<b)k=a%b;

    else k=b%a;

    printf("%d\n",k);}

    A.5

    B.3

    C.2

    D.0


    正确答案:C
    解析:本题考查简单的if卐lse语句。先执行条件if(a<b),显然不成立,在执行else语句。

  • 第14题:

    定义如下变量和数组:

    int k;

    int a[3][3]={9,8,7,6,5,4,3,2,1};

    则下面语句的输出结果是

    for(k=0;k<3;k++)printf("%d",a[k][k]);

    A.7 5 3

    B.9 5 1

    C.9 6 3

    D.7 4 1


    正确答案:B

  • 第15题:

    现有如下程序段

    #include "stdio.h"

    int fun(int k,int *m)

    {if(k%3)*m=k*k;

    else *m=k/3;}

    main()

    { int (*p)(int,int *),m;

    p=fun;

    (*p)(78, &m);

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

    则程序段的输出结果为

    A.24

    B.25

    C.26

    D.27


    正确答案:C

  • 第16题:

    运行下列程序main(){int k=1;{int k=2; printf("%d",k);}printf("%d",k);}的输出是( )

    A.12

    B.21

    C.11

    D.22


    正确答案:B 

  • 第17题:

    若有以下程序段,w和k都是整型变量。w=k;LB:if(w==0)goto LE; w--; printf("*"); goto LB;LE: M则不能与上面程序段等价的循环语句是A.for(w=k;w!=0;w--)printf("*");B.w=k;<CR>while(w--!=0)printf("*");w++;C.w=k;<CR>do { w--;printf("*");}while(w!=0);D.for(w=k;w;--w)printf("*");


    正确答案:C
        本题主要考查几种循环结构的比较。在题目中,给出了一段程序,程序首先对整型变量w赋值;然后定义了一段程序LB,在该段程序中,首先判断变量w是否为零,如果是,则用GOTO语句跳出该段程序至LE,如果不为零,则w自减并输出*,然后用GOTO语句跳到该程序段开始的地方执行。该段程序其实相当于一个循环,循环的结束条件是变量w的值等于零。
        在选项A中,我们可以看到循环结束的条件是变量w的值等于零,而初值也一样,与题目中的程序段意思完全一致。
        在选项B中,我们可以看出循环结束的条件是变量w的值等于零,而程序也是先判断,再执行后面的语句,与原程序段描述的意思一致。
        在选项C中,do-while循环是直到型循环,即先执行一次循环体中的语句后,再判断循环条件,当w的值已经等于0时,循环依然要运行一次,与原程序段描述的内容不一致,是题目的答案。
        在选项D中,循环所描述的内容也与原程序段一致。
        提醒:在完成这类题时,首先需要弄明白原程序段的作用,如果看不懂,则可以比较选项中与其他选项不同的结果。

  • 第18题:

    有以下程序

    #include<stdio.h>

    void fun(int *s)

    { static int j=0;

    do { s[j]=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]);

    printf("\n");

    }

    程序运行后的输出结果是

    A) 12345

    B)23445

    C)34756

    D) 35745


    正确答案:D
    【答案】D
    【知识点】static变量的使用
    【解析】静态局部变量在函数内定义,它的生存期为整个源程序。第一次k=1调用结束后,s[0]的值为3,s[1]的值为5,j的值为2。当k=2时,继续调用函数fun,此时j的值为2,但是因为do while语句先执行后判断,所以执行了s[2]=s[2]+s[3],所以s[2]的值变成了7。循环结束回到主函数,k的值为3,不满足条件结束循环。最后打印输出a数组元素的值。

  • 第19题:

    下面程序输出的是( )。 main { int t=l;fun(fun(t));} fun(int h) { static int a[3]={1.2.3}; int k; for(k=0;k<3;k++)a[k]+=a[k]-h; for(k=0;k<3;k++)printf("%d",a[k]); printf("\n"); return(a[h]);}

    A.1,2,3, 1,5,9,

    B.1,3,5, 1,3,j,

    C.1,3,5, 0,4,8,

    D.1,3。5, -1,3,7,


    正确答案:D
    本题考查双重函数调用及for循环使用,fun函数中第一个for循环语句的作用是给数组a赋值。当第一次调用fun函数时,把实参1传给形参,输出a数组的元素为1,3,5;第二次调用fun函数时,由于数组a为静态局部变量,故输出a数组的元素为一1,3,7。

  • 第20题:

    下面程序的运行结果是#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。

  • 第21题:

    以下程序的输出结果是______。

    A.54321

    B.12345

    C.1 2 3 4 5

    D.5 4 3 2 1 0 main() { int w=5;fun(w);printf("\n");} fun (int k) { if(k>0) fun(k-1); printf("%d"",k);}


    正确答案:B

  • 第22题:

    阅读下面语句,则程序的执行结果是【 】。

    include "stdio.h"

    main()

    { int a=-1,b=1,k;

    if((++a<0)&&!(b--<=0))

    printf("%d,%d\",a,b);

    else printf("%d,%d\n",b,a);}


    正确答案:10
    1,0 解析:与运算两边的语句必须同时为真时,结果才为真。当执行完if((++a<0)&&!(b--<=0))时,a,b的值已经发生了变化。

  • 第23题:

    对于以下程序,   main( )  { int a[5],*p;    int k;    for(k=0,p=a;k<5;k++,p++)     scanf(“%d”,p);    for(;k>0;k--)     printf(“%d”,*(--p));  }  若输入为:1 2 3 4 5(注:表示回车),则输出结果是多少?


    正确答案:输出结果是54321