国家二级(C语言)机试模拟试卷45(共23题)_第1页
国家二级(C语言)机试模拟试卷45(共23题)_第2页
国家二级(C语言)机试模拟试卷45(共23题)_第3页
国家二级(C语言)机试模拟试卷45(共23题)_第4页
国家二级(C语言)机试模拟试卷45(共23题)_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

国家二级(C语言)机试模拟试卷45(共8套)(共23题)国家二级(C语言)机试模拟试卷第1套一、程序填空题(本题共1题,每题1.0分,共1分。)1、给定程序中,函数fun的功能是:计算形参x所指数组中N个数的平均值(规定所有数均为正数),将所指数组中大于平均值的数据移至数组的前部,小于等于平均值的数据移至x所指数组的后部,平均值作为函数值返回,在主函数中输出平均值和移动后的数据。例如,有10个正数:4630324061745154826,平均值为:30.500000移动后的输出为:4632404548306171526请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKl.C中。不得增行或删行,也不得更改程序的结构!标准答案:(1)s/N(2)j++(3)-1知识点解析:本题中函数fun的功能是计算形参x所指数组中N个数的平均值,将所指数组中大于平均值的数据移至数组的前部,小于等于平均值的数据移至x所指数组的后部。在fun函数中,首先求平均值,然后拿平均值逐个和数组元素比较,如果元素值大于平均值则保存在数组y中,再把小于等于平均值的元素放在数组y后面,最后把y数组内的元素拷贝到x所指的数组中。二、程序修改题(本题共1题,每题1.0分,共1分。)2、给定程序MODll.C中函数fun的功能是:将s所指字符串的正序和反序进行连接,形成一个新串放在t所指的数组中。例如,当s所指字符串为:“ABCD”时,则t所指字符串中的内容应为:“ABCDDCBA”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!标准答案:(1)voidfun(char*s,char*t)(2)t[2*d]=‘\0’;知识点解析:本题中函数的功能是将字符串的正序和反序进行连接。题目中首先由字符串的起始位置正序取字符,然后再由串尾逆序取字符,实现正序和逆序的连接。三、程序设计题(本题共1题,每题1.0分,共1分。)3、编写程序,实现矩阵(3行3列)的转置(即行列互换)例如,输入下面的矩阵:100200300400500600700800900程序输出:100400700200500800300600900注意:部分源程序在文件PROGl.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。标准答案:知识点解析:该程序功能是实现矩阵的转置。其中,矩阵的转置就是实现矩阵行列元素的互换。例如,array[1][2]和array[2][1]进行交换。国家二级(C语言)机试模拟试卷第2套一、程序填空题(本题共1题,每题1.0分,共1分。)1、给定程序中,函数fun的功能是:将形参s所指字符串中的所有字母字符顺序前移,其他字符顺序后移,处理后新字符串的首地址作为函数值返回。例如,s所指字符串为:asdl23fgh543df,处理后新字符串为:asdfghdfl23543。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKl.C中。不得增行或删行,也不得更改程序的结构!#include#include#includechar*fun(char*s){inti,j,k,n;char*p,*t;n=strlen(s)+1;t=(char*)malloc(n*sizeof(char));p=(char*)malloc(n*sizeof(char));j=0;k=0;for(i=0;i=’a’)&&(s[i]<=’z’))||((s[i]>=’A’)&&(s[i]<=’Z’))){/**********found**********/t[j]=【1】;j++;}else{p[k]=s[i];k++;}}/**********found**********/for(i=0;i<【2】;i++)t[j+i]=p[i];/**********found**********/t[j+k]=【3】;returnt;}main(){chars[80];printf("Pleaseinput:");scanf("%s",s);printf("\nTheresultis:%s\n",fun(s));}标准答案:s[i]k0知识点解析:第一空:此处是将字母字符s[i]存储在t字符串中,j记录t字符串的长度,故第一空处应为“s[i]”。第二空:“for(i=0;i<__2__;i++)t[j+i]=p[i];”循环变量i从0开始,“t[j+i]=p[i];”是将p字符串中的k个字符保存在t字符串的后面,p字符串的长度为k,故循环的终止条件是i>=k,因此第二空处应为“k”。第三空:在C语言中,字符串以“’\0’”结束,故第三处应为“’\0’”或“0”。二、程序修改题(本题共1题,每题1.0分,共1分。)2、给定程序MODll.C中函数fun的功能是:从n(形参)个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。例如,若输入8名学生的成绩:80.5607290.59851.58864则低于平均分的学生人数为:4(平均分为:75.5625)。请改正程序中的错误,使它能统计出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#inclucle#defineN20intfun(float*s,intn,float*aver){floatave,t=0.0;intcount=0,k,i;for(k=0;k标准答案:(1)t+=s[k];(2)*aver=ave;知识点解析:(1)根据题目要求求出平均分,首先要求总分,要把所有学生成绩相加再求平均分,因此第一个标识下面的“t=s[k];"应改为“t+=s[k];"。(2)根据题目可知,比较的结果中高于平均分的分数ave放入指针aver所指的地址单元中,而变量Ave没有定义,因此第二标识下应将“*aver=Ave;"改为“*aver=ave;"。国家二级(C语言)机试模拟试卷第3套一、程序填空题(本题共1题,每题1.0分,共1分。)1、给定程序的功能是:从键盘输入若干行文本(每行不超过80个字符),写到文件myfile4.txt中,用-1作为字符串输入结束的标志。然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数ReadText和WriteText实现。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKl.C中。不得增行或删行,也不得更改程序的结构!#include#include#includevoidWriteText(FILE*);voidReadText(FTLE*);main(){FILE*fp;if((fp=fopen(”myfile4.txt”,”w”))==NULL){printf(”openfai1!!\n”);exit(0);}wziteText(fp);fcloseffp);if((fp=fopen(”myfile4.txt”,”r”))==NULL){printf(”openfail!!\n”);exit(0);}ReadText(fp);fclose(fp);}/**********found**********/voidWriteText(FILE【1】){charstr[81];printtf(”\nEnterstringwith-1toend:\n”);gets(str);while(strcmp(str,”一1”)!=0){/*************found***********/fputs(【2】,fw);printf(”%s”,【3】);fgets(str,81,fr);}}fputs(”\n”,fw);gets(str);}}voidReadText(FTLE*fr){charstr[81];printf(”\nReadfileandoutputtoscreen:\n”);fgets(sir,81,fr);while(!leof(fr)){/*************found**********/标准答案:(1)*fw(2)str(3)str知识点解析:第一空:此处是补充函数参数名,参数类型已知是FILE文件指针,futs("\n",fw)是将字符“\n"写入文件,可知fw是文件指针名,因此第一空处应该是voidwriteText(FILE*fw)。第二空:while(strcmp(str,"-1")!=0)循环的结束标志是str字符串等于“-1"时循环退出,如果str不等于“-1",执行循环体内容;用fputs函数将str字符串写入文件。fputs函数的调用形式是:fputs(s,fp),其中s是指向字符串的指针或字符串数组名,fp是指向将要被写入的文件的文件指针,因此第二处应该是fputs(str,fw)。第三空:while(!feof(fr))循环的作用是不断读取文件直到到达文件尾,每次最多读81个,将读到的数据放在s打字符串里,并用printf输出到屏幕,因此第三处应该是printf("%s".str)。二、程序修改题(本题共1题,每题1.0分,共1分。)2、假定整数数列中的数不重复,并存放在数组中。给定程序MODII.C中函数fun的功能是:删除数列中值为x的元素。n中存放的是数列中元素的个数。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。#include#defineN20intfun(int*a,intn,intx){intp=0,i;a[n]=x;while(x!=a[p])p=p+1;/**********found**********/if(P==n)return-1;else{for(i=p;i标准答案:if(p==n)return-1;a[i]=a[i+1];知识点解析:(1)第一标识下“if(P==n)return-1;”中变量P没有定义,编译时会提示出错。根据题意,这里是判断p是否已经到了字符串的末尾,即是否存在值为x的元素,如果不存在则返回-1,故第一标识下应改为“if(p==n)return-1;”。(2)“for(i=p;i三、程序设计题(本题共1题,每题1.0分,共1分。)3、请编写函数fun,函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。例如。一维数组中的数据是:2223445666677899101010。删除后,数组中的内容应该是:2345678910。注意:部分源程序在文件PROGl.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include#defineN80intfun(inta[],intn){}main(){inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10),i,n=20;voidNONO();printf(”Theoriginaldata:\n”);for(i=0;i标准答案:inti,t,j=0,*p=a;t=p[0];//设置临时变量t初值指向第一数组值for(i=0;i<=n;i++)if(t==p[i])//当临时变量与数组中的某个值相同则跳出,比较下一个元素;else//如果临时变量与数组中值不同,则对临时变量重新赋值{a[j]=t;t=p[i];j++;}if(i>=n)a[j]=t,returnj;知识点解析:(1)首先,设置一个临时变量,初值设置为一维数组的第一个元素。(2)然后,依次将数组的元素与临时变量比较,如果相同,则继续取数组下一个元素与临时变量比较:如果不同。则将临时变量的值赋值到数组的第一个元素,同时将此与临时变量不同的数组元素赋值给临时变量。(3)循环执行,直到所有的数据处理完毕。国家二级(C语言)机试模拟试卷第4套一、程序填空题(本题共1题,每题1.0分,共1分。)1、请补充main函数,该函数的功能是:计算每个学生成绩的平均分,并把结果保存在数组bb中。例如,当scorer[N][M]={{83.5,82,86,65,67),{80,91.5,84,99,95){90.5,95,86,95,97}}时,三个学生的平均分为76.789.992.7。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在main函数的横线上填入所编写的若千表达式或语句。试题程序:#include<stdio.h>#defineN3#defineM5main(){inti,j;staticfloatscore[N][M]={{83.5,82,86,65,67},{80,91.5,84,99,95},{90.5,95,86,95,97}};floatbb[N];clrscr();for(i=0;i<N;i++)【】;for(i=0;i<N;i++){for(j=0;j<M;j++)【】;bb[i]/=M;}for(i=0;i<N;i++)printf("knstudent%d\taverage=%5.1f",i+l,bb[i]);}标准答案:bb[i]=0bb[i]+=score[i][j]知识点解析:第一空:每个人的平均分都保存在数组bb[N]中,所以在使用前要对数组bb的各元素赋初值0。埴中2:为了求出平均分,首先要求出每个学生的总分,并存于数组bb中。二、程序修改题(本题共1题,每题1.0分,共1分。)2、给定程序中,函数fun()的功能是:使数组中的元素的值增加10倍。改正其中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构.试题程序:#include<stdio.h>#include<conio.h>ihtm[10];voidfun(void){intj;printf("Insubfuncaftercalling\n");for(j=0;j<l0;j++){/************found**********************/printf("%3d",m[j]*l0);}}main(){inti;printf("Inmainbeforecalling\n");for(i=0;i<10;i++){m[i]=i;printf("%3d",m[i]);}fun();printf("\nInmainaftercalling\n");for(i=0;i<10;i++)printf("%3d",m[i]);getch();}标准答案:错误:printf("%3d"m[j]*10);正确:printf("%3d"m[j]=m[j]*10知识点解析:本题考查全局变量相关知识。该题程序中的fun()没有参数输入,但数组m[10]为全局变量,故可在fun()函数中使用,fun()函数对数组m的操作可以反映到主函数的输出结果中。三、程序设计题(本题共1题,每题1.0分,共1分。)3、请编写函数fun(),其功能是;计算井输出下列多项式值。S=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)-1/2n)例如,若主函数从键盘给n输入8后,则输出为S-0.662872。注意;部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序;#include<stdio.h>doublefun(intn){}main(){intn;doubles;printf("\nInputn:");scanf("%d",&n);s=fun(n);printf("\ns=%f\n",s);}标准答案:doublefun(intn){inti;doubles=0.0;for(i=1;i<=n;i++)s=s+(1.0/(2*i-1)-1.0/(2*i));/*计算S=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)-l/2n)*/returns;}知识点解析:本题中s=s+(1.0/(2*i-1)-1,O/(2*i));语句是用C程序去表达题目中的每一项,这是关键,其他问题不难理解。国家二级(C语言)机试模拟试卷第5套一、程序填空题(本题共1题,每题1.0分,共1分。)1、数组xx[N]保存着一组3位数的无符号正整数,其元素的个数通过变量num传入函数fun()。请补充函数fun(),该函数的功能是:从数组xx中找出个位和百位的数字相等的所有无符号整数,结果保存在数组yy中,其个数由函数fun()返回。例如:当xx[8]={135,78,72,32,222,424,333,141,541}时,bb[6]={787,232,222,424,333,141}。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。试题程序:#include<conio.h>#defineN1000intfun(intxx[],intbb[],intnum){inti,n=0;intg,b;for(i:0;i<num;i++){g=【】;b=xx[i]/100;if(g==b)【】;}return【】;}main(){intxx[8]={135,787,232,222,424,333,141,541};intYY[N];intnum=0,n=0,i=0;num=8;clrscr();printf("***originaldata***\n");for(i=0;i<num;i++)printf("%u",xx[i]);printf("\n\n\n");n=fun(xx,yy,num);printf("\nyy=");for(i=0;i<n;i++)printf("%u",YY[i]);}标准答案:xx[i]%10bb[n++]=xx[i]n知识点解析:第一空:变量b存放了三位数的百位数字,所以变量g应该存放三位数的个位数字,将这个三位数对10求余,则得到这个数的个位数字。第二空:将个位数字与百位数字相等的整数存于数组bb中。第三空:变量n记录了个位数字等于百位数字的整数的个数,题目要求个数由函数fun()返回,所以应返回n。二、程序修改题(本题共1题,每题1.0分,共1分。)2、下列给定程序中,函数fun的功能是按以下递归公式求函数值。例如:当给n输入5时,函数值为240;当给n输入3时,函数值为60。请改正程序中的错误,使它能得到正确结果。注意;不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdio.h>/*************found****+*******/fun(intn);{intc;/*************found********+*****/if(n=1)c=15;elsec=fun(n-1)*2;return(c);}main(){intn;printf("Entern:");scanf("%d",&n);printf("Theresult:%d\n\n",fun(n));}标准答案:(1)错误:fun(intn);正确:fun(intn)(2)错误:if(n=1)正确:if(n==1)知识点解析:错误1:该行是函数的首部,不是一条语句,因此不能以分号结束。错误2:if垢面应该紧跟一个条件判断表达式,若写成“if(n=1)”,则说明该表达式的值永远为真,也就是说这个条件永远成立,没有递归执行。三、程序设计题(本题共1题,每题1.0分,共1分。)3、请编写函数fun(),它的功能是求Fibonacci数列中小于t的最大的一个数,结果由函数返回。其中Fibonacci数列F(n)的定义为F(0)=0,F(1)=1F(n)=F(n-1)+F(n-2)例如:t=1000时,函数值为987。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include<conio.h>#include<math.h>#include<stdio.h>intfun(intt){}main(){intn;clrscr();n=1000;printf("n=%d,f=%d\n",n,fun(n));}标准答案:intfun(intt){inta=1,b=1,c=0,i;/*a代表第n-2项,b代表第n-1项,c代表第n项*//*如果求得的数。比指定比较的数小,则计算下一个Fibonacci数,对a,b得新置数*/do{c=a+b;a=b;b=c;}while(c<t);/*如果求得的数c比指定比较的数大时,退出循环*/c=a;/*此时数c的前一个Fibonacci数为小于指定比较的数的最大的数*/returnc;}知识点解析:根据所给数列定义不难发现,该数列最终的结果是由两个数列之和组成,所以可以在循环内部始终把c看成是前两项之和(即第n项),而a始终代表第n-2项,b始终代表第n-1项(通过不断地重新赋值来实现)。应注意,退出循环时得到的数c是大于指定比较的数的最小的数,而它的前一个数就是小于指定比较的数的最大的数。国家二级(C语言)机试模拟试卷第6套一、程序填空题(本题共1题,每题1.0分,共1分。)1、给定程序中,函数fun的功能是用函数指针指向要调用的函数,并进行调用。规定在【2】处使fa指向函数n,在【3】处使fb指向函数f2。当调用正确时,程序输出:x1=5.000000,x2=3.000000,x1*x1+x1*x2=40.000000请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKI.C中。不得增行或删行,也不得更改程序的结构!#includedoublef1(doublex){returnx*x;}doublef2(doublex,doubley){returnx*y;}doublefun(doublea,doubleb){/**********found**********/【1】(*f)();doubler1,r2;/**********found**********/f=【2】;/*pointfountionf1*/r1=f(a);/**********found**********/f=【3】;/*pointfountionf2*/r2=(*f)(a,b);returnr1+r2;}main(){doublex1=5,x2=3,r;r=fun(x1,x2);printf("\nx1=%f,x2=%f,x1*x1+x1*x2=%f\n",x1,x2,r);}标准答案:doublef1f2知识点解析:第一空:由“f=__2__;/*pointfountionf1*/”和“r1=f(a);”可知f是一个函数的指针,且f指向的函数的返回值为double型,函数的指针的定义方式是:类型标识符(*指针变量名)(),故第一空处的函数的指针的定义为“double”。第二空:“f=__2__;/*pointfountionf1*/”和“r1=f(a);”可知f指向的函数只有一个参数a,因此f指向f1函数,即第二空处为“f1”。第三空:“f=__3__;/*pointfountionf2*/”和“r2=(*f)(a,b);”,f指向的函数有两个参数,因此f是指向f2函数,故第三空处应为“f2”。二、程序修改题(本题共1题,每题1.0分,共1分。)2、给定程序MODll.C中函数fun的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基本算法是:先对字符串中的头两个元素进行排序。然后把第三个字符插入到前两个字符中,插入后前三个字符依然有序;再把第四个字符插入到前三个字符中……。待排序的字符串已在主函数中赋予。请改正程序中的错误,使它能得出正确结果。注意:不要改动mmn函数,不得增行或删行,也不得更改程序的结构。#include#include#defineN80voidinsert(char*aa){inti,j,n;charch;/**********found**********/n=strlem(aa);for(i=1;i=0)&&(ch标准答案:n=strlen(aa);ch=aa[i];知识点解析:(1)strlen是求字符串长度的函数,函数调用的形式是:strlen(字符串地址),故第一标识下应改成“n=strlen(aa);”。(2)程序调试时会提示“c=aa[i];”中的c未定义,insert函数中定义的是变量ch作为存放aa字符串中字符的临时变量,然后对其与其他字符进行比较。所以将“c=aa[i];”改为“ch=aa[i];”。三、程序设计题(本题共1题,每题1.0分,共1分。)3、假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:删除字符串中所有的*号。在编写函数时,不得使用C语言提供的字符串函数。例如,字符串中的内容为:****A*BC*DEF*G********,删除后,字符串中的内容应当是:ABCDEFG。注意:部分源程序在文件PROGl.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#includevoidfun(char*a){}main(){chars[81];voidNONO();printf(”Enterastring:\n”);gets(s);fun(s);printf(”Thestringafterdeleted:\n”);puts(s);NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;inti;chars[81];in=fopen(”in.daL”,”r”);out=fopen(”out.dat”,”w”);for(i=0;i<10;i++){fscanf(in,”%s”,s);fun(s);fprintf(out,”%s\n”,s);}fciose(in);fclose(out);}标准答案:{intj=0;char*p=a;while(*p){if(*p!=’*’)a[j++]=*p;p++;}a[j]=’\0’;}知识点解析:(1)首先利用工作指针指向字符串,当指针不指向串尾时,就对字符串进行循环判断。(2)在循环中利用if判断表达式,判断是字符是否为“*”,如果不是“*”将其拷贝到字符串,否则跳过“*”字符。(3)所有字符处理完后,记得在新串s的末尾加上结束符“’\0’”。国家二级(C语言)机试模拟试卷第7套一、程序填空题(本题共1题,每题1.0分,共1分。)1、甲乙丙丁四人同时开始放鞭炮,甲每隔t1秒放一次,乙每隔t2秒放一次,丙每隔t3秒放一次,丁每隔t4秒放一次,每人各放n次。函数fun的功能是根据形参提供的值,求出总共听到多少次鞭炮声作为函数值返回。注意,当几个鞭炮同时炸响,只算一次响声,第一次响声是在第0秒。例如,若t1=7,t2=5,t3=6,t4=4,n=10,则总共可听到28次鞭炮声。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKl.C中。不得增行或删行,也不得更改程序的结构!#include/*********************found**********************/#defineOK(i,t,n)((【1】%t==0)&&(i/t标准答案:(1)i(2)t++(3)count知识点解析:第一空:由“if(OK(t,t1,n)||OK(t,t2,n)||OK(t,t3,n)||OK(t,t4,n))coullt++;"可知count计数听到的鞭炮声,在满足if条件时,计数加1。t时刻,至少有一个人放了一个鞭炮才能听得到声音,故t%t1==0、t%t2==0、t%t3==0、t%t4==0这四个当中至少一个成立,四者是或的关系。第一个标识下是宏OK的定义,由前面的分析可知。OK宏的作用就是判断t%ti(i等于1、2、3和4)是否等于0且i/t二、程序修改题(本题共1题,每题1.0分,共1分。)2、给定程序MODll.C中函数fun的功能是:根据整型形参m的值,计算如下公式的值。例如,若m中的值为:5,则应输出:0.536389。请改正程序中的错误,使它能得出正确的结果。注意;不要改动main函数,不得增行或删行,也不得更改程序的结构!#includedoublefun(intm){doubley=1.0;inti;/**************found****************/for(i=2;i标准答案:(1)for(i=2;i<=m;i++)(2)y一=1.0/(i*i);知识点解析:(1)第一个标识下面,“for(i=2;i三、程序设计题(本题共1题,每题1.0分,共1分。)3、某学生的记录有学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。请编写函数fun,它的功能是:求出该学生的平均分放在记录的ave成员中。例如,学生的成绩是:85.5,76,69.5,85,91,72,64.5,87.5,他的平均分应当是:78.875。注意:部分源程序在文件PROGl.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun部位中填入你编写的若干语句。#include#defineN8typedefstruct{charnum[10];doubles[N];doubleave;}STREC;voidfun(STREC*a){}main(){STRECs={"GA005”,85.5,76,69.5,85,91,72,64.5,87.5};Int1;voidNONO();fun(&s);printf{”The%s’sstudentdata:\n”,s.num);for(i=0;i标准答案:{inti;for(i=0;iave=a->ave+a->s[i];a->ave/=N;}知识点解析:(1)本题中给出的题干中定义了结构体变量STREC用来存储学生的记录。(2)利用for循环求得总分,然后求得平均分,最后将平均分放入记录ave中。其中,结构体成员的引用形式可以为a.ave、a.s[i]等。国家二级(C语言)机试模拟试卷第8套一、程序填空题(本题共1题,每题1.0分,共1分。)1、给定程序中,函数fun的功能是:在形参ss所指字符串数组中,删除所有串长超过k的字符串,函数返回所剩字符串的个数。ss所指字符串数组中共有N个字符串,且串长小于M。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKl.C中。不得增行或删行,也不得更改程序的结构!#include#inolucte#defitieN5#defineM10intfun(char(*ss)[M],intk){inti,j=0,len;/******************found*******************/for(i=0;i<【1】;i++){len=strlen(ss[i]);/******************found*******************/if(1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论