niusouti.com

有以下程序:int f(int b[][4]){int i, j, s=0;for(j=0; j2)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}};

题目
有以下程序: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。
更多“有以下程序: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]; ”相关问题
  • 第1题:

    有以下程序:include void f(int a[],int i, int j){int t; if(i

    有以下程序: #include <stdio.h> void f(int a[],int i, int j) { int t; if(i<j) { t=a[i];a[i]=a[j];a[j]=t; f(a,i+1,j-1); } } main() { int i,aa[5]={1,2,3,4,5}; f(aa,0,4); for(i=0;i<5;i++) printf("%d,",aa[i]);printf("\n"); } 执行后的输出结果是( )。

    A.5,4,3,2,1,

    B.5,2,3,4,1,

    C.1,2,3,4,5,

    D.1,5,4,3,2,


    正确答案:A
    解析:f函数的功能是通过递归调用实现数组中左右部分相应位置数据的交换,即数组中第一个元素与最后一个元素调换位置,第二个元素与倒数第二个元素调换位置,以此类推。

  • 第2题:

    若有以下程序:include using namespace std;int main(){ int a[4] [4] = {{1,2,3,-4}

    若有以下程序: #include <iostream> using namespace std; int 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=O;j<4;j++) { if(a[i] [j] >=0) continue; s+=a [i] [j]; } } cout<<s<<end1; return 0; } 执行后的输出结果是( )。

    A.-138

    B.141

    C.75

    D.-1


    正确答案:A
    解析:本题属于综合题,考查多个方面的知识点。程序首先定义了一个二维数组a,并初始化其值。在内层for循环体中,遇到大于等于0的数,就继续执行下次循环,否则就执行“s+=a[i][j]”,即把其值累加并保存在变量s中。所以本题双重循环的功能是:计算数组中所有负数的累加和,即s=-138。

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

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

    A.18

    B.19

    C.20

    D.21


    正确答案:A

  • 第5题:

    有以下程序:includevoid f(char p[][10],int n){char t[10];int i,j;for(i=0;i

    有以下程序: #include<string.h> void f(char p[][10],int n) {char t[10];int i,j; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(strcmp(p[i],p[j])>0) {strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);} } main() {char p[5][10]={"abc","aabdfg","abbd","dedbe","cd"}; f(p,5); printf("%d\n",strlen(p[0]));} 程序运行后的输出结果是( )。

    A.2

    B.4

    C.6

    D.3


    正确答案:C
    解析:本题考核的是二维字符数组按行存放字符串、二维数组名作为函数的参数以及字符串的排序。主函数中定义了一个二维字符串数组p并按行赋值,调用f()函数,将字符串从小到大排序,strcmp()函数的功能是对两个字符串作向右逐个字符比较,直到出现不同的字符或遇到“\0”为止。如果全部字符都相同,则认为相等;若出现不同的字符.则以第一个不相同的字符的比较结果为准。由此可知最小的字符串是“aabdfg”,排序后存放在p[0]中,最后在主函数中输出p[0]的长度。

  • 第6题:

    有以下程序:include void fun(iht * a,int i,int j){int t;if(i < j) {t=a[i];a[i] =

    有以下程序:#include <stdio, h>void fun(iht * a,int i,int j){ int t; if(i < j) { t=a[i];a[i] =a[j] ;a[j]=t; i++;j--; fun(a,i,j);main ( ) int x[ ]: {2,6,1,8} ,i; fun(x,0,3); for( i=0;i <4;i ++ ) printf( "%2d" ,x[i] ); printf(" \n");

    A.1268

    B.8621

    C.8162

    D.8612


    正确答案:C
    解析:语句fun(x,0、3);中将数组名x作为实参,即把数组x的首地址传送给形参(指针a),使数组x与形参指针s共占同一段内存单元,在调用函数期间,如果形参数组x的值发生了改变,实参指针a的值也就改变了。程序中fun函数是递归调用函数,其运行过程是:第1次调用fun时,a=x,i=0,j=3,ij成立,a[0]与a[3]交换,a数组中的数变为{8,6,1,2},执行i++;j--;继续调用fun,此时i,j分别为1,2,ij成立,a[1]与a[2]交换,a数组中的数变为{8,1,6,2},执行i++j--;继续调用fun,此时i,j分别为2,1,ij不成立,递归调用结束。当返回主函数时,x数组中的数据就为{8,1,6,2}。

  • 第7题:

    阅读以下程序: include void main() { static int a[][3]={9,7,5,3,1,2,4,6,8}; int

    阅读以下程序:

    include<iostream.h>

    void main()

    {

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

    int i,j,s1=0,s2=0;

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

    for(j=0;j<3;j++)

    {

    if(i==j)s1=sl+a[i][j];

    if(i+j==2)s2=s2+a[i][j];

    }

    cout<<s1<<","<<s2<<endl;

    }

    则该程序的输出结果为【 】。


    正确答案:1810
    18,10

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

    以下程序的输出结果是______。 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
    解析:本题函数的功能是计算并输出一个二维数组对角线及对角线下面的元素之和。

  • 第10题:

    有以下程序:struct S{int n;int a[20];};void f(struct S*P){int i,j,t;for(i=0;in-1;i++)fo

    有以下程序: struct S{int n;int a[20];}; void f(struct S*P) { int i,j,t; for(i=0;i<P->n-1;i++) for(j=j+1;j<P->n-1;j++) if(p->a[i]>p->a[j]) {t=P->a[i];p->a[i]=P->a[j];p->a[j]=t} } main() {int i;struct S s{10,{2,3,1,6,8,7,5,4,10,9}}; f(&s); for(i=0;i<s.n;i++)printf("%d",s.a[i]);} 程序运行后的输出结果是( )。

    A.3

    B.4

    C.5

    D.6


    正确答案:A
    解析:在主函数main()中定义了一个整型变量i和一个结构体变量s。f()函数中,定义了一个结构体指针类型的指针p,外层循环变量i表示数组的第i个元素,内层循环j表示数组的第i+1个元素,调用f()函数,通过指针变量p来引用结构体成员,并把它们进行从小到大排序,最后输出。

  • 第11题:

    以下程序段运行后s的值是( )。

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

    int i,j,s=1;   

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

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

    s+=a[i][j];4

    A:6

    B:120

    C:7

    D:240


  • 第12题:

    单选题
    以下程序的输出结果是()。 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


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

  • 第13题:

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

  • 第14题:

    执行下面程序后输出的结果是()。include using namespace std;int main(){ int a[4][4

    执行下面程序后输出的结果是( )。 #include <iostream> using namespace std; int main(){ int a[4][4]={{1,2,3,-4},{7,-12,-13,8},{-21,9,0,-24},{-31,10,-33,11}}; int i,j,s=0; for(i=0;i<4;i++){ for(j=0;j<4;j++){ if(a[i][j]>=0)continue; s+=a[i][j]; } } coat<<s<<endl; return 0; }

    A.141

    B.-138

    C.-1

    D.75


    正确答案:B
    解析:在内层循环中,遇到大于等于0的数,继续执行下次循环,否则执行s+=a[i][j],即把其值累加并保存在变量s中。所以本题双重循环的功能是:计算数组中所有负数的累加和。

  • 第15题:

    有以下程序,程序运行后的输出结果是______。 int f(int b[][4]) { int i,j,s=0; for(j=0;j<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.22

    B.11

    C.18

    D.16


    正确答案:D
    解析:本题通过函数调用对数组a[0][0]、a[1][1]、a[2][2]、a[0][3]进行求和,然后用return语句返回s的值。

  • 第16题:

    有以下程序,程序运行后的输出结果是______。 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.22

    B.11

    C.18

    D.16


    正确答案:D
    解析:本题通过函数调用对数组[0][0]、a[1][1]、a[2][2]、对a[0][3]进行求和,然后用return语句返回s的值。

  • 第17题:

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

    有以下程序: #include <stdio.h> 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
    解析:程序中,当j=0时,i=0,i>2不成立,s+=b[0][0)=1;j=1时,i=1,i>2不成立,s=s+b[1][1]=1+2=3;j=2时,i=2,i>2不成立,s=s+b[2][2]=3+9=12;j=3时,i=3,i>2成立,i=3-j,此时i=0,s=s+b[0][3]=12+4=16;j=4时循环结束。所以最后s值为16。

  • 第18题:

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

  • 第19题:

    有以下程序的输出结果是 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,5},{3,6,9,12},{3,2,1,0}}; printf(“%d\n”,f(a)); }

    A.12

    B.11

    C.18

    D.16


    正确答案:D
    解析:程序执行过程为:
      j  i  i=3-j  s
      ①0 0 不执行  1
      ② 1 1 不执行 3
      ③2 2 不执行  12
      ④3 3  0  16
      ⑤4结束循环。

  • 第20题:

    有以下程序: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符合题意。

  • 第21题:

    以下程序的输出结果是()。include Void main(){int a[3][3]= { { 1,2 }, { 3,4 }, {

    以下程序的输出结果是( )。#include <iostream.h>Void 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]; cout<<s<<end1;}

    A.14

    B.19

    C.20

    D.21


    正确答案:A

  • 第22题:

    有如下程序: 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
    解析:题中的外循环只执行了2次:第1次:a[1][0]=3,a[1][1]=4,所以s=7;第2次:a[2][0]=5,a[2][1]=6,a[2][2]=0,所以s=7+5+6+0=18。

  • 第23题:

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