问题
填空题
下面程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其他元素不变。请填空完成此程序。
#include <iostream>
#include <string>
using namespace std;
int main ( )
char a[]="changuage",t,m;
int i,j,k;
k=strlen(A) ;
for (i=0; i<=k-2; i+=2)
m=i;
for (j=i+2; j<=k; 【7】 )
if (a[m] >a [j]
m=j;
if( 【8】 )
t=a[i];
a[i]=a[m];
a [m] =t;
cout<<a<<end1;
return 0;
答案
参考答案:[7]j+=2(或j=j+2)[8]m!=i
解析: 本题将字符数组a中下标值为偶数的元素从小到大排列,采用选择法排序。本题用m表示每轮最小值的下标。每次循环开始时,都认为该轮的最小值下标为第1个元素的下标即i,让m=i,然后最小值a[m]与所有后面的元素比较,如果后面的元素值小,则记下它的下标。第1空白处应填下标,j的变化,由于只对偶数下标排序,j的值应该增加2,故第1空白处填:j+=2。当一轮比较完后,该轮的最小值下标存放在变量m中,如果m的值就是该轮比较的第1个元素的下标值i,则不需要交换。只有在m不等于i的时候,才交换,所以第2空白处应填:m!=i。