问题 单项选择题

若有以下程序:
#include〈iostream〉
using namespace std;
int main()

int data[4],i,j,temp;
for (i=O; i<4; i++)
cin>>data[i];
for (i=1; i<4; i++)

j = i-1;
temp = data[i];
while (data [j ] >temp&&j >=0)

data[j+1] = data[j];
j--;

data[j+1] = temp;

for(i=O;i<4;i++)
cout〈〈data[i]〈〈" ";
cout〈〈end1;
return 0;

A.2843

B.2348

C.8243

D.8432

答案

参考答案:B

解析: 本题属于综合题,考查数组和循环语句两方面的知识。此题看起来很复杂,其实不然,根据程序逐步分析:
①在程序第1个for语句中,为数组data赋输入的值,即2,8,4,3。
②第2个for语句是嵌套式循环,循环次数是3次,即从1到3。第1次循环时, i=1,执行“j=i-1”后,j=0,然后把data[1]的值赋给temp,再进入while循环。
③while后的条件表达式“data[j]〉temp&&j〉=0”,就是当data刚大于temp,同时j不小于0时执行while循环体。当while条件表达式成立时,执行“data[j+1]=data[j]”,即当data刚大于data[j]大于data[j+1]时,把它们俩的值交换一下,以此类推,最后实现把数组中的数从小到大排列起来。
④最后一个for语句用于打印经过程序处理后数组中的元素。

填空题
问答题