计算机等级考试中心
2018年3月C语言(新版)
上机题库答案第一套
1程序填空
给定程序中,函数fun的功能是将带头节点的单向链表结点数据域中的数据从小到大排序,即若原链表结点数据域从头至尾的数据为:10、4、2、8、6,排序后链表结点数据域从头至尾的数据为:2、4、6、8、10。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
第1处 p = h->next;
第2处 q=p->next;
第3处 if(p->data>=q->data))
2程序修改
给定程序MODI1.C是建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。函数fun的作用是求出单向链表结点(不包括头结点)数据域中的最大值,并且作为函数值返回。请改正函数fun中指定部位的错误,使它能得出正确的结果。
fun ( NODE *h)
{ int max=-1;
NODE *p;
/*******found******/
p=h->next;
while(p)
{ if (p->data>max)
max=p->data;
/*******found******/
p=p->next;
}
return max;
}
3程序设计
请编写函数fun,函数的功能是:将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中。一维数组中数据的个数存放在形参n所指的存储单元中。
void fun( int (*s)[10],int *b, int *n, int mm, int nn)
{
int i,j,k;
for(i=0;i
for(j=0;j
{
k=i*nn+j;
b[k]=s[i][j];
}
*n=mm*nn;
}
第二套
1程序填空
函数fun的功能是:反形参a所指数组中的最大值放在a[0]中,接着求出a所指数组中的最小值放在a[1]中;再把a所指数组元素中的次大值放在a[2]中,把a数组元素中的次小值放在a[3]中;以此类推。
第1处 void fun(int *a,int n)
第2处 for(i=0;i
第3处 for(j=i+1;j
2程序修改
给定程序MODI1.C中函数fun的功能是:按顺序给s所指数组中元素赋予从2开始的偶数,然后再按顺序对每五个元素求一个平均值,并将这些值依次存放在w所指的数组中,若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。
fun(double *s,double *w)
{
int k,i;double sum;
for(k=2,i=0;i
{ s[i]=k;
k+=2; }
/*******found******/
sum=0.0;
for(k=0,i=0;i
{ sum+=s[i];
/*******found******/
if((i+1)%5==0)
{ w[k]=sum/5;
sum=0;k++;}
}
return k;
}
3程序设计
学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把低于平均分的学生数据放在b所指的数组中,低于平均分的学生人数通过形参n传回。平均分通过函数值返回。
double fun(STREC *a,STREC *b,int *n)
{
int i;
double ave=0.0;
*n=0;
for(i=0;i
ave=ave+a[i].s;
ave/=N;
for(i=0;i
if(a[i].s
{ b[*n]=a[i];
(*n)++;
}
return ave;
}
第三套
1程序填空
给定程序中,函数fun的功能是:求出形参aa所指字符串数组中最长的字符串的长度,其余字符串左边用字符*补齐,使其与最长的字符串等长。字符串数组中共有M个字符串,且串长
第1处 k=i;
第2处 for(j=len;j>=0;j--)
第3处 ss[i][j]=’*’;
2程序修改
给定程序MODI1.C中fun函数的功能是:计算整数n的阶乘。请改正程序中的错误或在下划线处填上适当的内容并把下划线删除,使它能计算出正确的结果。
double fun(int n)
{
double result=1.0;
while(n>1&&n<170)
/*******found******/
result*=n--;
/*******found******/
return result;
}
3程序设计
编写函数fun,它的功能是:从s所指的字符串删除给定的字符。同一字母的大、小写按不同字符处理。
int fun(