若有以下程序:
#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语句用于打印经过程序处理后数组中的元素。