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