国二题库20110325.doc_第1页
国二题库20110325.doc_第2页
国二题库20110325.doc_第3页
国二题库20110325.doc_第4页
国二题库20110325.doc_第5页
已阅读5页,还剩320页未读 继续免费阅读

下载本文档

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

文档简介

1给定程序中,函数fun的功能是:在带有头结点的单向链表中,查找数据域中值为ch的结点。找到后通过函数值返回该结点在链表中所处的顺序号;若不存在值为ch的结点,函数返回0值。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的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!=0) n+;/*found*/ if (p-data=ch) return n; 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(head,ch); if (k=0) printf(nNot found!n); else printf(The sequence number is : %dn,k);SLIST *creatlist(char *a) SLIST *h,*p,*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); 给定程序modi.c中,函数fun的功能是:给定n个实数,输出平均值,并统计在平均值以上(含平均值)的实际个数。 例如,n=8时输入:193.199、195.673、195.757、196.051、196.092、196.596、196.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;j=xa) c+; return c;main()float x100=193.199f,195.673f,195.757f,196.051f,196.092f,196.596f,196.579f,196.763f; system(cls); printf(%dn,fun(x,8); 给定程序prog.c中,函数fun的功能是:给定n个实数,输出平均值,并统计在平均值以上(含平均值)的实际个数。 例如,n=8时输入:193.199、195.673、195.757、196.051、196.092、196.596、196.579、196.763所得平均值为:195.838745,在平均值以上的实数个数应为:5 请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include #include void fun(char *a,char *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;void NONO( )/* 请在此函数内打开文件,输入测试数据,调用 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; 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();2 给定程序中,函数fun的功能是:统计出带有头结点的单向链表中结点的个数,存放在形参n所指的存储单元中。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!#include #include #define N 8typedef struct list int data; struct list *next; SLIST;SLIST *creatlist(int *a);void outlist(SLIST *);void fun( SLIST *h, int *n) SLIST *p;/*found*/ (*n)=0; p=h-next; while(p) (*n)+;/*found*/ p=p-next; main() SLIST *head; int aN=12,87,45,32,91,16,20,48, num; head=creatlist(a); outlist(head);/*found*/ fun(head, &num); printf(nnumber=%dn,num);SLIST *creatlist(int a) SLIST *h,*p,*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(The list is NULL!n); else printf(nHead ); do printf(-%d,p-data); p=p-next; while(p!=NULL); printf(-Endn); 给定程序modi.c中,fun函数的功能是:将n个无序整数从小到大排序。请改正程序中的错误,使它能得出正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include #include #include #include fun(int n,int *a)int i,j,p,t; for (j=0;jn-1;j+) p=j;/*found*/ for (i=j+1;iai)/*found*/ p=i; if (p!=j) t=aj;aj=ap;ap=t; putarr(int n,int *z)int i; for (i=1;i=n;i+,z+) printf(%4d,*z); if (!(i%10) printf(n); printf(n);main() int aa20=9,3,0,4,1,2,5,6,8,10,7,n=11; system(cls); printf(nnBefore sorting %d numbers:n,n);putarr(n,aa); fun(n,aa); printf(nAfter sorting %d numbers:n,n);putarr(n,aa);请编写一个函数fun,它的功能是:根据以下公式求的值(要求满足精度0.0005, 即某项小于0.0005时停止迭代): 程序运行后,如果输入精度0.0005,则程序输出为3.140578。 注意:部分源程序存在文件prog.c中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。/*本答案只作参考。*/#include #include double fun ( double eps) int n=0; double down=1,up=1; double one ,pi=0; one = (double)up/(double)down; while(one=eps) pi+=one; n+; up=up*n; down=down*(2*n+1); one=(double)up/(double)down; return pi*2;void NONO ( )/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf ; int i ; double x ; fp = fopen(bc04.in,r) ; if(fp = NULL) printf(数据文件bc04.in不存在!) ; return ; wf = fopen(bc04.out,w) ; for(i = 0 ; i 10 ; i+) fscanf(fp, %lf, &x) ; fprintf(wf, %lfn, fun(x) ; fclose(fp) ; fclose(wf) ;main( ) double x; printf(Input eps:) ; scanf(%lf,&x); printf(neps = %lf, PI=%lfn, x, fun(x); NONO();3 给定程序中,函数fun的功能是:计算出带有头结点的单向链表中各结点数据域之和作为函数值返回。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。#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 s=0; p=h-next; while(p) /*found*/ s+= p-data;/*found*/ p=p-next; 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(head);SLIST *creatlist(int a) SLIST *h,*p,*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(The list is NULL!n); else printf(nHead ); do printf(-%d, p-data); p=p-next; while(p!=NULL); printf(-Endn); 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!给定程序modi.c中,函数fun的功能是:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每五个元素求一个平均值,并将这些值依次存放在w所指的数组中,若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。 例如,s所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。 请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得#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*/ sum=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;iSIZE;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); 请编写一个函数fun,它的功能是:比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。 例如,输入beijing shanghai (为回车键) 函数将返回shanghai。 注意:部分源程序存在文件prog.c中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。/*本答案只作参考。*/#include char *fun ( char *s, char *t) int first=0,second=0; char *p,*q; p=s; q=t; while(*p+!=0) first+; while(*q+!=0) second+; if(first=second) return s; else if (firstsecond) return s; else return t; void NONO ( )/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ 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 10 ; i+) fscanf(fp, %s %s, a, b) ; fprintf(wf, %sn, fun(a, b) ; fclose(fp) ; fclose(wf) ;main( ) char a20,b10; printf(Input 1th string:) ; gets( a); printf(Input 2th string:) ; gets( b); printf(%sn,fun (a, b ); NONO ();4 人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中,且编号唯一。函数fun的功能是:找出指定编号人员的数据,作为函数值返回,由主函数输出,若指定编号不存在,返回数据中的编号为空串。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!#include #include #define N 8typedef struct char num10; int year,month,day ;STU;/*found*/STU fun(STU *std, char *num) int i; STU a=,9999,99,99; for (i=0; iN; i+)/*found*/ if( strcmp(stdi.num,num)=0 )/*found*/ return (stdi); 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-%d-%dn,p.num,p.year,p.month,p.day); 给定程序modi.c中,函数fun的功能是:从s所指字符串中,找出t所指子串的个数作为函数值返回。 例如,当s所指字符串中的内容为:abcdabfab,t所指字符串的内容为:ab,则函数返回整数3。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#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 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); 规定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串最前面连续的*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。 例如,字符串中的内容为:*A*BC*DEF*G*,若n的值为4,删除后,字符串中的内容应当是:*A*BC*DEF*G*;若n的值为8,则字符串中的内容仍为:*A*BC*DEF*G*。n的值在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。 注意:部分源程序存在文件prog.c中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include #include void fun(char *a,int n) char b81; int i=0,j=0,s=0,k; while (ai=*) s+;i+; if (sn) for (k=0;kn;k+) bj=*;j+; while (ai)bj=ai;j+;i+; bj=0; i=0;j=0; while (bj) ai=bj;i+;j+; ai=0; void NONO( )/* 请在此函数内打开文件,输入测试数据,调用 fun 函数, 输出数据,关闭文件。 */ char s81; int i,n; FILE *rf,*wf; rf = fopen(b40.in,r); wf = fopen(a40.out, w) ; for (i=0;i4;i+) fscanf(rf,%s,s); fscanf(rf,%d,&n); fun(s,n); fprintf(wf,%sn,s); fclose(rf); fclose(wf) ; main() char s81;int n; printf(Enter a string:n);gets(s); printf(Enter n: );scanf(%d,&n); fun(s,n); printf(The string after deleted:n);puts(s); NONO();5 人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中。函数fun的功能是:找出指定出生年份的人员,将其数据放在形参k所指的数组中,由主函数输出,同时由函数值返回满足指定条件的人数。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!#include #define N 8typedef struct int num; int year,month,day ;STU;int fun(STU *std, STU *k, int year) int i,n=0; for (i=0; iN; i+)/*found*/ if( stdi.year=year)/*found*/ kn+= stdi;/*found*/ return (n);main() STU stdN= 1,1984,2,15,2,1983,9,21,3,1984,9,1,4,1983,7,15, 5,1985,9,28,6,1982,11,15,7,1982,6,22,8,1984,8,19; STU kN; int i,n,year; printf(Enter a year : ); scanf(%d,&year); n=fun(std,k,year); if(n=0) printf(nNo person was born in %d n,year); else printf(nThese persons were born in %d n,year); for(i=0; in; i+) printf(%d %d-%d-%dn,ki.num,ki.year,ki.month,ki.day); 给定程序modi.c中,函数fun的功能是:将十进制正整数m转换成k(2k9)进制数,并按位输出。 例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include #include #include void fun(int m,int k) int aa20,i; for (i=0;m;i+) /*found*/ aai=m%k; m/=k; /*found*/ for(i=i-1;i=0;i-) printf(%d,aai);main() int b,n; system(cls); printf(nPlease enter a number and a base:n); scanf(%d %d,&n,&b); fun(n,b); printf(n); 请编写一个函数fun,它的功能是:计算n门课程的平均分,计算结果作为函数值返回。 例如:若有5门课程的成绩是:90.5,72,80,61.5,55,则函数的值为:71.80。 注意:部分源程序存在文件prog.c中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include float fun ( float *a , int n ) int i; float average; double sum=0; for(i=0;in;i+) sum+=ai; average=(float)sum/n; return average;void NONO ( )/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf ; int i, j ; float aver, score5 ; fp = fopen(bc01.in,r) ; if(fp = NULL) printf(数据文件bc01.in不存在!) ; return ; wf = fopen(bc01.out,w) ; for(i = 0 ; i 10 ; i+) for(j = 0 ; j 5 ; j+) fscanf(fp,%f,&scorej) ; aver = fun(score, 5) ; fprintf(wf, %5.2fn, aver) ; fclose(fp) ; fclose(wf) ;main() float score30=90.5, 72, 80, 61.5, 55, aver; aver = fun( score, 5 ); printf( nAverage score is: %5.2fn, aver); NONO ( );6 给定程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的学号、姓名和3门课的成绩。函数fun的功能是将该学生的各科成绩都乘以一个系数a。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!#include typedef struct int num; char name9; float score3;STU;void show(STU tt) int i; printf(%d %s : ,tt.num,); for(i=0; i3; i+) printf(%5.1f,tt.scorei); printf(n);/*found*/void modify(STU *ss,float a) int i; for(i=0; iscorei *=a;main( ) STU std= 1,Zhanghua,76.5,78.0,82.0 ; float a; printf(nThe original number and name and scores :n); show(std); printf(nInput a number : ); scanf(%f,&a);/*found*/ modify(&std,a); printf(nA result of modifying :n); show(std); 给定程序modi.c中,函数fun的功能是:读入一个字符串(长度20),将该字符串中的所有字符按ASCII码升序排序后输出。 例如:若输入:edcba,则应输出:abcde。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include #include #include #define M 20void fun(char t) char c; int i,j;/*found*/for(i=strlen(t)-1;i;i-) for(j=0;jtj+1) c=tj; tj=tj+1; tj+1=c; main() char s81; system(cls); printf(nPlease enter a character string:); gets(s); printf(nnBefore sorting:n %s,s); fun(s); printf(nAfter sorting decendingly:n %s,s); 某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。请编写函数fun,它的功能是:求出该学生的平均分放在记录的ave成员中。请自己定义正确的形参。 例如,学生的成绩是:85.5,76,69.5,85,91,72,64.5,87.5,他的平均分应当是:78.875。 注意:部分源程序存在文件prog.c中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include #define N 8typedef struct char num10; double sN; double ave;STREC;void fun(STREC *p) int i; double aver=0; for (i=0;iN;i+) aver=aver+(*p).si; (*p).ave=aver/N;void NONO( )/* 请在此函数内打开文件,输入测试数据,调用 fun 函数, 输出数据,关闭文件。 */ STREC s=GA005,85.5,76,69.5,85,91,72,64.5,87.5; int i; FILE *wf; wf = fopen(a43.out, w) ; fun(&s); fprintf(wf,The %ss student data:n,s.num); for(i=0;iN;i+) fprintf(wf,%4.1fn,s.si); fprintf(wf,ave=%7.3fn,s.ave); fclose(wf) ;main() STREC s=GA005,85.5,76,69.5,85,91,72,64.5,87.5; in

温馨提示

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

评论

0/150

提交评论