2015高考C语言题 下载本文

将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 #define N 9

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 #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 sort(int a[],int n) {

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--)