您当前位置: 唯学网 » 计算机等级考试培训 » 二级专题

计算机考试二级C语言上机模拟试题

来源:唯学网•教育培训(www.vixue.com)  【唯学网 • 中国教育电子商务平台】 加入收藏

为了使参加2014年计算机考试的考生在备考中总结经验,小编整理了2014年计算机考试二级C语言上机模拟试题,希望考生能在答题中找到规律,希望考生在答题中总结出的经验运用到考试中,并顺利通过2014年计算机考试。

函数fun的功能是:逆置数组元素中的值。例如:若a所指数组中的数据依次为:1、2、3、4、5、6、7、8、9,则逆置后依次为:9、8、7、6、5、4、3、2、1。形参n给出数组中数据的个数。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

给定源程序:

#include

void fun(int a[], int n)

{ int i,t;

for (i=0; i<___1___; i++)

{

t=a[i];

a[i] = a[n-1-___2___];

___3___ = t;

}

}

main()

{ int b[9]={1,2,3,4,5,6,7,8,9}, i;

printf("\nThe original data :\n");

for (i=0; i<9; i++)

printf("M ", b[i]);

printf("\n");

fun(b, 9);

printf("\nThe data after invert :\n");

for (i=0; i<9; i++)

printf("M ", b[i]);

printf("\n");

}

解题思路:

第一处:利用for循环语句,对数组中的各元素进行逆置,所以终止值为n/2。

第二处:进行交换数组中元素的值,由于是依次是首和尾交换,所以应填:i。

第三处:使用中间变量t来交换的,所以应填:a[n-i-1]。

给定程序MODI1.C中函数fun的功能是:将一个由八进制数字字符组成的字符串转换为与其面值相等的十进制整数。规定输入的字符串最多只能包含5位八进制数字字符。

例如,若输入:77777,则输出将是:32767。

请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

给定源程序:

#include

int fun( char *p )

{ int n;

n= *P-’o’;

p++;

while( *p!=0 ) {

n=n*8+*P-’o’;

p++;

}

return n;

}

main()

{ char s[6]; int i; int n;

printf("Enter a string (Ocatal digits): "); gets(s);

if(strlen(s)>5){ printf("Error: String too longer !\n\n");exit(0); }

for(i=0; s[i]; i++)

if(s[i]<’0’||s[i]>’7’)

{ printf("Error: %c not is ocatal digits!\n\n",s[i]);exit(0); }

printf("The original string: "); puts(s);

n=fun(s);

printf("\n%s is convered to integer number: %d\n\n",s,n);

}

解题思路:

第一和第二处:*p错写成*P,’0’错写成’o’。

学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:函数返回指定学号的学生数据,指定的学号在主函数中输入。若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回。(用于字符串比较的函数是strcmp)。

注意: 部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入

你编写的若干语句。

给定源程序:

#include

#include

#define N 16

typedef struct

{ char num[10];

int s;

} STREC;

STREC fun( STREC *a, char *b )

{

}

main()

{ STREC s[N]={{"GA005",85},{"GA003",76},{"GA002",69},{"GA004",85},

{"GA001",91},{"GA007",72},{"GA008",64},{"GA006",87},

{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},

{"GA011",77},{"GA017",64},{"GA018",64},{"GA016",72}};

STREC h;

char m[10];

int i;FILE *out ;

printf("The original data:\n");

for(i=0; i  { if(i%4==0) printf("\n");

printf("%s = ",s[i].num,s[i].s);

}

printf("\n\nEnter the number: ");gets(m);

h=fun( s,m );

printf("The data : ");

printf("\n%s M\n",h.num,h.s);

printf("\n");

out = fopen("c:\\test\\out.dat","w") ;

h=fun(s,"GA013");

fprintf(out,"%s M\n",h.num,h.s);

fclose(out);

}

解题思路:

本题是从学生记录体中找出给定的学号。具体操作请看答案程序中的说明。

参考答案:

STREC fun( STREC *a, char *b )

{

STREC c ;

int i ;

c.num[0] = ’\0’ ; /* 置初始空串 */

c.s = -1 ; /* 置成绩为-1 */

for(i = 0 ; i < N ; i++)

if(strcmp(a[i].num, b)==0) { /* 判断学号是否相等 */

strcpy(c.num, a[i].num) ; /* 相等,则对学号进行赋值 */

c.s=a[i].s; /* 相等,则对成绩进行赋值 */

break ; /* 退出循环体 */

}

return c ; /* 返回结构体变量 */

}

在计算机培训栏目中还有计算机等级考试一级和三级的考试辅导资料、计算机等级考试培训课程想获得更多的资料,请点击唯学网计算机培训栏目,祝考生能顺利通过考试。

0% (0)
0% (10)
已有条评论