程序片断如下:int i = 4;int a[] = new int[5];while(i=0){a[i] = i;}for(int j=0; j=a.length; j++){System.out.println(a[j]);}请问当该程序片断被运行时,是否会出现错误?如果没有,输出结果是什么?如果有错误,请指出错误并改正。

题目

程序片断如下:

int i = 4;

int a[] = new int[5];

while(i>=0)

{

a[i] = i;

}

for(int j=0; j<=a.length; j++)

{

System.out.println(a[j]);

}

请问当该程序片断被运行时,是否会出现错误?如果没有,输出结果是什么?如果有错误,请指出错误并

改正。

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

下列程序段选择项,使i的运行结果为3的程序段是( )。

A.int i=0,j=O; (i=2,(j++)+i);

B.int i=1,j=0; j=i=((i=3)*2);

C.int i=0,j=1; (j=1)?(i=1):(i=3);

D.int i=1,j=1; i+=j+=1;


正确答案:D

第2题:

下列程序的输出结果是 #include"stdio.h" #define N 3 #define M 3 void fun(int a[M][N]) { printf("%d\n",*(a[1]+2));} main() { int a[M][N]; int i,j; for(i=0;i<M;i++) for(j=0;j<N;j++) a[i][j]=i+j-(i-j); fun(a);}

A.3

B.4

C.5

D.6


正确答案:B
解析:若有以下定义:inta[3][4],i,j;且当0=i3,0=j4,则可以有以下几种方式来引用数组中的第i行,第j列的元素:a[i][j],*(a[i]+j),*(*(a+i)+j),(*(a+i))[j],*(&a[0][0]+4*i+j)。

第3题:

以下程序运行后的输出结果是【】。 include using namespace std; int main() {int i=10,

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

include<iostream>

using namespace std;

int main()

{

int i=10,i:0;

do{

j=j+i;

i--;

}while(i>2);

cout<<j<<end1;

return 0;

}


正确答案:52
52 解析:do-while语句的特点:先执行循环体,后判断条件。第1次循环执行后,j和i的值分别为10和9。判断循环条件为真,继续执行循环体,j和i分别为19和8。继续上述执行过程,直到i的值为2时,表达式“2>2”不再成立,退出循环。此时j的值为52。

第4题:

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

第5题:

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

第6题:

阅读下列程序段

int i=3,j;

outer:while(i>0){

j=3;

inner:while(j>0){

if(j<2) break outer;

System.out.println(j+"and"+i);

j--;

}

i--;

}

被输出到屏幕的第一行结果是【 】 。


正确答案:3 and 3
3 and 3 解析:本题考查Java的break跳转语句。在Java中,可以用break语句推出循环,并从紧跟该循环结构的第一条语句处开始执行。此外,break语句还提供了一个“标签化中断”的语句,可让程序退出多重嵌套循环。其中,标签就是加在要中断的那个循环之前,同时在这个标签后面必须跟一个冒号(:)。本题程序中inner和outer就是两个标签,分别加在内外两个循环之前。
  本题程序中,在生成两个变量i和j后,就判断i>0的结果为true,因此执行外层循环体。在外层循环中,首先为变量j赋值,然后判断条件j>0的结果也为true,因此执行内层循环体,首先判断条件j2的结果为false,则不执行if语句中的break outer语句,而继续执行System.out.println(j+"and"+i)语句,即输出“3 and 3”。然后j的值减1,返回到外层while循环的开始继续判断条件。
  经过上述分析可知,本题划线处应填入“3 and 3”。

第7题:

以下程序的输出结果是【】。 main() { int p[7]=(11,13,14,15,16,17,18}; int i=0,j=0; while(i<7&a

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

main()

{

int p[7]=(11,13,14,15,16,17,18};

int i=0,j=0;

while(i<7&&p[i]%2==1)j+=p[i++];

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

}


正确答案:24
24 解析:本题程序定义了一维数组p,有七个数组元素,整型变量i,j初值分别为0,当while的条件表达式(i7&&p[i]%2=1)的值为真时,执行语句j+=p[i++];,如:当i=0时,i7为真,p[i]%2=11%2=1,表达式(p[i]%2=1)的值为真,所以接个表达式(i7&&p[i]%2=1的值为真,执行j=j+p[i++]=0+11=11,i=1;,依此类推可以得出答案24。

第8题:

有如下程序: include using namespace std; int main(){ int sum;

有如下程序: #include<iostream> using namespace std; int main(){ int sum; for(int i=0;i<6;i+=3){ sum=i; for(int j=i;j<6;j++)sum+=j; } cout<<sum<<end1; return 0; } 运行时的输出结果是( )。

A.3

B.10

C.12

D.15


正确答案:D
解析:此题考查的是for循环。首先进入外循环,根据循环条件,i的初始化值为0,赋值给sum,进入内循环.i的初值也被赋值为 i的初始值0,所以第一次内循环sum值为0,判断j=0,小于6,进行第二次内循环,sum的值为1,同理,仍然进行内循环直到j=6,跳出内循环,sum=15:外循环中i=3,i6,满足循环条件进入第二次外循环,i=3,sum=3,进入内循环,j=3,同理,计算内循环中sum的值,直到j=6跳出内循环,此时sum=15;外循环中i=6,跳出外循环,执行输出语句,即sum=15。

第9题:

以下程序的输出结果是( )。 include main() {int i=10,j=0; do {j=j+i; i--; }while(i>5

以下程序的输出结果是( )。 include<stdio.h> main() {int i=10,j=0; do {j=j+i; i--; }while(i>5); printf("%d\n",j); }


正确答案:40
40 解析:分析程序,初始时i=10,j=0,这时do循环中的“i=j+i”

第10题:

以下程序输出正确的是_______ amovep(int *p,int (*a)[3],int n) { int i,j; for(i=0;i<n;i++) for(j=0;j<n;j++){ *p=a[i][j];p++;} } main() {int *p,a[3][3]={{1,3,5}, {2,4,6}}; p=(int*)mallox(100) amovep)p,a,3); printf("%d%d\n",p[2],p[5]);free(p) }

A.56

B.25

C.34

D.程序错误


正确答案:A
解析:本题main函数中定义了指针p和二维数组a,通过函数amovep将数组的值存入指针p所指向的存储单元中,a的各元素分别:a[0][0]=1,a[0][1]=3,a[0][1]=3,a[0][2]=5,a[1][2]=2,a[1][1]=4,a[1][2]=6,a[2][0]=0,a[2][1]=0,a[2][2]=0。通过malloc()函数给指针分配内存空间,free()函数用于释放指针变量所用内存空间。在主函数中通过amovep(p,a,3)调用函数amovep,使得实参p与形参P,实参数组a与形参中指向数组的指针变量共用同一存储空间。最后输出p[2],p[5]为56。

更多相关问题