网站首页 语言 会计 电脑 医学 资格证 职场 文艺体育 范文

2017计算机二级C语言上机测试题附答案

栏目: 计算机二级 / 发布于: / 人气:1.02W

引导语:计算机上机考试要灵活应变,以下是本站小编分享给大家的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 %sn", 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, %dn",,m.s);

NON0( );

}

NON0( )

{*本函数用于打开文件,输入 数据,调用函数,输出数据,关闭文件。*/

FILE *rf, *wf;

STU a[N], m ;

Int i;

rf = fopen("", "r,) ;

wf= fopen("", "w") ;

for(i = 0 ; i < 10; i++) fscanf(rf, "%s %d", a[i], &a[i].s) ;

fun(a, &m) ;

fprintf (wf, "The top : %s, %dn", , re.s) ;

fclose(rf) ;

fclose(wf) ;

}