itgle.com
更多“有以下程序:mare(){int i,s=0,t[]={1,2,3,4,5,6,7,8,9};for(i=0;i<9;i+=2) s+=* (t+ i);printf ( ”相关问题
  • 第1题:

    有以下程序:int f(int b[][4]){int i,j,s=0;for(j=0;i<4;i++){i=j;if(i>2)i=3-j;s+=b[i][j];}ret

    有以下程序: int f(int b[][4]) { int i,j,s=0; for(j=0;i<4;i++) { i=j; if(i>2) i=3-j; s+=b[i][j]; } return s; } main() { int a[4][4]={{1,2,3,4,},{0,2,4,6},{3,6,9,12},{3,2,1,0}}; printf("%d\n",f(a)); } 执行后的输出结果是( )。

    A.12

    B.11

    C.18

    D.16


    正确答案:D
    解析:在主函数中首先定义了一个4行4列的二维数组a,并用该数组的数组名作为实参调用函数f()。函数f()中的for循环作用,是将数组前3行中的对角线上的元素,即b[0][0]、b[1][1]、b[2][2]和第一行的第四列元素即b[0][3]累加到变量s中, s=a[0][0]+a[1][1]+a[2][2]+a[0][3]=1+2+9+4=16。然后将s的值返回在主函数中输出。

  • 第2题:

    有以下程序: maln() { int i,s=0,t[]={1,2,3,4,5,6,7,8,9}; for(i=0;i<9;i+=2)s+=*(t+i); printf("%d\n",s); } 程序执行后的输出结果是( )。

    A.45

    B.20

    C.25

    D.36


    正确答案:C
    解析:通过for循环语句s=*(t+0)+*(t+2)+*(t+4)+*(t+6)+*(t+8)=1+3+5+7+9=25。

  • 第3题:

    有下列程序:main{int i,s=0,t[]={1,2,3,4,5,6,7,8,9};for(i=0;i<9;i+=2)s+=*(t+i);printf(&qu

    有下列程序:

    main

    {int i,s=0,t[]={1,2,3,4,5,6,7,8,9};

    for(i=0;i<9;i+=2)s+=*(t+i);

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

    }

    程序执行后的输出结果是( )。

    A.A.45

    B.20

    C.25

    D.36


    正确答案:C
    在for循环语句中自变量i从0开始,每次自加2,执行s+=*(t+i)语句,因为C语言规定数组名做表达式相当于数组的首地址,也就是第一个元素的地址。因此,*(t+i)代表数组的第i+1个元素。所以程序运行的结果是1+3+5+7+9=25,即变量S的值等于25。

  • 第4题:

    有以下程序: int a=2; int f(int n) { static int a=3; int t=0; if(n % 2)(static int a=4; t+=a++;} else{static int a=5; t+=a++;} return t+a++; } matin() { int s=a, i; for(i=0; i<3; i++)s+=f(i); printf("% d\n", s); } 程序运行后的输出结果是______。

    A.26

    B.28

    C.29

    D.24


    正确答案:C
    解析:在某一函数中当全局变量与局部变量同名时,则在该函数中,全局变量被屏蔽,访问的是局部变量。因此,t+a++中的a用的是static int a=3的这个a。if语句的执行是当n是偶数时,执行else的部分,否则执行其后的部分。因此,当i=0时,t=5,s=2+8=10;i=1时,t=4,s=10+8=18;当i=2时,t=6,s=18+11=29。

  • 第5题:

    以下程序的输出结果是【 】。include int fun(int x) {static int t=0; return(t+=x); }

    以下程序的输出结果是【 】。

    include <stdio.h>

    int fun(int x)

    { static int t=0;

    return(t+=x);

    }

    main()

    int s,i;

    for(i=1 ;i<=5;i++) s=fun(i);

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


    正确答案:15
    15 解析:static类型的变量是静态变量,本题中的静态变量t为静态局部变量。静态局部变量是在编译时赋初值的,即只赋初值一次,在程序运行时它已有初值。以后每次调用函数时不再重新赋初值而只是保留上次函数调用时的值。本题在多次调用fun函数的过程中,只在第一次调用时t的初值为0,以后每次调用函数时不再重新赋初值,而只是保留上次函数调用结束时的值,所以本程序的作用相当于将1到5数字进行累加,故输出结果为15。

  • 第6题:

    有以下程序 include void fun(int a, int b) {int t; t=a; a=b;

    有以下程序 #include<stdio.h> void fun(int a, int b) {int t; t=a; a=b; } int c[10]={1,2,3,4,5,6,7,8,9,0},i; for(i=0;i<10;i+=2) fun(c[i],c[i+1]); for(i=0;i<10;i++) printf("%d,",c[i]); printf("\n"); } 程序的运行结果是______。

    A.1,2,3,4,5,6.7,8,9,0,

    B.2,1.4.3.6,5.8,7,0,9,

    C.0,9,8,7,6,5,4,3,2,1,

    D.0,1,2,3,4,5,6,7,8,9,


    正确答案:A
    解析:本题中c[i],c[i+1]的值是实参,a,b是形参。C语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只由实参传给形参,而不能由形参传回来给实参。在内存中,实参单元与形参单元是不同的单元。在调用函数时,给形参分配存储单元,并将实参对应的值传递给形参,调用结束后,形参单元被释放,实参单元仍保留并维持原值。所以函数run中对a,b值的交换不影响主函数中c数组的值,故输出的c数组的值为c数组初始化时的值。

  • 第7题:

    以下程序的输出结果是()。includevoid reverse(int a [],int n){int i,t; for(i=0;i

    以下程序的输出结果是( )。 #include <stdio.h> void reverse(int a [],int n) { int i,t; for(i=0;i<n/2;i++) { t=a[i]; a[i]=a[n-1 -i];a[n-1-i] =t;} } main() { int b[10]={1,2,3,4,5,6,7,8,9,10};int i,s=0; reverse(b,8); for(i=6;i<10;i++)s+=b[i]; printf("%d\n",s); }

    A.22

    B.10

    C.34

    D.30


    正确答案:A
    解析:在main函数中,调用reverse函数将b数组中的前8个成员进行互置,执行完毕后,b数组中的成员为{8,7,6,5,4,3,2,1,9,10},然后再执行for循环结构,将b[6],b[7],…,b[9]的值相加,结果为22。

  • 第8题:

    有以下程序:includemain(){int i,s=0; for(i=1;i<10;i+ =2) s+ =i+1; printf("%d\n",s

    有以下程序: #include <stdio.h> main() { int i,s=0; for(i=1;i<10;i+ =2) s+ =i+1; printf("%d\n",s); } 程序执行后的输出结果是( )。

    A.正整数1~9的累加和

    B.正整数1~10的累加和

    C.正整数1~9中奇数之和

    D.正整数1~10中偶数之和


    正确答案:D
    解析:通过for(i=1;i10;i+=2)可知,i取值为1~10的奇数,即1,3,5,7,9,i+1即为2,4,6,8,10。因此,程序的功能是计算并输出1~10中的偶数之和,s+=i+1就是累加这些偶数。

  • 第9题:

    有以下程序:int f(int b[][4]){int i, j, s=0;for(j=0; j<4; j++){i=j;if(i>2)i=3-j;S+=b[i][j];

    有以下程序: int f(int b[][4]) { int i, j, s=0; for(j=0; j<4; j++) { i=j; if(i>2)i=3-j; S+=b[i][j]; } return s; } main() { int a[4][4]={{1, 2, 3, 4}, {0, 2, 4, 6}, {3, 6, 9, 12}, {3, 2, 1, 0}}; printf("%d\n", f(a)); } 执行后的输出结果是______。

    A.12

    B.11

    C.18

    D.16


    正确答案:D
    解析:f(a)=a[0][0]+a[1][1]+a[2][2]+a[0][3]=1+2+9+4=16。

  • 第10题:

    下面程序的运行结果是【 】。

    main()

    { int i=0,j=10,k=2,s=0;

    for(;;)

    {i+=k;

    if(i>j)

    {printf("%d\n",s);

    break; }

    s+=i; } }


    正确答案:30
    30 解析:考查for循环的使用。题目中for(;;)表示:for循环的初始化表达式,条件表达式和修正表达式都省略了,表示进行for循环和for循环的终止都没有限制。

  • 第11题:

    单选题
    有以下程序#include main(){ int i,s=0,t[]={1,2,3,4,5,6,7,8,9}; for(i=0;i<9;i+=2)s+=*(t+i); printf(%d,s);}程序执行后的输出结果是(  )。
    A

    25

    B

    20

    C

    45

    D

    36


    正确答案: B
    解析:
    *(t+i)等价于t[i],依次访问数组t中的偶数位元素,s = t[0]+t[2]+t[4]+t[6]+t[8] = 1+3+5+7+9 = 25。答案选择A选项。

  • 第12题:

    单选题
    有以下程序 #include  int f(int n) {  int t=0,a=5;  if(n/2)  {   int a=6;   t+=a++;  }  else  {   int a=7;   t+=a++;  }  return t+a++; } main() {  int s=0,i=0;  for(;i<2;i++) s+=f(i);  printf(%d,s); } 程序运行后的输出结果是(  )。
    A

    24

    B

    28

    C

    32

    D

    36


    正确答案: B
    解析:
    本题中需要注意在函数f中,最后的return语句中的变量a是函数初始定义的a,它的值始终是5,与if和else的执行语句中的a不是同一个变量。要注意区分变量的有效范围。执行for循环,i=0时,s=s+f(0)=0+f(0),f(0)=12,s=12;i=1时,s=s+f(1)=12+f(1),f(1)=12,s=24;i=2时循环结束。答案选择A选项。

  • 第13题:

    有以下程序

    main()

    {int i,s=0,t[]={l,2,3,4,5,6,7,8,9};

    for(i=0;i<9;i+=2)s+=*(t+i);printf("%d\n",s);}

    程序执行后的输出结果是

    A.45

    B.20

    C.25

    D.36


    正确答案:C
    解析:统计1~9九个数中的奇数和,此题考察指向数组的指针。C语言规定数组名代表数组的首地址,也就是第一个元素的地址。因此*(t+i)代表数组的第i+1个元素。程序运行的结果是1+2+3+4+5+6+7+8+9=25。

  • 第14题:

    有以下程序:includeint a=4;int f(int n){int t=0;static int a=5;if(n%2) {int a=6;

    有以下程序: #include<string.h> int a=4; int f(int n) {int t=0;static int a=5; if(n%2) {int a=6;t++=a++;} else{int a=7;t+=a++;} return t+a++; } main() {int s=a,i=0; for(;i<2;i++)s+=f(i); printf("%d\n",s); } 程序运行后的输出结果是( )。

    A.24

    B.28

    C.32

    D.36


    正确答案:B
    解析:本题考查的是外部变量的应用。因为程序的初始int a=4;语句定义了外部变量a,在以后的执行过程中,当i=0时,调用f(0)函数,执行的语句是else {int a=7;t+=a++;},此处程序中又定义了变量a,所以原来定义的外部变量在此不起作用,得到t=7,返回值语句return t+a++;处,外部变量a起作用,返回值为7+5=12:当i=1时,调用f(1)函数,执行的是语句else{inta=6:t+=a++;},此处程序中又定义了变量a,所以原来定义的外部变量在此不起作用,得到t=6,返回值语句

  • 第15题:

    以下程序的输出结果是 void reverse(int a[],int n) { int i,t; for(i=0;i<n/2;i++) { t=a[i]; a[i]=a[n-1-i];a[n-1-i]=t;} } main() { int b[10]={1,2,3,4,5,6,7,8,9,10};int i,s=0; reverse(b,8); for(i=6;i<10;i++)s+=b[i]; printf("%d\n",s); }

    A.22

    B.10

    C.34

    D.30


    正确答案:A
    解析:在main函数中,调用revere函数将b数组中的前8个成员进行互置,执行完毕后,b数组中的成员为{8,7,6,5,4,3,2,1,9,10},然后再执行for循环结构,将b[6],b[7]…b[9]的值相加,结果为22。

  • 第16题:

    以下程序运行后的输出结果是()。includevoid reverse(int a[],int n){int i,t;for(i=0;

    以下程序运行后的输出结果是( )。 #include<stdio.h> void reverse(int a[],int n) {int i,t; for(i=0;i<n/2;i++) {t==a[i];a[i]=a[n-1-i];a[n-1-i]=t;} } main() {int b[10]={10,9,8,7,6,5,4,3,2,1};int i,s=0; reverse(b,10); for(i=0;i<3;i++)s+=b[i]; printf("%d\n",s); }

    A.27

    B.6

    C.25

    D.30


    正确答案:B
    解析:本题考查函数调用时的参数传递。函数reverse将数组b进行了逆置,此时b[10]={10,9,8,7,6,5,4,3,2,1),后面for语句的功能是将b中的后3个数累加,并将结果放在s中,最后将s输出,结果s=1+2+3=6。

  • 第17题:

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

    main()

    { int i=0,j=10,k=2,s=0;

    {i+=k;

    if(i>j)

    {printf("%d\n",s);

    break;}

    s+=i;}}


    正确答案:

  • 第18题:

    有下列程序: main {int i,s=0,t[]={1,2,3,4,5,6,7,8,9); for(i=0;i<9;i+=2)s+=*(t+i); printf("%d\n",s); } 程序执行后的输出结果是( )。

    A.45

    B.20

    C.25

    D.36


    正确答案:C
    在for循环语句中自变量i从0开始,每次自加2,执行s+=*(t+i)语句,因为C语言规定数组名做表达式相当于数组的首地址,也就是第一个元素的地址。因此,*(t+i)代表数组的第i+1个元素。所以程序运行的结果是1+3+5+7+9=25,即变量S的值等于25。

  • 第19题:

    有以下程序 main() {int i,s=0,t[]={1,2,3,4,5,6,7,8,9 }; for(i=0;i<9;i+=2) s+=*(t+i); printf("%d\n",s); }

    A.45

    B.20

    C.25

    D.36


    正确答案:C
    解析:此题考核的是指针与数组间的应用,数组可以通过实现对数组元素的操作,*(t+i)相当于t[i]。执行for()循环语句,i分别为0、2、4、6、8,有数组可知t[0]=1;t[2]=3;t[4]=5;t[6]=7;t[8]=9进行求和运算结果为25。

  • 第20题:

    有以下程序 int a=2; int f(int n) { static int a=3; int t=0; if(n%2) {static int a=4; t+=a++;} else {static int a=5; t+=a++;} return t+a++; } main ( ) { int s=a, i; for (i=0;i<3; i++) s+=f (i) print f ("%d\n" , s ); } 程序运行后的输出结果是

    A.26

    B.28

    C.29

    D.24


    正确答案:C
    解析:全局变量的生存期是整个程序的运行期间,作用域是从变量定义的位置开始,到整个源文件结束止。但是,若全局变量和某一函数或语句块中的局部变量同名,则在该函数或语句块中,此全局变量被屏蔽,即在该函数或语句块内,访问的是局部变量,与同名的全局变量不发生任何关系。静态局部变量的生存期与全局变量相同,作用域和局部变量一样都是整个函数成语旬块内有效。程序第一行定义了一个全局变量a,在f()函数开头也定义了一个静态局部变量a,而且在后面if语句的两个子句中都定义了静态局部变量a。这4个变量a虽然名字一样,但却是4个独立的变量,而且在整个程序运行期都存在。在主函数中,在定义变量s时将s初始化为全局变量a的值2,然后使用一个for循环分别调用了3次f(0)、f(1)、f(2),并将得到的值累加到变量s中。第1次调用n=0为偶数,执行else子句,此时t累加的是else子句中的变量a,所以执行后else子句中的a变为6,t变为5,然后return语句中的a是函数f()开头定义的a,执行后函数开头的a变为4,所以返回值是5+3=8。第2次调用n为1是奇数,执行if子句,所以t变为4,if子句中的a变为5,然后返回时函数开头的a变为5,返回值是4+4=8。第3次调用n为2是偶数,又执行else子句,else子句中的a现在还是上次执行后的值6,所以t=6,然后返回时加上函数开头的a的当前值5,最后返回11。所以s最终的值是2+8+8+11=29。故应该选择C。

  • 第21题:

    有以下程序:include main( ){int i,s=0,t[] = {1,2,3,4,5,6,7,8,9};for(i=0;i<9;i+=2)

    有以下程序:#include <stdio.h>main( ){ int i,s=0,t[] = {1,2,3,4,5,6,7,8,9}; for(i=0;i<9;i+=2) s+=*(t+i); prinff("% d \n ",s);

    A.45

    B.20

    C.25

    D.36


    正确答案:C
    解析:程序中的*(t+i)相当于t[i]。由于for循环变量的增量为2,因此i分别取值0,2,4,6,8,因为t[0]=1,t[2]=3,t[4]=5,t[6]=7,t[8]=9,对其进行求和运算,结果为25。

  • 第22题:

    单选题
    有以下程序#include int a=4;int f(int n){ int t=0; static int a=5; if(n%2) {  int a=6;  t+=a++; } else {  int a=7;  t+=a++; } return t+a++;}main(){ int s=a,i=0; for(;i<2;i++)s+=f(i); printf(%d,s);}程序运行后的输出结果是(  )。
    A

    36

    B

    24

    C

    32

    D

    28


    正确答案: C
    解析:
    函数f中,不管是if语句块还是else语句块,a都是局部变量。f(0)和f(1)调用f函数都是执行else语句块。t+=a++等效于t=t+a;a++;,else语句块执行完后,t=7;函数f中,a也是局部变量,执行return时,a=5,t=7,返回12。s=4+ f(0)+ f(1) = 12 + 12 =28。答案选择D选项。

  • 第23题:

    单选题
    有以下程序#include int f(int n){ int t=0,a=5; if(n/2) {  int a=6;  t+=a++; } else {  int a=7;  t+=a++; } return t+a++;}main(){ int s=0,i=0; for(;i<2;i++)s+=f(i); printf(%d,s);}程序运行后的输出结果是(  )。
    A

    36

    B

    28

    C

    32

    D

    24


    正确答案: C
    解析:
    函数f中,不管是if语句块还是else语句块,a都是局部变量。f(0)和f(1)调用f函数都是执行else语句块。t+=a++等效于t=t+a;a++;,else语句块执行完后,t=7;函数f中,a也是局部变量,执行return时,a=5,t=7,返回12。s= f(0)+ f(1) = 12 + 12 =24。答案选择D选项。