niusouti.com

有以下程序 main ( ) { int i,s=0; for (i=1;i<10; i+=2) s+=i+1; print f ( "%d\n", s); } 程序执行后的输出结果是A.自然数1~9的累加和B.自然数1~10的累加和C.自然数1~9中奇数之和D.自然数1~10中偶数之和

题目

有以下程序 main ( ) { int i,s=0; for (i=1;i<10; i+=2) s+=i+1; print f ( "%d\n", s); } 程序执行后的输出结果是

A.自然数1~9的累加和

B.自然数1~10的累加和

C.自然数1~9中奇数之和

D.自然数1~10中偶数之和


相似考题
更多“有以下程序 main ( ) {int i,s=0;for (i=1;i<10; i+=2)s+=i+1; print f ( "%d\n", s);} 程序执行 ”相关问题
  • 第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题:

    若有以下程序:include using namespace std;int f(){static int i = 0;int s = 1;s+=

    若有以下程序: #include <iostream> using namespace std; int f() { static int i = 0; int s = 1; s+=i; i++; return s; } int main() { int i,a = 0; for(i = 0;i<5;i++) a+=f(); cout<<a<<endl; return 0; } 程序运行后,输出的结果是

    A.20

    B.24

    C.25

    D.15


    正确答案:D
    解析:本题考核静态局部变量在函数中的使用。静态局部变量就是将局部变量说明为静态的。静态局部变量既有在局部域作用的特性(即变量只能在变量的作用范围内被访问),又可以永久存在(变量的值得以保留,并可继续使用)。静态局部变量只在第一次执行时初始化一次。在函数f中定义了一个静态局部变量i,它的初始值为0,还定义了一个局部变量s(它的初始值为1),用来返回计算所得值。函数f中所进行的数据加工是s+=i和i++。即每调用一次函数f,返回(i+1)的值后,i的值增1。再看主函数,在主函数main中,通过一个for语句连续调用f函数5次,并把每次调用f函数的返回值相加并存入a。最后输出a的值。在了解各函数功能以及调用关系后就可计算出a的值为15。

  • 第5题:

    有以下程序: 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); printf("%d\n",s); } 程序运行后的输出结果是 ______。

    A.26

    B.28

    C.29

    D.24


    正确答案:C
    解析:解本题耍弄清楚这样几点:1、定义“int a=2;”中的全局变量a,其作用范围是从定义此变量的位置开始到本源文件结束;2、“static int a=3;”中的静态局部变量a的作用范围是其所在的函数f,并对其只赋一次初值,以后每次调用函数时不再重新赋初值,而只是保留上次函数调用结束时的值;3、复合语句“{static int a=4;t+=a++; }”和“{static int a=5;t+=a++;}”中定义的两个变量a属于复合语句中定义的变量,作用范围只在其本身所在的复合语句内。对于本程序来讲,第三行定义的静态局部变量并不会对四、五两行的复合语句产生作用,这是因为复合语句中也定义了与其同名的静态局部变量。

  • 第6题:

    有以下程序 int f (int A) { return a%2; } main ( ) { int s[8]={1,3,5,2,4,6),i,d=0; for (i=0; f(s[i]; i++) d +=s[i]; print f ("%d\n", D) ; } 程序运行后的输出结果是

    A.9

    B.11

    C.19

    D.21


    正确答案:A
    解析:本题考核的知识点是一维数组的定义,初始化和数组中元素的引用。函数f()的作用是形参a为偶数的时候返回0,主函数中首先定义了一个长度为8的一维数组,然后给它赋初值使得s[0]=1、a[1]=3、s[2]=5、s[3]=2、s[4]=4、s[5]=6.其他没有赋值的数组元素将自动赋值为0。for循环中,当s[1]不为偶数的时,将s[i]相加,即当i=3时,s[i]=2为偶数,退出循环,此时d的值为d=s101+s[1]+s[2]=1+3+5=9,因此最后输出的d的值为9。所以,4个选项中选项A符合题意。

  • 第7题:

    有以下程序main( ){ int i=0,s=0;do{ if(i%2) {i+ +; continue; } i++; s+=i;}while(i<7)cout<<s<<end1;}执行后输出结果是

    A.16

    B.12

    C.28

    D.21


    正确答案:A
    解析:本题考察continue语句在while循环中的使用:直接跳转到条件判断表达式位置,不再执行continue后面的语句。另外,根据分析可知,本题循环体的功能是将0,2,4,6位元素加一后累加,故结果应是1+3+5+7,因此正确答案为A。

  • 第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=0j<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=0j<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()中的for循环作用,是将数组前三行中的对角线上的元素,即b[0][0]、b[1][1]、b[2][2]和第一行的第四列元素即b[0][3]累加到变量s中,然后将s的值返回。在主函数中首先定义了一个4行4列的二维数组,接着通过输出语句输出函数f(a)的返回值。调用f(a)的返回值为a[0][0]+a[1][1]+a[2][2]+a[0][3]=1+2+9+4=16。所以,4个选项中选项D符合题意。

  • 第10题:

    有以下程序: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。

  • 第11题:

    有以下程序: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。

  • 第12题:

    单选题
    有以下程序#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选项。

  • 第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题:

    以下程序的输出结果是 include int f( ) { static int i=0; int s=1 s+ =i;

    以下程序的输出结果是 #include<iostream.h> int f( ) { static int i=0; int s=1 s+ =i; i++; return s;} void main( ) { int i,a=0; for(i=0 ;i<5;i++)a+=f( ); cout < < a;}

    A.20

    B.24

    C.25

    D.15


    正确答案:D
    解析:对函数的静态局部变量是在编译时就赋初值,即只赋初值一次,在程序运行时它已有初值,以后每次调用函数时不再重新赋值,而只是保留上次函数调用结束时的值。注意:静态函数只能用静态变量。

  • 第15题:

    以下程序的输出结果是 ( )。 include using namespace std; int f(int b[],int m, in

    以下程序的输出结果是 ( )。 #include <iostream> using namespace std; int f(int b[],int m, int n) { int i,s = O; for(i = m;i<n;i+=2) s+=b [i]; return s; } int main ( ) { int x a[] = {1,2,3,4,5,6,7,8,9}; x = f(a,3,7); cout<<x<<end1; return 0; }

    A.10

    B.18

    C.8

    D.15


    正确答案:A
    解析:本题考查对数组以及数组作为函数参数的掌握程度。本题通过参数传递将数组a传给f()函数中的数组b,并由s传递返回值给主函数中的x。主函数中,x=f(a,3,7),即把数组a传给f()函数中的数组b,把3传给m,把7传给n。所以函数f()中的for循环中,是从3开始循环,经过两次循环后,实现a[3]和a[5]值的累加,并存入s中,然后返回给主函数中的x。所以x的值为10。故本题答案是A。

  • 第16题:

    若有以下程序:includeusing namespace std;int f(){ static int i=O; int s=1; s+=i;

    若有以下程序: #include<iostream> using namespace std; int f() { static int i=O; int s=1; s+=i; i++; return s; } int main() { int i,a=0; for(i=0;i<5;i++) a+=f(); cout<<a<<endl; retrun 0; } 程序运行后,输出的结果是

    A.20

    B.24

    C.25

    D.15


    正确答案:D
    解析:本题考核静态局部变量在函数中的使用。静态局部变量就是将局部变量说明为静态的。静态局部变量既有在局部域作用的特性(即变量只能在变量的作用范围内被访问),又可以永久存在(变量的值得以保留,并可继续使用)。静态局部变量只在第一次执行时初始化一次。在函数f中定义了一个静态局部变量i,它的初始值为0,还定义了一个局部变量s(它的初始值为1),用来返回计算所得值。函数f中所进行的数据加工是s+=i和i++。即每调用一次函数f,返回(i+1)的值后,i的值增1。再看主函数,在主函数main中,通过一个for语句连续调用f函数5次,并把每次调用f函数的返回值相加并存入a。最后输出a的值。在了解各函数功能以及调用关系后就可计算出a的值为15。

  • 第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题:

    有以下程序includevoid fun(float* p1,int n1,float,*p2,int n2,float* s){ int i;s=(

    有以下程序 #include<stdio.h> void fun(float * p1,int n1,float,*p2,int n2,float * s) { int i; s=(float *)calloc(1,sizeof(float)); *s=0; for(i=0;i<n1;i++) *s+=*p1++; for(i=0;i<n2;i++) *s+=*p2++; } main() { float a[2]={1.1,2.2},b[3]={10.0,20.0,30.0),*s=a; fun(a,2,b,3,s); printf("%f\n",*s); } 上面程序的输出结果是( )

    A.60

    B.3.3

    C.63.3

    D.1.1


    正确答案:D

  • 第21题:

    有以下程序 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。

  • 第22题:

    有以下程序 main( ) { int i,s=0; for(i=1;i<l0;i+=2) s+=i+1 printf("%d\n",s); } 程序执行后的输出结果是 ______。

    A.自然数1~9的累加和

    B.自然数1~10的累加和

    C.自然数1~9中奇数之和

    D.自然数1~10中偶数之和


    正确答案:D
    解析:本题中s=(1+1)+(3+1)+(5+1)+(7+1)+(9+1)=2+4+6=8+10。

  • 第23题:

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

    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循环的终止都没有限制。