模拟测试题一
一、改错题 【程序功能】
以下程序的功能是:对获得学位的学生名单排序。排序要求:数组元素按照degree值以自定义序列bachelor、master、doctor的顺序排列,对于degree值相同的那些元素,按照name的值以字典序排列。 【测试数据与运行结果】 测试数据: A master 运行结果: B bachelor B bachelor D bachelor C doctor A master D bachelor E master E master C doctor 【含有错误的源程序】 #include
struct {
char name[10]; char degree[10]; }ST;
void sort(ST x[],int n,char *key[],int m) {
int i,j,k,con1,con2; ST v;
for(i=0;i
for(j=0;j
for(k=0;k
if(strcmp(x[j].degree,key[k])==0) {
con1=k; break; }
for(k=0;k
if(strcmp(x[j+1].degree,key[k])==0) {
con2=k; break; }
if((con1>con2||con1==con2)&&strcmp(x[j].name,x[j+1].name)>0) {
v=x[j]; x[j]=x[j+1]; x[j+1]=v; } } }
void main() {
ST s[5]={{\ {\
char sortkey[]={\ int i;
sort(s,5,sortkey,3); for(i=0;i<5;i++)
printf(\ %s\ getch(); }
【要求】
? 将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。 ? 改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或者编译预处理命令,但不能增加其他语句,也不能删去整条语句。
? 将改正后的源程序myf1.c保存在考试盘的根目录下,供阅卷用,否则不予评分。
二、编程题 【编程要求】
1.编写函数int f