将a数组中的最小元素放到a[0],最大元素放到a[1], 将次小元素放到a[2],次大元素放到a[3],..., 以此类推。
例如:
原a数组各元素为:
-11 -7 0 3 8 15 16 20 38 重新排列后a数组各元素为: -11 38 -7 20 0 16 3 15 8
--------------------------------------------------------- 注意:请勿改动程序中的其他内容。
-------------------------------------------------------*/
#include
void rearr(int a[], int n) {
int left,right,i; int b[N]; left=0; right=N-1;
for(i=0; left b[i]=a[left++]; /**************************SPACE*************************/ b[i+1]=a[【?】]; } if(left==right) b[i]=a[left]; for(i=0;i /**************************SPACE*************************/ a[i]=【?】; } int main() { int i,a[N]={-11,-7,0,3,8,15,16,20,38}; rearr(a,N); for(i=0;i 答案: =======(答案1)======= right-- =======(答案2)======= b[i] 第5题 (20.0分) 题号:654 难度:中 第1章 /*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 函数void change(char s[],char t[])将s字符串中字母和数 字字符按以下规则转换,并将其保存在t中。其他字符则不作 转换。 大写字母转换规则:'A'->'z','B'->'y',...,'Z'->'a' 小写字母转换规则:'z'->'A','y'->'B',...,'a'->'Z' 数字字符转换规则:'0'->'9','1'->'8',...,'9'->'0' --------------------------------------------------------- 注意:请勿改动程序中的其他内容。 -------------------------------------------------------*/ #include void change(char s[],char t[]) { int i; for(i=0;s[i];++i) { if(isalpha(s[i])) t[i]=(isupper(s[i]) ? 'Z'-s[i]+'a' : 'z'-s[i]+'A'); else if(isdigit(s[i])) t[i]='9'-s[i]+'0'; else /**************************SPACE*************************/ 【?】; } t[i]=0; } int main() { char t[100]=\ char s[100]; /**************************SPACE*************************/ 【?】; printf(\ return 0; } 答案: =======(答案1)======= t[i]=s[i] =======(答案2)======= change(t,s) 二、程序改错 共5题 (共计150分) 第1题 (30.0分) 题号:575 难度:中 第1章 /*------------------------------------------------------- 【程序改错】 --------------------------------------------------------- 题目:int sort(int a[],int n)函数将n个元素的数组a中互不相 同的元素按升序排列,重新存入数组a中,函数返回按升序 排列后互不相同元素的个数。 例如:数组a中元素为6,2,7,5,4,3,4,6,5,4,调用sort函数后, 函数值为6,主函数中输出排序后的数组a元素为 2,3,4,5,6,7。 请改正程序中的错误,使它能得出正确的结果。 --------------------------------------------------------- 注意:不得增行或删行,也不得更改程序的结构。 --------------------------------------------------------*/ #include int i,j,k,low,high,mid,t; for(k=i=1;i low=0; high=k-1; while(low<=high) { mid=(low+high)/2; if(a[mid]>=a[i]) high=mid-1; else low=mid+1; } if(low>=k||a[low]!=a[i]) { /*******************FOUND*******************/ t=a[i]-1; /*******************FOUND*******************/ for(j=k;j>=low;j--) a[j+1]=a[j]; a[low]=t; k++; } } return k; } int main() { int a[ ]={6,2,7,5,4,3,4,6,5,4}; int i,n; n=sizeof(a)/sizeof(int); for(i=0;i printf(\ /*******************FOUND*******************/ sort(a,n); printf(\ for(i=0;i =======(答案1)======= t=a[i]; =======(答案2)======= for(j=k-1;j>=low;j--)