《《C语言程序设计》考试题目分析.doc》由会员分享,可在线阅读,更多相关《《C语言程序设计》考试题目分析.doc(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、/*第一题:考查考生对语言环境的使用、编译、改错与执行程序的能力。、改正程序中的错误,使程序能输出正确的结果;、完成程序后请务必编译并运行程序,没有执行程序的不得分;考生不得修改=到-之外的任何程序!*/#include#include#include#include/*fun的功能是:从字符串s中找出最长的单词,并将其存放到字符串t中。如果有多个,则取其第一个。(这里的“单词”是指由一个或多个空格或串结束隔开的字符串)。例如,若调用函数前,s为:Iamastudenttotaketheexamination调用函数后,t为:examination*/*=*/voidfun(chars,cha
2、rt)inti:=0,flag=1,longer=0,length=0,k;for(;ilonger)k=i;longer=length;flag=1;elseif(flag=1)length=1;flag=0;elselength+;i=0;while(ilonger)ti=sk-longer+i;i+;ti=0;/*-*/screen()chars1100,t200;clrscr();strcpy(s1,Iamastudenttotaketheexamination);printf(n调用函数前s中的字符串为:%sn,s1);fun(s1,t);printf(n调用函数后t中的字符串为:%
3、sn,t);voidWriteFun()inti,j,k;charstr179,t79;FILE*fr,*fw;if(fr=fopen(DATALIB.DAT,r)=NULL)printf(不能打开文件DATALIB.DAT!n);exit(1);if(fw=fopen(EXAM1_2,w)=NULL)printf(不能打开文件EXAM1_2!n);exit(1);fprintf(fw,%sn,Exam1_2Result);for(i=0;i2;i+)fgets(str1,75,fr);str150=0;fun(str1,t);doubles=0.0;intj=0;while(tj)s+=sq
4、rt(j*tj+);fprintf(fw,%8.3lfn,s);fclose(fw);fclose(fr);main()screen();WriteFun();/*第二题:考查考生按要求编写程序的能力。请按注释提示的要求完成=到-之间的程序。考生在本题中应完成二个函数。完成程序后请务必编译并运行程序,没有执行程序的不得分。注:考生不得修改=到-之外的任何程序。*/#include#include#defineCODE9#defineM51/*函数编写,使其按给出的表达式计算。2x2fun1(x)=-x+1.21x-1.54*/doublefun1(doublex)doubley=0.0;/*=
5、*/*-*/returny;/*函数编写,使其按给出的表达式计算分段函数。式中:Xn表示x的n次方,x为x的绝对值,(注意,语言中abs(x)函数不能用于实型计算,lnx表示变量x的自然对数)。_0.34x3当x=1时fun2(x)=lnx+6.0当x1时*/doublefun2(doublex)doubley=0.0;/*=*/*-*/returny;screen()doublex;clrscr();printf(fun1(1.66)=%8.3lfn,fun1(1.66);printf(fun2(0.76)=%8.3lfn,fun2(0.76);printf(fun2(2.0)=%8.3lf
6、n,fun2(2.0);printf(fun2(2.76)=%8.3lfn,fun2(2.76);voidWriteFun()doubles;doubleaM;charch;inti;FILE*fp;if(fp=fopen(DATALIB.DAT,r)=NULL)printf(不能打开文件DATALIB.DAT!n);exit(1);for(i=0;iM;i+)fscanf(fp,%c,&ch);ai=ch%5+1;fclose(fp);if(fp=fopen(EXAM2_5,w)=NULL)printf(不能打开文件EXAM2_5!n);exit(1);fprintf(fp,%sn,Exam
7、2_5Result);for(s=0.0,i=0;iM;i+)if(i%2=0)s+=fun1(ai);elses+=fun1(-ai);fprintf(fp,%10.3lfn,s);for(s=0.0,i=0;iM;i+)if(i%2=0)s+=fun2(ai);elses+=fun2(-ai);fprintf(fp,%10.3lfn,s);fclose(fp);main()screen();WriteFun();/*第三题:考查考生按要求编写程序的能力。请按注释提示的要求完成=到-之间的程序。考生在本题中应完成二个函数。完成程序后请务必编译并运行程序,没有执行程序的不得分。注:考生不得修改
8、=到-之外的任何程序。*/#include#include#defineM50/*编写函数:fun3(n)的功能是:根据整型形参n,计算如下公式的值。1111fun3(n)=1-+-+前n项之和。3572n-1例如fun3(8)=0.754fun3(15)=0.802*/doublefun3(intn)doubley=0.0;/*y为函数的返回值*/*=*/*-*/return(y);/*编写函数fun4(inta,intn,intb),其中a数组有n个元素,把数组a中值不为3整除的元素,按从大到小的次序存放到数组b中。函数的返回值j为数组b中的元素个数。例如:数组a为:1,2,3,4,5,6
9、,7,8,9,10则数组b为:10,8,7,5,4,2,1函数的返回值为:7注意:数组下标从0开始。*/intfun4(inta,intn,intb)intj=0;/*变量j用来存放数组b中的元素个数*/*=*/*-*/returnj;screen()intn=10,i,nb;inta10=1,2,3,4,5,6,7,8,9,10;intb10;clrscr();printf(fun3(8)=%8.3lfn,fun3(8);printf(fun3(15)=%8.3lfn,fun3(15);printf(以下为第二小题:n);printf(a数组元素个数n为:%3dn,n);printf(a数组
10、元素为:);for(i=0;in;i+)printf(%5d,ai);printf(n);nb=fun4(a,n,b);printf(调用fun4函数后n);printf(b数组元素个数为:%4dn,nb);printf(b数组元素为:);for(i=0;inb;i+)printf(%5d,bi);printf(n);voidWriteFun()doubles;intaM,bM;inti,nb;FILE*fp;charch;if(fp=fopen(DATALIB.DAT,r)=NULL)printf(不能打开文件DATALIB.DAT!n);exit(1);for(i=0;iM;i+)fscanf(fp,%c,&ch);ai=ch;fclose(fp);if(fp=fopen(EXAM3_5,w)=NULL)printf(不能打开文件EXAM3_5!n);exit(1);fprintf(fp,%sn,Exam3_5Result);for(s=0.0,i=0;iM-1;i+)s+=fun3(ai);fprintf(fp,%8.3lfn,s);nb=fun4(a,M,b);for(s=0.0,i=0;inb;i+)s+=i*bi/100.0;fprintf(fp,%8.3lfn,s);fclose(fp);main()screen();WriteFun();