2017计算机二级C语言上机测试题附答案
引导语:计算机上机考试要灵活应变,以下是百分网小编分享给大家的2017计算机二级C语言上机测试题附答案,欢迎测试!
1.程序填空
给定程序的功能是判断字符ch是否与串str中的某个字符相同:若相同,什么也不做,若不同,则插在串的最后。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果
注意:不得增行或删行,也不得更改程序的结构!
试题程序:
#include
#include
void fun(char*str, char ch )
{ while ( *str && *str != ch ) str++;
if( *str 1 ch )
{ str[0] =ch;
2 = 0;
}
}
main( )
{ char s[81], c;
printf( "\nPlease enter a string:\n" ); gets ( s );
printf ("\n Please enter the character to search : " );
c = getcharO;
fun( 3 ) ;
printf( "\nThe result is %s\n", s);
2.程序修改
【答案】
(1)错误:第5行fun(int**a,int m)
正确:fun(int a[][M],Int m)
(2)错误:第9行 a[j][k]=k*j;
正确:a[j][k]=(k+1)*(j+1);
【评析】
第5行:第二个形参m是用户输入的维数,没有别的名堂,第一个形参是为了指明在函数fun()中要产生的多维数组,"**a"是不能正确表示一个多维数组的,我们应当使用"int a[M][M]"。
第9行:循环体的.内容是给m维的多维数组赋值,这个多维数组在列方向是由1开始的自然数,在行方向上是行首第一数的n倍数,显然,"a[j][k]=k*j;"不符合题意,我们应当使用"a[j][k]=(k+1)*(j+1);"。
3.程序设计
已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun,函数的功能是:找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分)。已给出函数的首部,请完成该函数。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include
#include
#include
#define N 10
typedef struct ss
{ char num[10];int s;} STU;
fun(STU a[],STU *s)
{
}
main()
{STU
a[N]= { {"A01",81}, {"A02",89}, {"A03",66}, {"A04", 87}, {"A05",77}, {"A06",90}, {"A07",79}, {"A08",61}, {"A09",80 }, {"A10",71 }},m;
int i;
elrser();
printf("***** The original data *****\n");
for (i=0;i fun(a,&m);
printf("***** THE RESULT *****\n");
printfCThe top : %s, %d\n",m.num,m.s);
NON0( );
}
NON0( )
{\*本函数用于打开文件,输入 数据,调用函数,输出数据,关闭文件。*/
FILE *rf, *wf;
STU a[N], m ;
Int i;
rf = fopen("bc09.in", "r,) ;
wf= fopen("bc09.out", "w") ;
for(i = 0 ; i < 10; i++) fscanf(rf, "%s %d", a[i].num, &a[i].s) ;
fun(a, &m) ;
fprintf (wf, "The top : %s, %d\n", m.num, re.s) ;
fclose(rf) ;
fclose(wf) ;
}