




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、03程序填空题:给定程序中,函数fun的功能是:计算出带有头结点的单向链表中各结点数据域之和作为函数值返回。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!#include #include #define N 8typedef struct list int data; struct list *next; SLIST;SLIST *creatlist(int *);void outlist(SLIST *);int fun( SLIST *h) SLIST *p; int
2、s=0; p=h-next; while(p) /*found*/ s+= p-_1_;/*found*/ p=p-_2_; return s;main() SLIST *head; int aN=12,87,45,32,91,16,20,48; head=creatlist(a); outlist(head);/*found*/ printf(nsum=%dn, fun(_3_);SLIST *creatlist(int a) SLIST *h,*p,*q; int i; h=p=(SLIST *)malloc(sizeof(SLIST); for(i=0; idata=ai; p-next
3、=q; p=q; p-next=0; return h;void outlist(SLIST *h) SLIST *p; p=h-next; if (p=NULL) printf(The list is NULL!n); else printf(nHead ); do printf(-%d, p-data); p=p-next; while(p!=NULL); printf(-Endn); 本题考查的是链表。 在函数fun中,通过指针p遍历链表的各个结点,直到其为NULL,如果其不为NULL,则将其data域的值累加到s上去,并将p指向其后续结点,故第一空应为data,第二空为next;第三空
4、的目的是调用函数fun,由于函数fun的形参为指向SLIST类型的指针,而head又是整个链表的头指针,故第三空应填head。程序修改题:给定程序modi.c中,函数fun的功能是:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每五个元素求一个平均值,并将这些值依次存放在w所指的数组中,若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。 例如,s所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!本题着重考察考生对C语言中一些简单算法的掌握
5、情况。#include #define SIZE 20fun(double *s,double *w) int k,i; double sum; for (k=2,i=0;iSIZE;i+) si=k; k+=2; /*found*/ sun=0.0; for(k=0,i=0;iSIZE;i+) sum+=si;/*found*/ if (i+1%5=0) wk=sum/5;sum=0;k+; return k;main() double aSIZE,bSIZE/5; int i,k; k=fun(a,b); printf(The original data:n); for (i=0;iSIZ
6、E;i+) if(i%5=0) printf(n); printf(%4.0f,ai); printf(nnThe result:n); for(i=0;ik;i+) printf(%6.2f ,bi); printf(nn); 本题中的第一个错误:在函数中,未对变量sun进行定义,由程序可知,函数通过变量sum来累计和值,需先为sum赋初值0,所以程序中语句sun=0.0;应改为sum=0.0;或相同作用的语句。 本题中的第二个错误:要注意算术运算符的优先级:*、/%+、-,由题意可知,条件语句是用来判断元素的个数是不是5的倍数,所以程序中语句if (i+1%5=0)应改为if (i+1)%
7、5=0)或相同作用的语句。 本评析仅作参考。程序设计题请编写一个函数fun,它的功能是:比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。 例如,输入beijing shanghai (为回车键) 函数将返回shanghai。 注意:部分源程序存在文件prog.c中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include char *fun(char *s,char *t)void NONO ( )/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件
8、。 */ FILE *fp, *wf ; int i ; char a20, b20 ; fp = fopen(bc03.in,r) ; if(fp = NULL) printf(数据文件bc03.in不存在!) ; return ; wf = fopen(bc03.out,w) ; for(i = 0 ; i second) /*返回较长的字符串*/ return s; else return t; 02程序填空题:人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中,且编号唯一。函数fun的功能是:找出指定编号人员的数据,作为函数值返回,由主函数输出,若指
9、定编号不存在,返回数据中的编号为空串。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!#include #include #define N 8typedef struct char num10; int year,month,day ;STU;/*found*/_1_ fun(STU *std, char *num) int i; STU a=,9999,99,99; for (i=0; iN; i+)/*found*/ if( strcmp(_2_,num)=0 )/*fo
10、und*/ return (_3_); return a;main() STU stdN= 111111,1984,2,15,222222,1983,9,21,333333,1984,9,1, 444444,1983,7,15,555555,1984,9,28,666666,1983,11,15, 777777,1983,6,22,888888,1984,8,19; STU p; char n10=666666; p=fun(std,n); if(p.num0=0) printf(nNot found !n); else printf(nSucceed !n ); printf(%s %d-%
11、d-%dn,p.num,p.year,p.month,p.day); 本题考查的是结构体。 由于fun函数返回的是一个STU型的变量,故第一空应填STU或其等效形式;在本题中是通过strcmp函数来比较两个字符串是否相等的,要比较std数组中第i个元素的num值是否与指定的num相等,可以用strcmp(stdi.num,num)来完成,故第二空应填stdi.num;最后,如果比较结果相等,则直接返回stdi,故第三空应填stdi或其等效形式。程序修改题:给定程序modi.c中,函数fun的功能是:从s所指字符串中,找出t所指子串的个数作为函数值返回。 例如,当s所指字符串中的内容为:abcd
12、abfab,t所指字符串的内容为:ab,则函数返回整数3。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!本题着重考察C语言指针的用法及语法。#include #include #include #include int fun(char *s,char *t) int n; char *p,*r; n=0; while (*s) p=s;r=t; while (*r)/*found*/ if(*r=*p) r+;p+ else break;/*found*/ if(r=0) n+; s+; return n;main() char
13、 s100,t100; int m; system(cls); printf(nPlease enter string S:);scanf(%s,s); printf(nPlease enter substring t:);scanf(%s,t); m=fun(s,t); printf(nThe result is: m=%dn,m); C语言中,分号是语句的组成部分,各语句间以分号作为分隔。源程序if ( *r = *p ) r+; p+ 应改为if(*r=*p)r+;p+;或相同作用的语句。 在源程序中,r为指向指针的指针变量,它存放的是指针变量的地址,题意中要求对这个地址所指向的内容进行
14、判断,所以须在地址前加上*,源程序if ( r = 0 )应改为if(*r=0)或相同作用的语句。 本评析仅作参考。程序设计题规定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串最前面连续的*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。 例如,字符串中的内容为:*A*BC*DEF*G*,若n的值为4,删除后,字符串中的内容应当是:*A*BC*DEF*G*;若n的值为8,则字符串中的内容仍为:*A*BC*DEF*G*。n的值在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。 注意:部分源程序存在文件
15、prog.c中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include #include void fun(char *a,int n)void NONO( )/* 请在此函数内打开文件,输入测试数据,调用 fun 函数, 输出数据,关闭文件。 */ char s81; int i,n; FILE *rf,*wf; rf = fopen(b40.in,r); wf = fopen(a40.out, w) ; for (i=0;in) for (k=0;k=0;i-)。 本评析仅作参考。程序设计题请编写一个函数fun,它的功能是:计算n门课程
16、的平均分,计算结果作为函数值返回。 例如:若有5门课程的成绩是:90.5,72,80,61.5,55,则函数的值为:71.80。 注意:部分源程序存在文件prog.c中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 本题的考核点是数组和循环语句的使用。 解题思路:先使用循环语句对数组中的各个元素求和,然后用此和除以数组的元素总个数即得平均值。然后使用return语句将此平均值作为函数的返回值返回。 本评析仅供参考。float fun ( float *a , int n ) int i; float average; double sum=0;
17、 for(i=0;in;i+) sum+=ai; /*对数组中的各个元素求和*/ average=(float)sum/n; /*计算平均值*/ return average; /*返回平均值*/04程序填空题:给定程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的学号、姓名和3门课的成绩。函数fun的功能是将该学生的各科成绩都乘以一个系数a。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!本题考查的是结构体。 本题中,show函数是用来显示tt的学号、姓名及三门课程的
18、成绩,modify是用来对课程成绩进行更改操作的,其传入的参数应为一个STU类型的指针,故第一空应填STU或其等效形式;第二空的目的是修改*ss的各科成绩,即score数组中各个元素的值,故第二空应填scorei;第三空的目的是用来调用modify函数,由于该函数的第一个参数为一个指向STU类型的指针,故第三空应填&std。程序修改题:给定程序modi.c中,函数fun的功能是:读入一个字符串(长度20),将该字符串中的所有字符按ASCII码升序排序后输出。 例如:若输入:edcba,则应输出:abcde。 请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也
19、不得更改程序的结构!本题着重考察考生对C语言中一些简单算法的掌握情况。 本题中的第一个错误:C语言中字符串是以0为结束标志的,字符串中的最后一个字符应为其长度减1,所以程序中语句for(i=strlen(t);i;i-)应改为for(i=strlen(t)-1;i;i-)或相同作用的语句。 本题中的第二个错误:题意中是要求按升序排列,那么当后一个字符小于前一个字符时,便交换位置,反之,不改变,所以程序中语句if(tjtj+1)或相同作用的语句。 本评析仅作参考。程序设计题某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。请编写函数fun,它的功能是:求出该学生
20、的平均分放在记录的ave成员中。请自己定义正确的形参。 例如,学生的成绩是:85.5,76,69.5,85,91,72,64.5,87.5,他的平均分应当是:78.875。 注意:部分源程序存在文件prog.c中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。本题的考核点是计算平均分算法。 解题思路:先统计8门课程的总分数,然后再除8,求学生的平均分。 本评析仅供参考。void fun(STREC *p) int i; double aver=0; /*将平均分赋初值0*/ for (i=0;iN;i+) aver=aver+(*p).si; /
21、*求和*/ (*p).ave=aver/N; /*计算平均值*/05程序填空题:给定程序中,函数fun的功能是:将形参指针所指结构体数组中的三个元素按num成员进行升序排列。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!本题考查的是结构体数组。 由于fun函数的功能是实现形参指针所指结构体数组中的三个元素按num成员进行升序排列,故该函数的参数应该为一个PERSON型的结构体数组,再考虑到该函数中存在未定义的变量std,故第一空应填std或其等效形式;由于在函数中存在语句te
22、mp=std0;可知temp为一个PERSON型的变量,故第二空应填PERSON或其等效形式,并且分析程序不难得知,该变量作为交换时的中间变量;第三空的目的是调用函数fun,由于其参数为一PERSON型的数组变量,故正确的调用方式应为fun(std);,故第三空应填std或其等效形式。程序修改题:给定程序modi.c中,函数fun的功能是:通过某种方式实现两个变量值的交换,规定不允许增加语句和表达式。例如变量a中的值为3,b中的值原为8,程序运行后a中的值为8,b中的值为3。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!首先,我们
23、必须先读懂题中程序的大致意思,这是发现并改正程序中错误的重要前提。 程序中的重要思想如下: 1、本题的主要目的是交换两个变量的值,在这样的任务中,合理的利用中间变量是个清晰明了的好方法; 2、观察题目,可以发现函数fun()的函数声明中有不少玄虚,第一个形参是一个地址,第二个形参是一个整型变量。 本题中的第一个错误发生在函数fun()中的赋值语句中: t = x ; x = y ;,通过前面的分析,我们可以知道,在此变量x代表的是一个地址,所以以上两条赋值语句运算符两端不匹配,应当更正为t=*x;*x=y;,这样才可以进行正常的赋值工作; 本题中的第二个错误发生在函数fun()的返回值产生时:
24、 return(y);,结合程序上下文,可以知道,该函数的返回值实际上是为了将原来的a值赋给b,而看看函数fun(),y(即原来的b值)始终未动,而原来的a值现在已经存放到了中间变量t中,所以,这时我们返回的应当是t的值,故更改为return(t);。程序设计题学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把高于等于平均分的学生数据放在h所指的数组中,高于等于平均分的学生人数通过形参传回,平均分通过函数值返回。 注意:部分源程序存在文件prog.c中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干
25、语句。 本题的考核点是统计高于等于平均分的学生数据和人数的算法。 解题思路:先求出平均分,然后再将学生成绩与平均分作比较,将高于等于平均分的学生数据放在另一数组中,并统计人数的个数。 本评析仅供参考。double fun(STREC *a,STREC *b,int *n) int i,j; double aver=0; *n=0; for (i=0;iN;i+) aver=aver+ai.s; /*求和*/ aver=aver/N; /*计算平均分*/ for (i=0;i=aver) b*n.s=ai.s; /*将高于等于平均分的学生数据放在另一数组b中*/ for (j=0;j10;j+)
26、 b*n.numj=ai.numj; *n=*n+1; /*统计高于等于平均分的学生人数*/ return (aver); /*返回平均分*/06程序填空题: 给定程序中,函数fun的功能是:将形参std所指结构体数组中年龄最大者的数据作为函数值返回,并在main函数中输出。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!本题考查的是结构体。 在fun函数中,首先将age字段最大的STD变量记为std0,然后通过循环语句逐个比较stdi.age与max.age,如果前者大于后者
27、,则令max=stdi,故第一空应填std0,第二空应填stdi.age。在主函数中要输出max中的name字段与age字段,故第三空应为。程序修改题:给定程序modi.c中,函数fun的功能是:计算正整数num的各位上的数字之积,例如,若输入:252,则输出应该是:20。若输入:202,则输出应该是:0。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!本题的主要考核点是变量的赋值与初始化。 解题思路:使用循环语句依次将正整数各位的数值取出并累积起来。本题中用到了中间变量k作为累积变量,此变量必须要初始化或赋以初始值
28、,此外赋值运算符中不存在=符号,应将其改为/=运算符或其他赋值方式。 本评析只作参考。程序设计题学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:按分数的高低排列学生的记录,高分在前。 注意:部分源程序存在文件prog.c中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。本题的考核点是按分数的高低排列学生记录的算法。 解题思路:通过选择法或其它的方法对学生记录按分数从高到低进行排序。 本评析仅供参考。void fun(STREC a)int i,j,p,t,k; char h; for (i=
29、0;iN;i+) p=i; for (j=i+1;jN;j+) /*按分数从高到低进行排序*/ if (ap.saj.s) p=j; if (p!=i) t=ap.s;ap.s=ai.s;ai.s=t; for (k=0;k10;k+) h=ap.numk; ap.numk=ai.numk; ai.numk=h; 07程序填空题:给定程序中,函数fun的功能是:对形参ss所指字符串数组中的M个字符串按长度由短到长进行排序。ss所指字符串数组中共有M个字符串,且串长N。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。
30、不得增行或删行,也不得更改程序的结构!本题考查的是字符串长度的比较。 由题面可知,本题采用了选择排序的排序算法,根据该排序算法的思想可知,第一空应填i+1;在每轮比较前,利用临时变量k记录下字符串长度最短的元素的下标,如果当前字符串(下标为j)的长度小于字符串ssk的长度,则将下标改为j,故第二空为k=j;最后,如果k!=j,则交换两个字符串,本题中是利用一个临时字符数组与strcpy函数实现交换的,首先将ssi中的内容复制到临时数组t中,然后将ssk的内容复制到ssi中,最后再将t中的内容复制到ssk中,故第三空应填t。程序修改题:给定程序modi.c中,函数fun的功能是:将字符串中的内容
31、按逆序输出,但不改变字符串中的内容。 例如,若字符串为abcd,则应输出:dcba。 请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!本题着重考察考生对C语言中函数的调用、定义和输出语句的掌握情况。 本题中的第一个错误:在函数中传递的是一字符串给fun函数,fun函数定义中应定义一字符型指针指向字符串,而不是一个简单的字符型变量,所以程序中语句fun(char a)应改为fun(char *a) 本题中的第二个错误:printf语句的格式控制与输出项之间应以分号分隔,所以程序中语句printf(%c *a);应改为printf(%c,*
32、a); 本评析仅作参考。程序设计题函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的十位和千位上。 例如,当a=45,b=12。调用该函数后,c=2415。 注意:部分源程序存在文件prog.c中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。本题的考核点是求取整数相应位上的数值的算法。 解题思路:可用整除和求余的运算求取整数各位上的数值。方法是整除相应位上的位权值,再对其求余,余数即为相应位上的数值。 本评析仅供参考。void f
33、un(int a, int b, long *c) int a_up,a_low,b_up,b_low; a_up=a/10; /*求正整数a的十位数*/ a_low=a%10; /*求正整数a的个位数*/ b_up=b/10; /*求正整数b的十位数*/ b_low=b%10; /*求正整数b的个位数*/ *c=b_low*1000+a_up*100+b_up*10+a_low; /*将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的十位和千位上*/08程序填空题:给定程序中,函数fun的功能是:求出形参ss所指字符串数组中最长字符串的长度,其余字符串左边用字符
34、*补齐,使其与最长的字符串等长。字符串数组中共有M个字符串,且串长N。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!本题考查的是字符串中字符的插入。 在fun函数中,第一个for循环的作用是求出所有字符串中,长度最长的字符串的长度n,并记下此字符串在数组中的下标k,故第一空应填k。在第二个for循环中,如果当前字符串不是最长字符串,则计算其长度len,并将从下标0到len的字符向右移动n-len位,故第二空为len;最后,再通过一个for循环语句在当前字符串前面补充len-n
35、个*,故第三空应为ssij或其等效形式。程序修改题:给定程序modi.c中,函数fun的功能是:计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。其中x和y的值不等,z和y的值不等。 例如,当x的值为9、y的值为11、z的值为15时,函数值为-3.50。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!本题着重考察考生对C语言中自定义语句以及基本语法的掌握情况。 本题中的第一个错误:如果按照原程序中的语句调用自定义语句,那么value=a+b/a-b+c+b/c-b,/运算高于+运算,很显然不符合题意,a+
36、b应作为一个整体传递给m,需为其加括号,所以程序中语句value=FU(a+b,a-b)+FU(c+b,c-b);应改为value=FU(a+b),(a-b)+FU(c+b),(c-b);或相同作用的语句。 本题中的第二个错误:C语言中,命令单词应为小写,所以程序中语句Return(Value);应改为return(value);或相同作用的语句。 本评析仅作参考。程序设计题学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:函数返回指定学号的学生数据,指定的学号在主函数中输入。若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为
37、函数值返回。(用于字符串比较的函数是strcmp)。 注意:部分源程序存在文件prog.c中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 本题的考核点是查找指定学生数据的算法。 解题思路:通过字符串比较函数将指定的学号与每一个学生的学号进行比较,若相同,则返回指定的学生数据;若没有一个相同的,则给学号置空串,成绩置-1并返回。 本评析仅供参考。STREC fun(STREC *a,char *b) int i,f=0; STREC p; /*定义结构体变量*/ p=a0; for (i=0;iN;i+) if (strcmp(ai.num,b
38、)=0) p=ai;f=1; /*通过字符串比较函数将指定的学号与每一个学生的学号进行比较,若相同,则返回指定的学生数据*/ if (f=0) /*判断是否找到指定学号*/ p.num0=0; /*若没找到指定学号,在结构体变量中给学号置空串*/ p.s=-1; /*若没找到指定学号,在结构体变量中给成绩置-1*/ return p; /*返回学号和成绩*/09程序填空题:给定程序中,函数fun的功能是:在带有头结点的单向链表中,查找数据域中值为ch的结点。找到后通过函数值返回该结点在链表中所处的顺序号;若不存在值为ch的结点,函数返回0值。 请在程序的下划线处填入正确的内容并把下划线删除,使
39、程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!#include #include #define N 8typedef struct list int data; struct list *next; SLIST;SLIST *creatlist(char *);void outlist(SLIST *);int fun( SLIST *h, char ch) SLIST *p; int n=0; p=h-next;/*found*/ while(p!=_1_) n+;/*found*/ if (p-data=ch) retu
40、rn _2_; else p=p-next; return 0;main() SLIST *head; int k; char ch; char aN=m,p,g,a,w,x,r,d; head=creatlist(a); outlist(head); printf(Enter a letter:); scanf(%c,&ch);/*found*/ k=fun(_3_); if (k=0) printf(nNot found!n); else printf(The sequence number is : %dn,k);SLIST *creatlist(char *a) SLIST *h,*p
41、,*q; int i; h=p=(SLIST *)malloc(sizeof(SLIST); for(i=0; idata=ai; p-next=q; p=q; p-next=0; return h;void outlist(SLIST *h) SLIST *p; p=h-next; if (p=NULL) printf(nThe list is NULL!n); else printf(nHead); do printf(-%c,p-data); p=p-next; while(p!=NULL); printf(-Endn); 本题考查的是链表。 在函数fun中,首先将指针p指向链表的头结点
42、,如果该结点不空,则对记数器n进行自加,并比较当前结点的data值是否为ch,如果是,则直接返回n,否则继续比较p的后续结点,直到p=NULL结束,故第一空应填NULL,第二空应填n;第三空处的语句是调用fun函数的,由于fun函数的第一个参数为一个指向SLIST的指针,第二个形参为待搜索字符,而head是整个链表的头指针,故第三处应填head,ch。程序修改题:给定程序modi.c中,函数fun的功能是:给定n个实数,输出平均值,并统计在平均值以上(含平均值)的实际个数。 例如,n=8时输入:193.199、195.673、195.757、196.051、196.092、196.596、19
43、6.579、196.763所得平均值为:195.838745,在平均值以上的实数个数应为:5请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include #include #include int fun(float x,int n)/*found*/ int j,c=0;float xa=0.0; for(j=0;jn;j+) xa+=xj/n; printf(ave=%fn,xa); for(j=0;jxa) c+; return c;main()float x100=193.199f,195.673f,195.757f,196
44、.051f,196.092f,196.596f,196.579f,196.763f; system(cls); printf(%dn,fun(x,8);本题着重考察考生对C语言基本语法以及比较运算符的掌握情况。 本题中的第一个错误:在C语言中,应成对出现,所以程序中的语句int j,c=0;float xa=0.0;应改为 int j,c=0;float xa=0.0;或相同作用的语句; 本题中的第二个错误:在C语言中,判断大于或等于的运算符应为=,所以程序中的语句if(xj=xa)应改为if (xj=xa)或相同作用的语句。本评析仅作参考。程序设计题:假定输入的字符串中只包含字母和*号。请编
45、写函数fun,它的功能是:除了字符串前导和尾部的*号之外,将串中其它*号全部删除。形参h已指向字符串中第一个字母,形参p已指向字符串中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。 例如,字符串中的内容为:*A*BC*DEF*G*,删除后,字符串中的内容应当是:*ABCDEFG*。在编写函数时,不得使用C语言提供的字符串函数。 注意:部分源程序存在文件prog.c中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include #include void fun(char *a,char *h,char *p)void NONO(
46、)/* 请在此函数内打开文件,输入测试数据,调用 fun 函数, 输出数据,关闭文件。 */ char s81,*t,*f; int i; FILE *rf,*wf; rf = fopen(b37.in,r); wf = fopen(a37.out, w) ; for (i=0;i4;i+) fscanf(rf,%s,s); t=f=s; while(*t) t+; t-; while (*t=*) t-; while (*f=*) f+; fun(s,f,t); fprintf(wf,%sn,s); fclose(rf); fclose(wf) ; main() char s81,*t,*f
47、; printf(Enter a string:n);gets(s); t=f=s; while(*t) t+; t-; while (*t=*) t-; while (*f=*) f+; fun(s,f,t); printf(The string after deleted:n);puts(s); NONO(); 本题的考核点是删除字符串中字符的算法。 解题思路:先将原串中从首字符开始的连续*放到一字符串数组中,再将从第一个非*字符开始到串尾连续*之前的非*字符追加其后,接着将串尾的连续*后追加,最后将新串中的字符放到原串中覆盖原串。 本评析仅供参考。void fun(char *a,cha
48、r *h,char *p)char b81,*x; int i=0,j=0; x=a; while (xh) bj=*x;x+;j+; while (h=p) if (*h!=*) bj=*h;j+;h+; else h+; p+; while (*p) bj=*p;j+;p+; bj=0;j=0; while (bj) ai=bj;i+;j+; ai=0;10程序填空题:给定程序中已建立一个带有头结点的单向链表,链表中的各结点按结点数据域中的数据从小到大顺序链接。函数fun的功能是:把形参x的值放入一个新结点并插入到链表中,插入后各结点仍保持从小到大顺序排列。 请在程序的下划线处填入正确的内
49、容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!#include #define N 20void fun( int *a) int i, x, n=0; x=rand()%20;/*found*/ while (n_1_) for(i=0; in; i+ )/*found*/ if( x=ai ) _2_;/*found*/ if( i=_3_) an=x; n+; x=rand()%20; main() int xN=0 ,i; fun( x ); printf(The result : n); for(
50、 i=0; iN; i+ ) printf(%4d,xi); if(i+1)%5=0)printf(n); printf(nn);本题的考核点是链表中的插入操作。 对链表的插入是指将一个结点插入到一个已有的链表中。为了能做到正确插入,必须解决两个问题:1、怎样找到插入的位置;2、怎样实现插入。 题中第一个空填x:将要插入的数据放到一个临时开辟的存储单元中。 题中第二个空填p:此语句将q指针指向比要插入的数据小的数据的结点。 题中第三个空填s:此语句将q指针指向其下一个结点。 本评析仅供参考。程序修改题:N个有序整数数列已放在一维数组中,给定程序modi.c中,函数fun的功能是:利用折半查找算
51、法查找整数m在数组中的位置。若找到,返回其下标值;反之,返回-1。折半查找的基本算法是:每次查找前先确定数组中待查的范围:low和high(lowhigh,查找结束。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!本题着重考察考生对C语言中一些简单算法的掌握情况。 本题中的第一个错误:由题意可知,fun函数是有返回值的,所以不能用void来定义函数,应将程序中的语句void fun(int a,int m)改为fun(int a,int m)或相同作用的语句。 本题中的第二个错误:由题意可知,当m大于中间值时,下一次的查找范围放在中
52、间之后的元素中;当m小于中间值时,下一次的查找范围放在中间之前的元素中;当m等于中间值时,则返回值,所以程序中语句else if(m=amid)应改为else if(mamid)或相同作用的语句。 本评析仅作参考。程序设计题 学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把指定分数范围内的学生数据放在h所指的数组中,分数范围内的学生人数由函数值返回。 例如,输入的分数是60 69,则应当把分数在60到69的学生数据进行输出,包含60分和69分的学生数据。主函数中将把60放在low中,把69放在heigh中。 注意:部分源程序存在文件pr
53、og.c中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。本题的考核点是查找指定范围内的学生数据的算法。 解题思路:将所有学生的分数与指定范围内的分数进行比较,若满足条件就将其放在另一数组中,并返回该范围内的学生人数。 本评析仅供参考。int fun(STREC *a,STREC *b,int l,int h) int i,j=0,k,f=0; for (i=0;i=l) & (ai.s=h) /*判断该学生的分数是否在范围之内*/ for (k=0;k10;k+) bj.numk=ai.numk; bj.s=ai.s; /*满足条件的学生的分数放
54、在另一数组b中*/ j+; f+; /*计算满足条件的学生人数*/ return(f); /*返回学生人数*/11(02)程序填空题:给定程序中,函数fun的功能是:统计出带有头结点的单向链表中结点的个数,存放在形参n所指的存储单元中。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! 本题考查的是链表。 要统计以指针h开始的链表中结点的个数,只要从头依次遍历各个结点,并累加次数,直到所遍历结点为NULL。由于在初始情况下结点的个数应为0,故第一空应填*n;在while循环中,判
55、断p是否为NULL,如果是,则结束循环,否测*n自加1,且将p指向其后续结点,故第二空应填next;第三空是一个调用fun函数的语句,由fun的定义可知,该函数的第一个参数为一个指向SLIST的指针,而head是整个链表的头指针,故第三空应填head。程序修改题:给定程序modi.c中,fun函数的功能是:将n个无序整数从小到大排序。请改正程序中的错误,使它能得出正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!本题着重考察考生对C语言中一些简单算法的掌握情况。 本题中的第一个错误:程序中外循环的循环次数少了一次,导致数列不能正确排序,所以应将程序中的语句for(i
56、=j+1;in-1;i+)改为for(i=j+1;i=eps) /*通过循环语句判断公式中某项是否在精度范围之内*/ pi+=one; n+; up=up*n; down=down*(2*n+1); one=(double)up/(double)down; return pi*2;12程序填空题给定程序的功能是:调用函数fun将指定源文件中的内容复制到指定的目标文件中,复制成功时函数返回值为1,失败时返回值为0。在复制的过程中,把复制的内容输出到终端屏幕。主函数中源文件名放在变量sfname中,目标文件名放在变量tfname中。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的
57、结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!本题的考核点是文件的读写函数等。 题中第一个空填r:r是文件的使用方式之一,其含义是为输入打开一个文件。 题中第二个空填fs:此语句是设置循环退出条件,即判断是否到文件末尾。 题中第三个空填ft:fputc函数功能是把一个字符写到磁盘文件上去。其一般调用形式为: fputc(ch,fp); 其中ch是要输出的字符,它可以是一个字符常量,也可以是一个字符变量。fp是文件指针变量。在本题中根据定义语句FILE *fs,*ft;可知,ft是文件指针变量。 本评析仅作参考。程序修改题给定程序modi.c
58、中函数fun的功能是:用递归算法计算斐波拉契数列中第n项的值,从第1项起,斐波拉契级数序列为:1、1、2、3、5、8、13、21、 例如,若给n输入7,该项的斐波拉契级数值为:13。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!本题着重考察考生对C语言中基本语法的掌握情况。 本题中的第一个错误:switch (表达式) 后不应有分号,所以程序中语句switch(g);应改为switch(g) 本题中的第二个错误:由switch的语句格式可知,case 1与case 2之间应以冒号分隔,所以程序中语句case 1;case 2:re
59、turn 1;应改为case 1:case 2:return 1; 本评析仅作参考。程序设计题N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:求出平均分,由函数值返回。 例如,若学生的成绩是:85,76,69,85,91,72,64,87;则平均分应当是:78.625。 注意:部分源程序存在文件prog.c中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。本题的考核点是求平均值算法。 解题思路:从链表首结点开始,累计成绩之和,再除以学生人数,得出平均值并返回。double fun(STRE
60、C *h) STREC *p; double aver=0; p=h-next; while (p!=0) aver=aver+p-s; /*从链表首结点开始,累计成绩之和*/ p=p-next; /*p后移一个结点*/ aver=aver/N; /*求成绩的平均值aver*/ return aver; /*返回结果*/13程序填空题给定程序中,函数fun的功能是:将自然数110以及它们的平方根写到名为myfile3.txt的文本文件中,然后再顺序读出显示在屏幕上。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 吊车协议过户合同
- 公转私合同协议
- 推广协议居间合同
- 招标项目合同解除协议书
- 大学校庆赞助协议合同
- 雅居乐物业服务协议合同
- 装修合同简易协议
- 厨师雇佣合同协议
- 监控摄像头维修协议合同
- 鱼池合同转让协议
- (一模)2025年深圳市高三年级第一次调研考试 政治试卷(含答案)
- 2025年成都港汇人力资源管理限公司面向社会公开招聘国企业工作人员高频重点模拟试卷提升(共500题附带答案详解)
- GB/T 45159.2-2024机械振动与冲击黏弹性材料动态力学性能的表征第2部分:共振法
- 医疗器械售后服务与不良事件处理流程
- 网络化电磁阀故障诊断-洞察分析
- 甲午中日战争(课件)
- 2023年高考化学试卷(河北)(解析卷)
- 基于单片机的步进电机控制系统的设计【毕业论文】
- 【MOOC】软件安全之恶意代码机理与防护-武汉大学 中国大学慕课MOOC答案
- 上门输液免责协议书
- 石油钻井三证考试题库单选题100道及答案解析
评论
0/150
提交评论