江苏省高等学校非计算机专业学生
计算机基础知识和应用能力等级考试上机试卷(2012春)
二级 C语言(试卷代号C01)
(本试卷完成时间 70分钟)
一、 改错题(16分)
【程序功能】
以下程序中函数void csort(char str[][N],int n)对str指向的二级数组前n行中存储的n个字符串分别做如下处理:从中间将字符串一分为二,左半部分字符子串按字符的ASCII码从大到小排序(若字符串长度为奇数,则中间字符不参加排序)。
【测试数据与运行结果】
测试字符串:”abcdefgh”,”123498765”
屏幕输出:dcbaefgh
432198765
【含有错误的源程序】
#include
#include
#include
#define N 80
void csort(char str[][N],int n);
void main()
{ char s[2][N]="abcdefgh","123498765"; //char s[2][N]={"abcdefghertyt","123498765"};
//二维字符串赋值需要在数值两边加大括弧
//char s[10]= "we hunt the dog";
int i;
csort(s,2);
for(i=0;i<2;i++)
puts(s); //puts(s[i]); s[i]表示第i行字符串
getch();
}
void csort(char str[][N],int n)
{ int i,j,k,len,half;
char temp;
for(i=0;i
{ len=strlen(str[i][0]); //len=strlen(str[i]);
half=len/2; // half=len/2+1;因为下面两行循环终止值是half-1
for(j=0;j
for(k=j+1;k
if(str[i][j]
{ temp=str[i][j];
str[i][j]=str[i][k];
str[i][k]=temp;
}
}
}
【要求】