首页 > 全部 > 二级C语言 > 国家二级(C语言)机试模拟试卷866

国家二级(C语言)机试模拟试卷866

本单篇文档共3402字,内容预览3600字,预览为有答案版,源文件无水印,下载后包含无答案空白卷版和有答案版,同时也有计算机类NCRE全国计算机二级整科真题模拟题,讲义课件,思维导图,易错高频题等下载。
二级C语言 模拟试卷 2702人下载
价格: 2.00 原价:¥9.60
收藏

国家二级(C语言)机试模拟试卷866

程序填空题

1.使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。此程序定义了学生结构体变量,存储了学生的学号、姓名和三门课的成绩。所有学生数据均以二进制方式输出到文件中。函数run( )的功能是从形参filename所指的文件中读入学生数据,先按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。

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

注意:部分源程序在文件blank1.c中。

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

试题程序:

#include

#define N 5

typedef struct student{

long sno;

char name[10];

float score[3];

}STU;

void fun(char*filename)

{FILE*fp; int i,j;

STU s[N],t;

/*********found*********/

fp=fopen(filename,【1】);

fread(s,sizeof(STU),N,fp);

fclose(fp);

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

for(j=i+1; j<N;j++)

/*********found*********/

if(s[i].sno【2】s[j].sno)

{t=s[i]; s[i]=s[j];

s[j]=t;}

fp=fopen(filename,\\

(1)\\

解析:填空1:题目中要求从形参filename所指的文件中读入学生的数据,以此可以看出空1处应该填\\

程序修改题

2.使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun( )的功能是在字符串的最前面加入n个*号,形成新字符串,并覆盖原字符串。

字符串的长度最长允许为79。

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

注意:部分源程序在文件modi1.c中,不要改动main( )函数,不得增行或删行,也不得更改程序的结构!

试题程序:

#include

#include

void fun(char s[],int n)

{

char a[80],*p;

int i;

/*********found*********/

s=p;

for(i=0; i<n;i++)a[i]=’*’;

do

(a[i]=*p;

i++;

}

/*********found*********/

while(*p++)

a[i]=0;

strcpy(s,a);

}

main( )

{int n;char s[80];

printf(\\

(1)p=s;(2)while(*p++);

解析:(1)指针p应指向s,所以应改为p=s;。(2)循环等待,while循环每执行一次,临时变量p就应该指向字符串的下一位置,所以应改为while(*p++);。

程序设计题

3.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun( ),该函数的功能是统计各年龄段的人数。N个年龄通过调用随机函数获得,并放入主函数的age数组中。要求函数把0~9岁的人数存放在d[0]中,把10~19岁的人数存放在d[1]中,把20~29岁的人数存放在d[2]中,依此类推,把100岁(含100岁)以上年龄的人数都存放在d[10]中。结果在主函数中输出。

注意:部分源程序在文件prog1.c中。

请勿改动main( )函数和其他函数中的任何内容,仅在函数fun( )的花括号中填入你编写的若干语句。

试题程序:

#include

#define N 50

#define M 11

void fun(int*a,int*b)

{

}

double rnd( )

{

static t=29,c=217,m=1024,r=0;

r=(r*t+c)%m;

return((double)r/m);

}

void main( )

{

FILE*wf;

int age[N],i,d[M];

int b[N]=(32,45,15,12,86,49,97,3,44,52,17,95,63};

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

age[i]=(int)(115*rnd( ));/*产生一个随机的年龄数组*/

printf(\\

void fun(int*a,Int*b)

{

int i,j;

for(j=0;j<M;j++)

b[j]=0;/*数组b初始化为0*/

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

if(a[i]>=100)

b[10]++;/*如果年龄大于等于100,b[10]自增1*/

else

b[a[i]/10]++;/*如果年龄小于100,则将其分别统计到b[a[i]/10]中*/

}

解析:本题是一个分段函数的问题,用两个循环来完成。第1个循环的作用是使数组b中的所有元素值都为0。这个循环不能省略,因为若未对数组b中的元素赋初值,则它们的值将是不可预测的。第2个循环的作用是分别统计数组a中各年龄段的人数。当a[i]≥100时,按题意要将其统计到b[10]中。else的作用是如果年龄小于100,则将其分别统计到b[a[i]/10]中。由运算优先级可知先进行a[i]/10的运算,所得结果作为b的下标。若a[i]为0~9,a[i]/10的值为0,且0~9岁的人数正好存入b[0]中。若a[i]为10~19,a[i]/10的值为1,且10~19岁的人数正好存入b[1]中,依此类推。

本文档预览:3600字符,共3402字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载

剩余未完,查看全文
收藏
国家二级(C语言)机试模拟试卷866

推荐资源

客服

扫码添加客服微信

热线

官方客服

如遇问题,请联系客服为您解决

电话客服:

客服微信:pujinet

工作时间:9:00-18:00,节假日休息

公众号

扫码关注微信公众号