若希望下列的程序运行后输出25,程序空白处的正确选项是( )。 main { int id=50,a[]=(7,4,10,5,8}; for( ) j+=a[i]; printf("%d",j-40); }A.i=1;i<4;++iB.i=l;i<3;++iC.i=4;i>2;i--D.i=2;i<4;++i

题目

若希望下列的程序运行后输出25,程序空白处的正确选项是( )。 main { int id=50,a[]=(7,4,10,5,8}; for( ) j+=a[i]; printf("%d",j-40); }

A.i=1;i<4;++i

B.i=l;i<3;++i

C.i=4;i>2;i--

D.i=2;i<4;++i


相似考题
更多“若希望下列的程序运行后输出25,程序空白处的正确选项是( )。 main { int id=50,a[]=(7,4,10,5,8}; for( ) j+=a[i]; printf("%d",j-40); }A.i=1;i4;++iB.i=l;i3;++iC.i=4;i2;i--D.i=2;i4;++i”相关问题
  • 第1题:

    有以下程序

    #include <stdio.h>

    main()

    { int a[ ]={2,3,5,4},i;

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

    switch(i%2)

    { case 0:switch(a[i]%2)

    {case 0:a[i]++;break;

    case 1:a[i]--;

    }break;

    case 1:a[i ] =0;

    }

    for(i=0;i<4;i++) printf("%d",a[i]); printf("\n");

    }

    程序运行后的输出结果是

    A)3 3 4 4

    B)2 0 5 0

    C)3 0 4 0

    D)0 3 0 4


    正确答案:C

  • 第2题:

    若有以下程序

    #include <stdio.h>

    int a[]={2,4,6,8};

    main()

    { int i;

    int *p=a;

    for(i=0;i<4;i++)a[i]=*p;

    printf("%d\n",a[2]);}

    上面程序的输出结果是

    A.6

    B.8

    C.4

    D.2


    正确答案:D
    解析:在C语言中,数组元素下标是从0开始的;指针变量p指向数组的首地址。for循环语句中,指针变量p始终指向数组的首地址,因而执行循环赋值语句后数组各元素的值均变为2。

  • 第3题:

    若希望下列的程序运行后输出25,程序空白处的正确选项是( )。

    main()

    {int i,j=50,a[]={7,4,10,5,8};

    for( )

    j+=a[i];

    primf("%d,j-40);

    }

    A.i=1;i<4;++i

    B.i=1;i<3;++i

    C.i=4;i>2;i--

    D.i=2;i<4;++i


    正确答案:D
    解析:要想使程序输出是25,则j-40=25,j=65,而j初值是50,所以填入for循环中的语句,使引用的数组元素累加为65-50=15即可。

  • 第4题:

    若希望下列的程序运行后输出25,程序空白处的正确选项是( )。

    main

    { int i,j=50,a[]={7,4,10,5,8};

    for( )

    j+=a[i];

    printf("%d",j-40);

    }

    A.i=l;i<4;++i

    B.i=1;i<3;++i

    C.i=4;i>2;i--

    D.i=2;i<4;++i


    正确答案:D
    要想使程序输出是25,则在printf中,j-40=25,j=65,而j初值是50,“j+=a[i];”也可写成i=j+a[i];,j=50+a[i]=65,当a[i]=15,条件满足,数组下标由0开始,当i=2时,指向元素10,i=3时,10+5=15,退出循环体,所以选项D正确。

  • 第5题:

    有以下程序int f(int n){ if(n==1)return 1; else return f(n-1)+1;}main(){ int i,j=0; for(i=1;i<3;i++)j+=f(i); printf("%d\n",j); }程序的运行结果是A.4 B.3C.2 D.1


    正确答案:B
    题目给出的程序包括两个部分:main函数和f函数。main函数的运行最后将变量j的值输出,j的值为f(1)+f(2)。f函数只有一个实参n,当n等于1时,f(1)的值为1,当n大于1时,f的值为f(n-1)+1;若n=2,则f的值为f(1)+1=2,j的值为1+2=3。

  • 第6题:

    有以下程序int f(int n){ if(n==1 return 1; else return f(n-1)+1;}main(){ int i,j=0; for(i=1;i<3;i++) j+=f(i); printf("%d\n",j);}程序运行后的输出结果是A.4 B.3 C.2 D.1


    正确答案:B
    在main函数中,对f(1)和f(2)的值进行了累加。
    f(1)=1
    f(2)=f(1)+1=2
    最后,j的值为1+2=3。

  • 第7题:

    有以下程序 #include<stdi0.h> main( ) {int a[]={2,3,5,4),i; for(i=0;i<4;i++) switch(i%2) {case 0:switch(a[i]%2) {case 0:a[i]++;break; case l:a[i]--; }break; case1:a[i]=0; } for(i=0;i<4;i++)printf("%d",a[i]);printf("\n"); } 程序运行后的输出结果是( )。

    A.3344

    B.2050

    C.3040

    D.0304


    正确答案:C
    本题考查嵌套分支语句。共输出4个值:当i=0时,i%2取余后还是0,则执行ease0语句,继续switch语句,此时i为0,数据的下标是从0开始的,a[03的值为2,则a[0]%2=0,继续执行case0,数组a[0]++,值变为3,执行break跳出第二重开关语句。出来后继续执行break,跳出第一重开关语句,继续循环;输出第一个值为3。i++后值为1,i%2=1%2取余后值为1,执行casel,将0赋给a[l],退出开关语句,输出第二个值为0。i++后值为2,i%2=2%2取余后值为0’a[2]的值为5,则a[2]%2=1,继续执行casel,数组a[2]--,值变为4,执行break跳出第二重开关语句。出来后继续执行break,跳出第一重开关语句,继续循环;输出第三个值为4。i++后值为3,i%2=3%2取余后值为1,执行casel,将0赋给a[3],退出开关语句,输出第四个值为0。结果为3040。

  • 第8题:

    有以下程序

    int f(int n)

    { if(n==1)return 1;

    else return f(n-1)+1;}

    main()

    { int i,j=0;

    for(i=1;i<3;i++)j+=f(i);

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

    程序运行后的输出结果是

    A.4

    B.3

    C.2

    D.1


    正确答案:B

  • 第9题:

    单选题
    有以下程序:#includeint b=2;int fun(int *k){ b=*k+b; return(b);}main(){ int a[10]={1,2,3,4,5,6,7,8},i; for(i=2;i<4;i++) {  b=fun(&a[i])+b;  printf(%d,b); } printf();}程序运行后的输出结果是(  )。
    A

    1012

    B

    810

    C

    1028

    D

    1016


    正确答案: D
    解析:
    因为b是全局变量,所以它的值在整个程序结束时才会消失。for循环第一次i=2,a[i]=3,所以fun(&a[i])=3+2=5,这时b为5,所以b=fun(&a[i])+b=5+5=10。第二次循环时,b=10,然后fun(&a[i]),代入a[i]=4,这时fun(&a[i])=10+4=14,所以b=fun(&a[i])+b=14+14=28。答案选择C选项。

  • 第10题:

    单选题
    有以下程序:#include main(){  char *s[6]={ABCD,EFGH,IJKL,MNOP,QRST,UVWX},**p; int i; p=s;  for(i=0;i<4;i++)printf(%s,p[i]); printf();}程序运行后的输出结果是(  )。
    A

    ABCDEFGHIJKLMNOP

    B

    ABCDEFGHHKL

    C

    ABCD

    D

    AEIM


    正确答案: D
    解析:
    程序定义数组指针s以及指针的指针p,p指向数组指针s。p[i]为s的第i行字符串,因此程序输出s的前四行字符串。答案选择A选项。

  • 第11题:

    单选题
    有以下程序:#include main(){ int a[]={2,3,5,4},i; for(i=0;i<4;i++) switch(i%2) {  case 0:      switch(a[i]%2)      {       case 0:a[i]++;break;       case 1:a[i]--;      }break;  case 1:a[i]=0; } for(i=0;i<4;i++)printf(%d,a[i]); printf();}程序运行后的输出结果是(  )。
    A

    3344

    B

    2050

    C

    3040

    D

    0304


    正确答案: B
    解析:
    main函数的主体是一个for循环语句,for循环中包含一个switch语句,如果判断条件为0则进入第二个switch语句,如果判断语句为1则执行“a[i]=0”,最后将数组顺序输出。所以程序功能是将数组下标为奇数的项设为0,数组下标为偶数的项,如果对应的元素为偶数则加1,如果对应的元素为奇数则减1。答案选择C选项。

  • 第12题:

    单选题
    有以下程序:#include int fun(int n){ static int t=1; int i=1; for(;i<=n;i++)t*=i; return t;}main(){ int t=1,i; for(i=2;i<4;i++)  t+=fun(i); printf(%d,t);}程序的运行结果是(  )。
    A

    8

    B

    11

    C

    15

    D

    4


    正确答案: D
    解析:
    static变量又称为静态变量,编译时,将其分配在内存的静态存储区中,在整个程序运行期间都不释放这些存储单元,即使退出函数,下次再进入该函数时,静态局部变量仍使用原来的存储单元,值是上一次函数调用结束时的值。程序执行过程为:执行for循环,i=2,t=1,调用函数fun(2),定义静态局部变量t=1,此变量的作用域为函数fun中,定义局部变量i=1,for循环实现t=1×1×2=2,返回2,主函数中t=1+2=3;当i=3时,t=3,调用函数fun(3),静态局部变量上次调用后结果t=2,局部变量i=1,for循环实现t=2×1×2×3=12,返回12,t=3+12=15。最后输出t为15,答案选择C选项。

  • 第13题:

    有以下程序:main(){ int a[3][3],*p,i; p=&a[1][1]; for(i=0;i<4;i++) p[i]=i+1;printf("%d\n",a[1][2]); }程序运行后的输出结果是()A)3 B)6C)9 D)2


    正确答案:D
    a[1][1]=1,a[1][2]=2,a[2][0]=3,a[2][1]=4;

  • 第14题:

    (35)有以下程序

    #include <stdio.h>

    int b=2;

    int fun(int *k)

    { b=*k+b;return(b);}

    main()

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

    for(i=2;i<4;i++) {b=fun(&a)+b;printf(“%d”,b);}

    printf(“\n”);

    }

    程序运行后输出的结果是

    A)10 12 B)8 10 C)10 28 D)10 16


    正确答案:C

  • 第15题:

    若希望下列的程序运行后输出25,程序空白处的正确选项是( )。

    main()

    { int i,j=50,a[]={7,4,10,5,8};

    for( )

    j+=a[i];

    printf("%d",j-40);

    }

    A.i=1;i<4;++i

    B.i=1;i<3;++i

    C.i=4;i>2;i--

    D.i:2;i<4;++i


    正确答案:D
    解析:要想使程序输出是25,则i-40=25,j=65,而j初值是50,所以填入for循环中的语句,使引用的数组元素累加为65-50=15即可。

  • 第16题:

    若有以下程序#include <stdio.h>int a[]={2,4,6,8};main(){ int i; int *p=a; for(i=0;i<4;i++)a[i]=*p; printf("%d\n",a[2]);} 上面程序的输出结果是A.6 B.8C.4 D.2


    正确答案:D
    本题中,程序开始定义了一个全局数组a,并对这个数组进行赋初值。在主函数中,定义一个整型变量i和一个整型指针变量p,并使指针变量p指向全局数组a的首地址。然后执行for循环,循环变量i的初值为0,循环结束条件为变量i的值大于等于4,循环变量i的值每循环一次自加1,通过这些分析我们知道,循环执行了4次结束。
    第一次循环时,由于*p表示数组的第一个元素值2,那么执行a[i]=*p;语句,即将数组的第一个元素变为2;第二次循环时,由于i为1,即将数组的第二个元素变为2,同理,第三次与第四次循环分别将数组的第三和第四个元素值变为2。
    循环结束,程序执行输出语句,这时数组中所有元素的值都为2。因此,程序最后的输出结果是2。

  • 第17题:

    下面程序的输出是main(){ int arr[10],i,k=0; for(i=0;i<10;i++) arr[i]=i; for(i=1;i<4;i++) k+=arr[i]+i; printf("%d\n",k);}


    正确答案:12
    本题的考查点是for循环。
    第一个循环
    for(i=0;i<10;i++)
          arr[i]=i;
    是将数组元素0~9分别赋值为0~9。
    第二个循环
    for(i=1;i<4;i++)
          k+=arr[i]+i;
    可以变化成以下形式:
    for(i=1;i<4;i++)
          k=arr[i]+i+k;
    计算数组arr[1]、arr[2]、arr[3]的各个值,可以得到k的最终值为12。

  • 第18题:

    有以下程序 int f(int n) { if (n==l) return 1; else return f(n-1)+1; } main () { int i,j=0; for(i=i;i<3;i++) j+=f(i); printf {"%d\n", j ); } 程序运行后的输出结果是

    A.4

    B.3

    C.2

    D.1


    正确答案:B
    解析:本题考查的知识点是递归函数.通过分析不难写出,f()函数的数学表达式为:f(n)=1n=1;f(n)=f(n-1)+1n不等于1;在主函数中for循环执行了两次函数调用f(i)。第一次:i为1,调用f(1)得到返回值1,并把它加到i中,i的值为1。第二次i为2,调用f(n),根据递归公式可知“f(2)=f(1)+1”,得到返回值2并把它加到i中,j的值为3。所以最后输出的j的值为3,所以4个选项中B正确。

  • 第19题:

    试题三(共 20 分)

    阅读以下关于中断的叙述,回答问题 1 至问题 3,将答案填入答题纸的对应栏内。

    【说明】

    某计算机中断系统有 4级中断 I1,I2,I3 和I4,中断响应的优先次序为 I1→I2→I3→I4,即先响应 I1,再响应 I2,……,最后响应 I4。每级中断对应一个屏蔽码,屏蔽码中某位为“1”表示禁止中断(关中断) ,若为“0”则表示允许中断(开中断) 。各级中断处理程序与屏蔽码的关系如表 3-1 所示。

    【问题 1】 (6 分)

    若ti 时刻I1、I2 和 I4 级同时产生中断,在各中断处理完成后,tj(ti<tj)时刻发出 I3 级中断申请,CPU 为 I3 服务时,I1 级发出请求,在 CPU 为 I1 服务时,I2 级发出请求。请参照图 3-1 所示的格式,画出CPU的运行轨迹。

    【问题 2】 (8 分)

    若将中断优先次序设置为 I1→I4→I3→I2,即先响应 I1,再响应 I4,……,最后响应 I2。请重新设置各级的屏蔽码,填写表 3-2。

    【问题 3】 (6 分)

    设中断优先次序为 I1→I4→I3→I2。若 ti 时刻 I1、I2 和 I4 级同时产生中断,在各中断处理完成后,tj(ti<tj)时刻发出 I3 级中断申请,CPU为 I3服务时,I1级发出请求,在 CPU为 I1 服务时,I2 级发出请求。请画出这种情况下 CPU的运行轨迹。


    正确答案:




  • 第20题:

    阅读下面的C语言程序,请给出正确的输出结果( )。#include#define N 10#define s(x)x*x#define f(x)(x*x)#define g(x)((x)*(x))main( ){int i1,i2,i3,i4;i1=1000/s(N);i2=1000/f(N);i3=f(N+1);i4=g(N+1);printf(“i1=%d,i2=%d,i3=%d,i4=%d\n”,i1,i2,i3,i4);}

    A.i1=1000,i2=10,i3=21,i4=121
    B.i1=10,i2=10,i3=121,i4=121
    C.i1=1000,i2=1000,i3=21,i4=21
    D.i1=10,i2二1000,i3=121,i4=21

    答案:A
    解析:
    本题考查宏概念,以及宏替换相关的基础知识。表达式1000/s(N)宏替换后为:1000/10*10,因此结果为1000,而不是期待的10。表达式1000/f(N)宏替换后为:1000/(10*10),因此结果为10,是期待的结果。表达式f(N+1)宏替换后为:(10+1*10+1),因此结果为21,而不是期待的121。表达式g(N+1)宏替换后为:((10+1)*(10+1)),结果为121,是期待的结果。因此,题中程序运行结果为“i1=1000,i2=10,i3=21,i4=121”。

  • 第21题:

    单选题
    有如下程序: #include  void change(int *array,int len) {  for(;len>=0;len--)   array[len]+=2; } main() {  int i,array[5]={1,2};  change(array,4);  for(i=0;i<4;i++)   printf("%d,",array[i]);  printf(""); } 程序运行后的输出结果是(  )。
    A

    2,3,4,5,

    B

    3,4,5,6,

    C

    3,4,2,2,

    D

    1,2,0,0,


    正确答案: A
    解析:
    本题程序执行过程为:调用change函数,将数组array={1,2,0,0,0}首地址传入函数,函数实现将数组每个元素加2,arrray={3,4,2,2,2}。依次输出数组前4个元素为3、4、2、2。答案选择D选项。

  • 第22题:

    单选题
    有以下程序:#include main(){ char *a[]={abcd,ef,gh,ijk}; int i; for(i=0;i<4;i++)printf(%c,*a[i]);}程序运行后的输出结果是(  )。
    A

    aegi

    B

    dfhk

    C

    abcd

    D

    abcdefghijk


    正确答案: C
    解析:
    char *a[]定义了一个指向数组的指针。由题中初始化结果得:*a[0]="abcd",a[1]="ef",a[2]="gh",a[3]="ijk",但是在输出语句时要求输出的格式是%c,为一个字符,所以每个元素输出第一个字符,即aegi。答案选择A选项。

  • 第23题:

    单选题
    有如下程序 #include  main()  {  int i = 1;  for (printf(%d,i); i<4; i++)   printf(%d,i);  printf(); } 程序运行后的输出结果是(  )。
    A

    1123

    B

    123

    C

    0123

    D

    001


    正确答案: C
    解析:
    for语句的一般形式为“for(表达式1;表达式2;表达式3){循环体语句}”,其执行流程是先计算表达式1,之后计算表达式2,根据表达式2的值来判定是否进行循环,若为真,则执行循环体,循环体执行完毕之后再计算表达式3的值。整个循环过程中,表达式1只会执行一次,而表达式2、3以及循环体每次循环都会执行,答案选择A选项。