工学

问答题考虑下面的程序: for (i=0;i<20;i++)                for(j=0;j<10;j++)               a[i]:=a[i]×j 试举例说明该程序的空间局部性和时间局部性。

题目
问答题
考虑下面的程序: for (i=0;i<20;i++)                for(j=0;j<10;j++)               a[i]:=a[i]×j 试举例说明该程序的空间局部性和时间局部性。
如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

现有如下程序段

#include "stdio.h"

#include "string.h"

main()

{ char a[]="acfijk"; /*这里是有序的字符序列*/

char b[]="befijklqswz"; /*这里是有序的字符序列*/

char c[80],*p;

int i=0,j=0,k=0;

while(a[i]!=′\0′&&b[j]!= ′\0′)

{ if(a[i]<b[j])c[k++]=a[i++];

else if(a[i]>b[j])c[k++]=b[j++];

else { c[k++]=b[j++];

i++;}}

while(a[i]==′\0′&&b[j]!= ′\0′)

c[k++]=b[j++];

while(a[i]!=′\0′&&b[j]== ′\0′)

c[k++]=a[i++];

c[k]=′\0′;

puts(c);}

则输出结果是

A.acfijkbefijklqswz

B.abceffiijjkklqswz

C.befijklqswz acfijk

D.abcefijklqswz


正确答案:D
解析:这个题目的功能是实现两个有序字符串,合并成一个新的有序的字符串。

第2题:

下面的程序段运行后,输出结果是

int i,j,x=0;

static int a[8][8];

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

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

a[i][j]=2*i+j;

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

x+=a[i][j];

printf("%d",x);

A.9

B.不确定值

C.0

D.18


正确答案:C
解析:本题主要考查的是用二维数组首地址和下标来引用二维数组元素的方法。通过分析可知,程序中的双重循环定义了一个如下的二维数组:
0  1  2
2  3  4
4  5  6
由于数组的下标是从0开始的,所以二维数组元素a[i][j]表示的是二维数组a的第i+1行、第j+1列对应位置的元素。

第3题:

以下程序按下面指定的数据给 x 数组的下三角置数,并按如下形式输出,请填空。

4

3 7

2 6 9

1 5 8 10

#include <stdio.h>

main()

{ int x[4][4],n=0,i,j;

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

for(i=3;i>=j; 【 12 】 ) {n++;x[i][j]= 【 13 】 ; }

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

{ for(j=0;j<=i;j++) printf("%3d",x[i][j]);

printf("\n");

}

}


正确答案:

第4题:

下列程序的输出结果是 include void main( ) {int a[3],i,j,k=2; for(i=

下列程序的输出结果是 #include<iostream.h> void main( ) { int a[3],i,j,k=2; for(i=0;i<3;i++)a[i]=i; for(i=0;i<k;i++) for(j=0;j<k;j++) a[j]=a[i]; cout<<a[2];}

A.2

B.3

C.1

D.0


正确答案:A
解析:本题里有三个for循环,但要分清楚,第一个是单独的给三个元素赋值,赋完值后三个a[0]=0,a[1]=1,a[2]=2;后面的两个for是嵌套循环,对数组元素的赋值,但由于k=2,初值已定for里的条件是小于k,所以不管怎么处理都影响不到a[2],故答案为2。

第5题:

以下程序的输出结果是()。includevoid main(){int a(5),b(6),i(0),j(0);switch(a) {

以下程序的输出结果是( )。 #include<iostream.h> void main() { int a(5),b(6),i(0),j(0); switch(a) { case 5:switch(b) { case 5:i++;break; case 6:j++;break; default:i++;j++; } case 6:i++; j++; break; default:i++;j++; } cout<<i<<","<<j<<endl; }

A.1,2

B.1,3

C.2,2

D.2,3


正确答案:A

第6题:

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

include<stdio.h>

main()

{ int n[2],i,j;

for(i=0;i<2;i++)n[i]=0;

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

for(j=0;j<2;j++)n[j]=n[i]+1;

printf("%d\n",n[1]);

}


正确答案:
3 解析:该题先是初始化数组n[2]中的元素全部赋值为0,然后执行两层for循环,当i=0,j=0,a[0]为1、a[1]为0,当j=1时,a[0]为1、a[1]为2;当i=1,j=0,a[0]为3、a[1]为2,当i=1,j=1时,a[0]为3、a[1]为3。

第7题:

现在有如下程序

#include "stdio.h"

main()

{char s[80];

int i,j;

gets(s);

for(i=j=0;s[i]!=′\0′;i++)

if(s[i]!=′H′______)

s[j]=′\0′;

puts(s);}

这个程序段的功能是删除输入的字符串中字符′H′,则空线上应当添入的是

A.s[j++]=s[i];j++;

B.s[j]=s[i++];j++;

C.s[j++]=s[i];

D.s[j]=s[i];


正确答案:C

第8题:

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


正确答案:0 2 3 0 0 6 0 0 0
将a[0][0],a[1][0],a[2][0],a[1][1],a[2][1],a[2][2]赋值为0,所a[][3]={0,2,3,0,0,6,0,0,0}

第9题:

以下程序的执行结果是______。 main() { int i,j,m=O,n=0; for (i=0;i<2;i++) {for (j=0;j<2;j++) if(j>=i) m=1;n++; printf("%d\n",n); } }

A.4

B.2

C.1

D.0


正确答案:C

第10题:

有以下程序 main() { int n[3],i,j; for(i=0;i<3;i++)n[i]=0; for(i=0;i<2,i++) for(j=0;j<2;j++)n[j]=n[i]+1; printf("%d\n",n[1]); } 程序运行后的输出结果是( )

A.2

B.1

C.0

D.3


正确答案:D

更多相关问题