以下程序段的输出结果是() int a[4][4]={{1},{2,3},{4,5,6},{7,8,9,10}},s=0,i;for(i=0;i<4;i++) s+=a[i][i]+a[i][3-i]; printf("%d/n",s); 1+3+5+6+7+10A、20B、32C、12D、随机值

题目

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

  • A、20
  • B、32
  • C、12
  • D、随机值

相似考题
更多“以下程序段的输出结果是() int a[4][4]={{1},{2,3},{4,5,6},{7,8,9,10}},s=0,i;for(i=0;i4;i++) s+=a[i][i]+a[i][3-i]; printf("%d/n",s); 1+3+5+6+7+10A、20B、32C、12D、随机值”相关问题
  • 第1题:

    以下程序的输出结果是 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
    解析:对函数的静态局部变量是在编译时就赋初值,即只赋初值一次,在程序运行时它已有初值,以后每次调用函数时不再重新赋值,而只是保留上次函数调用结束时的值。注意:静态函数只能用静态变量。

  • 第2题:

    以下程序的输出结果是 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。

  • 第3题:

    以下程序的输出结果是______。 main() { int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0; for(i=1;i<3;i++) for(j=0;j<=i;j++) s+=a[i][j]; printf("%d\n",s); }

    A.18

    B.19

    C.20

    D.21


    正确答案:A
    解析:本题首先定义了一个数组并附初值,然后通过两个for循环计算3、4、5、6的累加值,并用s保存。

  • 第4题:

    以下程序的输出结果是 intf() {static int i=0; int s=1; s+=i;i++; retumS;} main() { int i,a=0; for(i=0;i<5;i++)a+=f(); printf("%d\n",a);}

    A.20

    B.24

    C.25

    D.15


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

  • 第5题:

    以下程序的输出结果是()。includemain(){int a[3][3]={0,1,2,0,1,2,0,1,2},i,j,s=1;for

    以下程序的输出结果是( )。 #include<stdio.h> main() {int a[3][3]={0,1,2,0,1,2,0,1,2},i,j,s=1; for(i=0;i<3;i++) for(j=i;j<=i;j++) s+=a[i][a[j][j]]; printf("%d\n",s); }

    A.3

    B.4

    C.1

    D.9


    正确答案:B
    解析:当外层循环为i时,内层循环i只能取j=i,所以s+=a[i][a[j][j]],其实就是s+=a[i][a[i][i]],当i=0时,s=s+a[0][a[01[0]]=s+a[0][0]=1,当i=1时,s=s+a[1][a[1][1]1=s+a[1][1]=1+1=2,当i=2时,s=s+a[2][a[2][2]]=s+a[2][2]=2+2=4。

  • 第6题:

    以下程序运行后的输出结果是( )。 include main() {char ch[]="abcd",x[4][4];int i; f

    以下程序运行后的输出结果是( )。 include<string.h> main() {char ch[]="abcd",x[4][4];int i; for(i=0;i<4;i++)strcpy(x[i],ch); for(i=0;i<4;i++)printf("%s",&x[i][i]); printf("\n"); }


    正确答案:abcdabcdabcdabcdbcdabcdabcdcdabcdd
    abcdabcdabcdabcdbcdabcdabcdcdabcdd

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

    若有以下程序main(){ int a[4][4]={{1,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},{-31,32,-33,0}}; int i,j,s=0; for(i=0;i<4;i++) { for(j=0;j<4;j++) { if(a[i][j]<0) continue; if(a[i][j]==0) break; s +=a[i][j]; } } printf("%d\n",s);}程序执行后的输出结果是


    正确答案:58
    在本题程序中,首先定义了一个4*4的二维数组a,并进行了初始化操作,然后定义了三个整型变量,i和j分别作为循环变量,而s作用一个记录和的变量被初始化为0。然后开始循环,第一层循环的循环变量i被初始化为0,循环结束条件是i<4,即循环执行四次,而第二层循环同样是4次,总循环此时为4´4=16次,如果逐次循环分析,工作量和花费时间太多,且一不小心容易出错,这种情况下,我们应该找出一个更简便的方法。
    从循环体中的if(a[i][j]<0) continue;我们可以知道,只要数组元素小于0,结束本次循环,即不参与求和运算,由if(a[i][j]==0) break;我们可以知道,只要数组元素等于0,结束本层循环,即同一行的数组元素都不用参加求和运算,从数组a的初始化情况我们可以看到,在第二行的第一个元素为0,即第二行都不参加求和运算,而第三行的第三个元素为0,即该行最后一个元素不参加求和运算。这样,参与求和运算的数组元素必须满足大于0,且其前面的该行元素无0出现。由此可以知道,变量s的最后结果应该为1+2+23+32=58。因此,程序最后的输出结果为58。

  • 第9题:

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

  • 第10题:

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

    A.16

    B.12

    C.28

    D.21


    正确答案:A
    解析:在循环体中有一条if语句,其后面表达式为“i%2”,当i的值为奇数时,其值为真,执行其后面的语句,i的值加1,重新开始循环,当i的值为偶数时,“i%2”为假,执行“i++;s+1”。在循环中i为偶数时的值分别为0、2、4、6,加1过后的值分别为1、3、5、7,s中存放的是它们的和,值为16.所以,A选项为所选。

  • 第11题:

    以下程序的输出结果是 int f() { static int i=0; int s=1; s+=i; i++; return s; } main ( ) { int i,a=0; for (i=0;i<5; i++) a+=f(); printf ( "%d\n" ,a); }

    A.20

    B.24

    C.25

    D.15


    正确答案:D
    解析:本题考核的知识点是静态变量static的应用。在C语言中声明为static型的变量,在整个程序运行期间,静态局部变量在内存的静态存储区中占据永久性的存储单元。即使退出函数后,下次再进入该函数时,静态局部变量仍使用原来的存储单元。由于并不释放这些存储单元,因此这些存储单元中的值得以保留;因而可以继续使用存储单元中原来的值。本题中函数f()中定义了一个static型变量i,故每调用一次函数f(),i的值加1,返回s的值等于i,在主函数中用了一个for循环,该循环执行了5次,每次都调用f()函数,将其返回值累加到变量a中,故悬后a的值为1+2+3+4+5=15。所以,4个选项中D为所选。

  • 第12题:

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

  • 第13题:

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

    main

    { int i=0,S=0;

    for(;;)

    {

    if(i==3 ||i==5)continue;

    if(i==6)break;

    i++;

    s+=i:

    };

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

    }

    A.10

    B.13

    C.21

    D.程序陷入死循环


    正确答案:D
    当i一0时,两个if都不满足,所以都不执行,直接执行i++语句,此时i为1,S为l,返回for循环中;当i=1时,同样不执行两个if语句,执行i++后,i=2,s=3,返回for循环中;i=2时也不执行if语句,执行i++后,i=3,s=6,接着又执行for循环,此时符合第一个if语句,执行到continue时不再执行i++了,continue是跳出本次循环,接着下次循环。永远这样执行下去,i的值永远为3,故选择D选项。

  • 第14题:

    以下程序运行后的输出结果是()。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。

  • 第15题:

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

    以下程序的输出结果是 #include<iostream.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;} } void 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]; cout << 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]的值相加,结果为1+2+9+10=22。注意:在计算累加和时,应将累加变量赋值为零。

  • 第16题:

    以下程序的输出结果是[ ]。

    main()

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

    for(i=0;i<3;i++) s+=-a[i][i]+a[i][3-i-1];

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

    }


    正确答案:30
    30 解析:此题主要考核的是多维数组以及for()循环语句的应用,即i=0时,s=()+a[0][0]+a[0][2]=10,i=1时, s=10+a[1][1]+a[1][1]=18,i=2时,s=18+a[2][2]+a[2][0]=30。

  • 第17题:

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

    以下程序的输出结果是

    #include<iostream.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;}

    }

    void 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] ;

    cout < < 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] 的值相加,结果为 1+2+9+10=22。注意:在计算累加和时,应将累加变量赋值为零。

  • 第18题:

    下列程序的输出结果是( )。 #include<stdio.h> main( ) { int i,S=0; for(i=1;i<10;i++) if(!(i%2)&&!(i%3))s+=i; printf("%d\n",s); }

    A.4

    B.39

    C.45

    D.6


    正确答案:D
    if语句的条件是当i既是3的倍数又是2的倍数时成立,所以此程序实现的功能是将10以内既是3的倍数又是2的倍数的数相加。

  • 第19题:

    以下程序的输出结果是 ______。includeInt f(){static int i=0;int a=1;a+=;i++;ret

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

    A.10

    B.15

    C.21

    D.28


    正确答案:A

  • 第20题:

    以下程序的输出结果是______。 main() { int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0; for(i=0;i<3;i++) for(j=0;j<=i;j++) s+=a[i][j]; printf("%d\n",s); }

    A.18

    B.19

    C.20

    D.21


    正确答案:B
    解析:本题函数的功能是计算并输出一个二维数组对角线及对角线下面的元素之和。

  • 第21题:

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

    A.16

    B.12

    C.28

    D.21


    正确答案:A
    解析:do循环与continue语句,在循环体中有一条if语句,其后面表达式为“i%2”,当i的值为奇数时,其值为真,执行其后面的语句,i的值加1,重新开始循环,当i的值为偶数时,“i%2”为假,执行“i++;s+=i”。在循环中i为偶数时的值分别为0、2、4、6,加1过后的值分别为1、3、5、7,s中存放的是它们的和,值为16。

  • 第22题:

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

    A.11

    B.19

    C.13

    D.20


    正确答案:B
    解析:C语言规定,数组元素的下标是从零开始的.本题首先定义了一个二维数组aa并按行赋初值,定义了一个变量s用于求和。for循环执行4次分别把数组元素aa[0][1]、aa[1)[1)、oa[2][1]和aa[2][1]的值(2,6,9,2)加到变量s中,s的值为19,所以最后输出的s的值为19.所以4个选项中B正确。

  • 第23题:

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

    20

    B

    32

    C

    12

    D

    随机值


    正确答案: C
    解析: 暂无解析