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

下载本文档

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

文档简介

国家二级(C语言)机试模拟试卷31(共9套)(共67题)国家二级(C语言)机试模拟试卷第1套一、程序填空题(本题共1题,每题1.0分,共1分。)1、程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。函数fun的功能是将形参a所指结构体变量8中的数据进行修改,并把a中地址作为函数值返回主函数,在主函数中输出修改后的数据。例如:a所指变量s中的学号、姓名、和三门课的成绩依次是:10001、”ZhangSan”、95、80、88,修改后输出t中的数据应为:10002、”LiSi”、96、81、89。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKl.C中。不得增行或删行,也不得更改程序的结构l#include#includestructstudent{longsno;charname[10];floatscore[3];};/**********found**********/【1】fun(structstudent*a){inti;a->sno=10002;strcpy(a->name,"LiSi");/**********found**********/for(i=0;i<3;i++)【2】+=1;/**********found**********/return【3】;}main(){structstudents={10001,"ZhangSan",95,80,88},*t;inti;printf("\n\nTheoriginaldata:\n");printf("\nNo:%ldName:%s\nScores:",s.sno,);for(i=0;i<3;i++)printf("%6.2f",s.score[i]);printf("\n");t=fun(&s);printf("\nThedataaftermodified:\n");printf("\nNo:%ldName:%s\nScores:",t->sno,t->name);for(i=0;i<3;i++)printf("%6.2f",t->score[i]);printf("\n");}标准答案:structstudent*a->score[i]a知识点解析:第一空:主函数内fun函数的调用形式是“t=fun(&s);”,t是student结构体指针,故fun函数的返回值是student结构体指针,因此第一空为“structstudent*”。第二空:“for(i=0;i<3;i++)__2__+=1;”是修改a的score数组元素的值,故第二空为“a->score[i]”。第三空:此处补充返回值,由第一空的分析可知,返回值是指针,a是指针变量,所以返回值为a,即第三空为“a”。二、程序修改题(本题共1题,每题1.0分,共1分。)2、给定程序MODll.C中函数fun的功能是:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每五个元素求一个平均值,并将这些值依次存放在W所指的数组中。若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。例如,s所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。#include#defineSIZE20fun(double*s,doublew){intk,i;doublesum;for(k=2,i=0;i标准答案:sum=0.0;if((i+1)%5==0)知识点解析:(1)在第一标识下“sun=0.0;”,根据题意,这是给sum赋值,而sun没有定义编译时会提示错误,应改为“sum=0.0;”。(2)错误标识下的if判断语句是依顺序取五个字符,if中的逻辑表达式语法有误,由于1%5恒等于1,所以i+1%5也就等价于i+1了,所以将“if(i+1%5==0)”改为“if((i+1)%5==0)”,此处主要注意的是运算符的优先级。三、程序设计题(本题共1题,每题1.0分,共1分。)3、程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(inta[][N]),函数的功能是:使数组左下三角元素中的值全部置成0。例如:a数组中的值为则返回主程序后a数组中的值应为注意:部分源程序存在文件PROGI.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include#include#defineN5voidfun(inta[][N]){}NONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*rf,*wf;inti,j,a[5][5];rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<5;i++)for(j=0;j<5;j++)fscanf(rf,"%d",&a[i][j]);fun(a);for(i=0;i<5;i++){for(j=0;j<5;j++)fprintf(wf,"%4d",a[i][j]);fprintf(wf,"\n");}fclose(rf);fclose(wf);}main(){inta[N][N],i,j;printf("*****Thearray*****\n");for(i=0;i标准答案:{inti,j;for(i=0;i知识点解析:进入fun函数,根据前面的分析:(1)对二维数组常用双重循环结构来处理:外层循环控制二维数组的行处理,内层循环控制二维数组的列处理。(2)左下半三角元素的下标特点是列下标小于或等于行下标,即j<=i。(3)依次访问二维数组,把符合以上条件的元素的值赋0。该题是对矩阵操作的考查。国家二级(C语言)机试模拟试卷第2套一、程序填空题(本题共1题,每题1.0分,共1分。)1、给定程序中,函数fun的功能是:在形参s所指字符串中的每个数字字符之后插入一个*号。例如,形参s所指的字符串为:def35adh3kjsdf7。执行结果为:def3*5*adh3*kjsdf7*。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKl.C中。不得增行或删行,也不得更改程序的结构!标准答案:(1)&&(2)0或“\0”(3)s[j]知识点解析:函数fun的功能是在形参s所指字符串中的每个数字字符之后插入一个“*”号。在fun函数中,首先寻找数字字符,找到之后,将其后的字符往后移动一位,然后再在数字字符后面插入“*”。二、程序修改题(本题共1题,每题1.0分,共1分。)2、给定程序MODll.C中fun函数的功能是:分别统计字符串中大写字母和小写字母的个数。例如,给字符串s输入:AAaaBBb123CCccccd,则应输出结果:upper=6,lower=8。请改正程序中的错误,使它能计算出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!标准答案:(1)voidfun(char*s,int*a,int*b)(2)*a=*a+1;(3)*b=*b+1;知识点解析:该程序功能是统计字符串中的大小写字母的个数。从已给定源程序的main主函数开始入手,调用函数“fun(s,&uper,&lower);”,传参数uper,lower的地址,对字符串s中的字符进行判断,求得该字符串中大小写字母的个数。三、程序设计题(本题共1题,每题1.0分,共1分。)3、请编写函数fun,其功能是:计算并输出下列多项式的值:例如,在主函数中从键盘给n输入50后,输出为:s=1.718282。注意:要求n的值大于1但不大于100。部分源程序在文件PROGl.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。标准答案:知识点解析:该程序功能是计算并输出多项式值。根据题干中给出的数列,首先推出每一项的表达式,然后再对多项式进行累加求和。国家二级(C语言)机试模拟试卷第3套一、选择题(本题共40题,每题1.0分,共40分。)1、数据结构主要研究的是数据的逻辑结构、数据的运算和()。A、数据的方法B、数据的存储结构C、数据的对象D、数据的逻辑存储标准答案:B知识点解析:数据结构是研究数据元素及其之间的相互关系和数据运算的一门学科,它包含3个方面的内容,即数据的逻辑结构、存储结构和数据的运算。2、一棵二叉树的前序遍历结果是ABCEDF,中序遍历结果是CBAEDF,则其后序遍历的结果是()。A、DBACEFB、CBEFDAC、FDAEBCD、DFABEC标准答案:B知识点解析:由于该二叉树的前序遍历结果是ABCEDF,显然A结点为根结点,所以后序遍历时A结点是最后遍历的,其后序遍历的结果为CBEFDA。3、在数据处理中,其处理的最小单位是()。A、数据B、数据项C、数据结构D、数据元素标准答案:B知识点解析:数据元素是由多个数据项组成,数据是能够被计算机识别、存储和加工处理的信息载体,数据处理的最小单位是数据项。4、在数据库系统的内部结构体系中,索引属于()。A、模式B、内模式C、外模式D、概念模式标准答案:B知识点解析:内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法,如数据存储的文件结构、索引、集簇及hash等存取方式与存取路径,内模式的物理性主要体现在操作系统及文件级上,它还未深入到设备级上(如磁盘及磁盘操作)。5、以下()不属于对象的基本特征。A、继承性B、封装性C、分类性D、多态性标准答案:A知识点解析:对象具有如下特征:标识惟一性。指对象是可区分的。分类性。指可以将具有相同属性和操作的对象抽象成类。多态性。指同一个操作可以是不同对象的行为。封装性。从外面看只能看到对象的外部特征,而不知道也无需知道数据的具体结构以及实现操作的算法。模块独立性好。对象是面向对象的软件的基本模块,对象内部各种元素彼此结合得很紧密,内聚性强。6、数据库系统的核心是()。A、数据模型B、软件开发C、数据库设计D、数据库管理系统标准答案:D知识点解析:数据库管理系统DBMS是数据库系统的核心。DBMS是负责数据库的建立、使用和维护的软件。DBMS建立在操作系统之上,实施对数据库的统一管理和控制。用户使用的各种数据库命令以及应用程序的执行,最终都必须通过DBMS。另外,DBMS还承担着数据库的安全保护工作,按照DBA所规定的要求,保证数据库的完整性和安全性。7、开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做()。A、软件矛盾B、软件危机C、软件藕合D、软件产生标准答案:B知识点解析:随着计算机软件规模的扩大,软件本身的复杂性不断增加,研制周期显著变长,正确性难以保证,软件开发费用上涨,生产效率急剧下降,从而出现了入们难以控制软件发展的局面,即所谓的“软件危机”。8、关系模型允许定义3类数据约束,下列不属于数据约束的是()。A、实体完整性约束B、参照完整性约束C、属性完整性约束D、用户自定义的完整性约束标准答案:C知识点解析:关系模型允许3类数据约束,它们是:实体完整性约束该约束要求关系的主键中属性值不能为空值,这是数据库完整性的最基本要求。参照完整性约束该约束是关系之间相关联的基本约束,它不允许关系引用不存在的元组:即在关系中的外键要么是所关联关系中实际存在的元组,要么就为空值。用户定义的完整性约束用户定义的完整性就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。9、关系表中的每一行记录称为一个()。A、字段B、元组C、属性D、关键码标准答案:B知识点解析:在关系表中,每一列称为一个属性,对应表中的一个字段;每一行称为一个元组,对应表中的一条记录。10、在数据库管理技术的发展中,数据独立性最高的是()。A、人工管理B、文件系统C、数据库系统D、数据模型标准答案:C知识点解析:在人工管理阶段,数据无法共享,冗余度大,不独立,完全依赖程序;在文件系统阶段,数据共享性差;在数据库系统阶段,共享性好,独立性高。11、以下叙述错误的是()。A、C语言区分大小写B、C程序中的一个变量,代表内存中一个相应的存储单元,变量的值可以根据需要随时修改C、整数和实数都能用C语言准确无误地表示出来D、在C程序中,正整数可以用十进制、八进制和十六进制的形式来表示标准答案:C知识点解析:本题涉及C语言最基本的3个概念:①C语言是区分大小写的,q和Q是两个不同的变量:②变量的实质就是在内存中占据一定的存储单元,存储单元里存放的是该变量的值,变量的值可以根据需要进行修改;③整数在允许的范围内可以准确的表示出来,但不可能表示无限度的实数。正整数可用二进制、十进制、八进制和十六进制表示。12、有以下程序段:inti,n;for(i=0;i<8;i++){n=rand()%5;switch(n){case1:case3:printf("%d\n",n);break;case2:case4:printf("%d\n",n);continue;case0:exit(0);}printf("%d\n",n);}以下关于程序段执行情况的叙述,正确的是()A、for循环语句固定执行8次B、当产生的随机数n为4时结束循环操作C、当产生的随机数n为1和2时不做任何操作D、当产生的随机数n为0时结束程序运行标准答案:D知识点解析:当产生的随机数n为0时,执行case0:exit(0)这条语句,结束程序的运行。13、可在C程序中用作用户标识符的一组标识符是()。A、voiddeftneWORDB、as_b3_123IfC、For—abccaseD、2cDOSIG标准答案:B知识点解析:C语言规定,标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或下划线,关键字不能用作用户标识符。14、若变量已正确定义并赋值,则以下符合C语言语法的表达式是()。A、a=a+7;B、a=7+b+c,a++C、int(12.3%4)D、a=a+7=c+b标准答案:B知识点解析:选项A)是一个C语句,不是表达式;选项B)是利用一个逗号表达式给a赋值;选项C)中的“%”求余运算符要求两个运算对象都必须是整型;选项D)中,不能用表达式给表达式赋值,但是变量可以给自身赋值,例如:a=a+1。15、有以下程序段charch;intk:ch=’a’;k=12;printf("%c,%d,",ch,ch,k);printf("k=%d\n",k);已知字符a的ASCII十进制代码为97,则执行上述程序段后输出结果是()。A、因变量类型与格式描述符的类型不匹配输出无定值B、输出项与格式描述符个数不符,输出为零值或不定值C、a,97,12k=12D、a,97,k=12标准答案:D知识点解析:在用基本输出函数printf时,格式说明与输出项的个数应该相同。如果格式说明的个数少于输出项的个数,多余的输出项不予输出;如果格式说明个数多于输出项个数,则对于多余的格式项输出不定值或O。16、下列叙述中错误的是()。A、计算机不能直接执行用C语言编写的源程序B、C程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件C、后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件D、后缀为.obj和.exe的二进制文件都可以直接运行标准答案:D知识点解析:C源程序经过程序编译之后生成一个后缀为“.obi”的二进制文件(称为目标文件),然后由称为“连接程序”的软件包文件与C语言提供的各种库函数连接起来生成一个后缀为“.exe”的可运行文件。17、有以下程序#include<stdio.h>voidmain(){inta=1,b=0;printf("%d,",b=(a++)+(a++));printf("%d\n",a+b);}程序运行后的输出结果是()。A、4,6B、2,5C、3,5D、2.6标准答案:B知识点解析:在主函数中定义了两个整型变量a和b,并把它们的初值分别设置为1和0;在第二条语句中,首先计算b=a+a,然后a自增两次,因此第二句结束时,b-2,a=3,然后第三句,a+b=5。18、若有代数式,(其中e仅代表自然对数的底数,不是变量),则下列能够正确表示该代数式的C语言表达式是()。A、sqrt(abs(n^x+e^x))B、sqrt(fabs(pow(n,x)+pow(x,e)))C、sqrt(fabs(pow(n,x)+exp(x)))D、sqrt(fabs(pow(x,n)+exp(x)))标准答案:C知识点解析:n和e的x幂次方,要分别调用C语言的数学库函数doublepow(n,x)和doubleexp(x),因为这两个函数的返回值都为double型,对两者的和计算绝对值,调用库函数doublefabs(pow(n,x)+exp(x)),求出和的绝对值,再调用开平方函数doublesqrt(fabs(pow(n,x)+exp(x))),这样计算出的结果就是题干中表达式的值。19、设有定义:intk=0;,下列选项的4个表达式中与其他3个表达式的值不相同的是()。A、k++B、k+=1C、#NAME?D、k+l标准答案:A知识点解析:因为题中有语句“intk=0;”,所以选项B)、C)、D)都是对k的值加1,选项A)的语句k++表示先利用k的值进行运算,然后k的值才加1。20、有下列程序,其中%u表示按无符号整数输出。main(){unsignedintx=0xFFFF;/*x的初值为十六进制数*/printf("%u\n",x);}程序运行后的输出结果是()。A、-1B、65535C、32767D、0xFFFF标准答案:B知识点解析:“%u”格式符表示以十进制形式输出无符号整形变量。本题中无符号整形变量x=0xFFFF。表示的是十六进制无符号整型变量的最大值65535,所以最后输出的结果为65535。21、下面程序的运行结果是()。for(i=3;i<7;i++)printf((i%2)?("**%d\n"):("##%d\n"),i);A、

B、

C、

D、

标准答案:D知识点解析:本题考查printf函数的输出格式和条件表达式“?:”的使用。①printf函数输出时“**%d\n”和“##%d\n”中的“##”和“**”都是直接输出。②条件表达式的基本格式为:“a?b:c”。它的运算规则为:当a为非0时,整个表达式的值取b的值,当a为0时,整个表达式取c的值。22、设有语句:if(a==1)b=2;c=3;,以下语句中与之等价的是()。A、if(a==1){b=2;c=3;)B、if(a!=1){;}else{b=2;c=3;)C、if(a==1)c=3;b=2;D、(a==1)?b=2:a=a;c=3;标准答案:D知识点解析:在C语言中,用分号表示一条语句的结束,用{}把几条语句放在一块表示一个语句块,其整体表示一个功能。因而在题目给出的四个选项中,选项A)、B)、C)均与题中所给不同,而选项D)相同。23、运行下列程序时,若输入数据为“321”,则输出结果是()。main(){intnum,i,j,k,s;scanf("%d",&num);if(hum>99)s=3;elseif(num>9)s=2;elses=1;i=num/100;j=(num-i*100)/10;k=(num-i*100-j*10);switch(s){case3:printf("%d%d%d\n",k,j,i);break;case2:printf("%d%d\n",k,j);case1:printf("%d\n",k);}}A、123B、1,2,3C、321D、3,2,1标准答案:A知识点解析:本题考查if-else语句和switch语句。scanf函数通过键盘读入num的值。因为num=321>99,所以s=3,i=3,j=2,k=1。因为s=3,所以执行case3,输出k,j,i的值,然后通过break结束程序。24、有以下程序#include<stdio.h>#include<string.h>StructA{inta;charb[10];doublec;};structAf(structAt);main(){structAa={1001,"ZhangDa",1098.0);a=f(a);printf("%d,%s,%6.1f\n",a.a,a.b,a,c);}structAf(StructAt){t.a=1002;strcpy(t.b,"WangPeng");t.C=1220,0;returnt;)程序运行后的输出结果是()。A、1001,ZhangDa,1098.0B、1002,ZhangDa,1220.0C、1001,WangPeng,1098.0D、1002,WangPeng,1220.0标准答案:D知识点解析:在主函数中定义结构体A的变量a,并对其赋初值,再调用函数f(a),在函数f(a)中对结构体变量a的各个成员重新进行了赋值操作,并把其值返回在屏幕上输出。25、判断char型变量c1是否为小写字母的正确表达式为()。A、’a’<=c1<=’z’B、(c1>=a)&&(c1<=z)C、(’a’>=c1‖(’z’<=c1)D、(c1>=’a’)&&(c1<=’z’)标准答案:D知识点解析:C语言规定,字符常量在程序中要用单引号括起来。首先判断c1是否为小写字母的主要条件c1>=’a’和c1<=’z’是逻辑与关系,其次选项A)的这种形式C语言中没有,所以选项D)正确。26、设有定义:chars[10];inti=0;,以下不能将一行(不超过100个字符)带有空格的字符串正确读入的语句或语句组是()。A、gets(s);B、scanf("%s",s);C、while((s[i++]=getchar())!=’\n’);s[i]=’\0’;D、do{scanf("%c",&s[i]);}while(s[i++]!=’\n’);s[i]=’\0’;标准答案:B知识点解析:本题考查标准输入输出函数和循环语句。gets(s)函数的作用是将输入的字符读入字符串s,直到遇到回车。而scanf()函数接收字符串时的结束标志为回车或者空格。因此选项B)不能,选项C)和选项D)中按字符逐个读入字符串s中,直到读入的字符是换行符为止,因此正确。27、下面4个关于C语言的结论中错误的是()。A、可以用do…while语句实现的循环一定可以用while语句实现B、可以用for语句实现的循环一定可以用while语句实现C、可以用while语句实现的循环一定可以用for语句实现D、do…while语句与while语句的区别仅是关键字“while”出现的位置不同标准答案:D知识点解析:本题考查几个循环语句的关系。①do…while语句、while语句、for语句所实现的循环可以相互替代;②do…while语句和while语句的区别是do…while语句至少执行一次,再判断循环条件,while语句是先判断条件再执行。28、若有以下程序段:structst{intn;int*m;};inta=2,b=3,c=5;structsts[3]=({101,&a},{102,&c),{103,&b)};main(){structst*p;p=s;…}则以下表达式中值为5的是()。A、(p++)->mB、*(p++)->mC、(*p).mD、*(++p)->m标准答案:D知识点解析:本题考查如何通过指针引用数组元素。首先定义了一个结构体,然后定义了一个结构体变量s[3],并赋了初值。在主程序中,定义了一个指向结构体变量s的指针p,要使表达式的值为5,就应该引用s[1].m的值,使指针p指向s[1],++p可以实现将p指针加1,指向s[1]。29、下列程序的运行结果是()。#include<stdio.h>voidsub(int*s,int*y){staticintm=4;*y=s[0];m++:}voidmain(){inta[]={1,2,3,4,5),k;intx;printf("\n");for(k=0;k<=4;k++){sub(a,&x);printf("%d,",x);}}A、1,1,1,1,1,B、1,2,3,4,5,C、0,0,0,0,0,D、4,4,4,4,4,标准答案:A知识点解析:本题中sub(int*s,int*y)函数的参数是两个指针型变量,在函数体内将数组s的第一个元素赋给y。主程序内,首先定义了一维数组并赋初值,然后通过for循环,5次调用sub(a,&x)函数,每一次调用都是将数组a的第一个元素1赋给x,并输出。30、有以下程序:#include<stdio.h>intfun(intx,inty){if(x!=y)return(y);elsereturn((x+y)/2);}main(){inta=4,b=5,c=6;printf("%d\n",fun(2*a,fun(b,c)));}程序运行后的输出结果是()。A、3B、6C、8D、12标准答案:B知识点解析:fun(b,c)即fun(5,6),5!=6,所以返回6;fun(2*a,6)即fun(8,6),8!=6,所以返回6。31、C语言中规定,程序中各函数之间()。A、既允许直接递归调用也允许间接递归调用B、不允许直接递归调用也不允许间接递归调用C、允许直接递归调用不允许间接递归调用D、不允许直接递归调用允许间接递归调用标准答案:A知识点解析:本题考查函数调用的基本概念。在函数调用时,只要符合函数的使用,程序中的各个函数间既可以直接调用其他函数,也可以递归调用其自身。32、以下程序的输出结果是()。#include<stdio.h>main(){inta[3][3]={0,1,2,0,1,2,0,1,2),i,j,s=1;for(i=0;i<3;i++)for(j=i;j<=i.j++)s+=a[i][a][j][j];printf("%d\n",s);}A、3B、4C、1D、9标准答案:B知识点解析:当外层循环为i时,内层循环j只能取j=i,所以s+=a[i][a[j][j]],其实就是s+=a[i][a[i][i]],当i=0时,s=s+a[0][a[0][0]]=s+a[0][0]=1,当i=1时,s=s+a[1][a[1][1]]=s+a[1][1]=1+1=2,当i=2时,s=s+a[2][a[2][2]]=s+a[2][2]=2+2=4。33、有以下程序:#include<stdio.h>#defineX5+6main(){inta=2,c;c=X*2;printf("%d",c);}程序运行后的输出结果是()。A、17B、22C、16D、11标准答案:A知识点解析:define语句仅进行简单替换,因此c=5+6*2=17。34、当用“#defineF37.5f”定义后,下列叙述正确的是()。A、F是float型数B、F是char型数C、F无类型D、F是字符串标准答案:D知识点解析:字符替换定义格式为:#define标识符(形参表)形参表达式。题中F是代表形参表达式的标识符(字符串)。35、若有定义语句:inta=3,b=2,c=1;,以下选项中错误的赋值表达式是()。A、a=(b=4)=3;B、a=b=c+1;C、a=(b=4)+c;D、a=1+(b=x=4);标准答案:A知识点解析:这道题目主要考察赋值表达式,对于赋值表达式来说,赋值号“=”的左边一定为变量名,右边为一个C语言合法的表达式。36、以下说法正确的是()。A、宏定义是C语句,要在行末加分号B、可以使用#undefine提前结束宏名的使用C、在进行宏定义时,宏定义不能嵌套D、双引号中出现的宏名也要进行替换标准答案:B知识点解析:本题考查宏的使用规则:①字符替换格式:#define标识符字符串,行末不加分号;②双引号中出现的宏名不替换;③如果提前结束宏名的使用,程序中可以使用#undefine:④在进行宏定义时,宏定义能层层置换,能够嵌套。37、下面程序的输出结果是()。typedefunion{longx[1];inty[4];charz[10];}M;Mt;main(){printf("%d\n",sizeof(t));}A、32B、26C、10D、4标准答案:C知识点解析:“联合体”所占用的内存空间为最长的成员所占用的空间。题中联合体的z[10]成员是联合体中占空间最长的成员。38、以下程序中函数sort的功能是对a数组中的数据进行由大到小的排序voidsort(inta[],intn){inti,j,t;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10),i;sort(&aa[3],5);for(i=0;i<10;i++)printf("%d,",aa[i]);printf("\n");}程序运行后的输出结果是()。A、1,2,3,4,5,6,7,8,9,10,B、10,9,8,7,6,5,4,3,2,1,C、1,2,3,8,7,6,5,4,9,10,D、1,2,10,9,8,7,6,5,4,3,标准答案:C知识点解析:程序中sort函数的功能是对数组中的数据进行从大到小的排序。主函数main中调用函数sort(&aa[3],5);,使得数组aa中从第4个元素开始的5个元素进行从大到小的排序,数组aa中的元素变为:1,2,3,8,7,6,5,4,9,10。并输出这些元素。39、设x=061,y=016,则z=x|y的值是()。A、1111B、1.11111e+007C、111111D、1.1e+007标准答案:C知识点解析:本题主要考查按位或运算,x=061(二进制为00110001),y=016(二进制为00001110),进行或运算后结果为00111111。40、函数rewind(fp)的作用是()。A、使fp指定的文件的位置指针重新定位到文件的开始位置B、将fp指定的文件的位置指针指向文件中所要求的特定位置C、使fp指定的文件的位置指针向文件的末尾D、使fp指定的文件的位置指针自动移至下一个字符位置标准答案:A知识点解析:位置指针重返文件头函数rewind()的调用形式为:rewind(fp)。其中,“fp”是指向文件的文件型指针。rewind(fp)的功能是:使fp指定的文件的位置指针重新定位到文件的开始位置。二、程序填空题(本题共1题,每题1.0分,共1分。)41、给定程序中,函数fun的功能是:找出100~999之间(含100和999)所有整数中各位上数字之和为X(x为一正整数)的整数,然后输出;符合条件的整数个数作为函数值返回。例如,当X值为5时,100~999之间各位上数字之和为5的整数有:104、113、122、131、140、203、212、221、230、302、311、320、401、410、500。共有15个。当x值为27时,各位数字之和为27的整数是:999。只有1个。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!#include<Stdio.h>intfun(intx){intn,s1,s2,s3,t;n=0;t=100;/**********found**********/while(t<=____1____){/**********found**********/s1=t%10;S2=(____2____)%10;s3=t/100;/**********found**********/if(s1+s2+s3==____3____){printf("%d",t);n++;}t++;}returnn;}main(){intx=1;.while(x<0){printf("Pleaseinput(x>0):¨);scanf("%d¨,&x);}printf(¨\nTheresultis:%d\n",fun(x));}标准答案:(1)999(2)t/10(3)x知识点解析:第一空:第一处是补充while循环的终止条件,题干要求fun寻找100~999之间满足条件的数x,因此循环终止条件是999,故第一空处应填“999”。第二空:“s1=t%10;s2=(___2___)%10;s3=t/100;”可知s1求得t的个位数,s3求得t的百位数,因此s2是求t的十位数。(t/10)变量t变成两位数,再次对10取余便得到t的十位数,因此第二空处应为“t/10”。第三空:“if(s1+s2+s3==___3___)”是判断t是否满足题干条件:各位上数字之和为x,因此第三空处应为“x”。三、程序修改题(本题共1题,每题1.0分,共1分。)42、给定程序MODI1.C中函数fun的功能是:用下面的公式求x的近似值,直到最后一项的绝对值小于指定的数(参数num)为止:例如,程序运行后,输入0.0001,则程序输出3.1414。请改正程序中的错误,使它能输出正确的结果。注意:不要改动smain函数,不得增行或删行,也不得更改程序的结构!#include<math.h>#include<stdio.h>floatfun(floatnum){ints;float;n,t,pi;t=1;pi=0;n=1;s=1;/**********found**********/while(t>=num){pi=pi+t;n=n+2;s=-s;/**********found**********/t=s%n;}pi=pi*4;returnpi;}main(){floatn1,n2;printf("Enterafloatnumber:");scanf("%f",&n1);n2=fun(n1);printf("%6.4f\n",n2);}标准答案:(1)while(fabs(t)>=num)(2)t=s/n;知识点解析:(1)题干中要求进行循环的条件是绝对值小于某范围,可以调用C语言提供的取绝对值函数fabs对t取绝对值。所以将“while(t>=num)”改为“while(fabs(t)>=num)”。(2)表达式s%n中,n是浮点型,而%运算符只能用于整数运算,且要进行的是除法运算而不是求余运算。所以,第二个标识下“t=s%n;”应该改为“t=s/n;”。四、程序设计题(本题共1题,每题1.0分,共1分。)43、请编写函数fun,它的功能是:计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。例如,在主函数中从键盘给n输入20后,输出为:s=0.583333。注意:要求11的值不大于100。部分源程序在文件PROG1.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include<stdio.h>doublefun(intn){}NONO(){/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/FILE*rf,*wf;intn,i;doubles;rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%d",&n);s=fun(n);fprintf(wf,"%1f\n",s);}fclose(rf);fclose(wf);}main(){intn;doubles;printf("\nInputn:");scanf("%d",&n);s=fun(n);printf("\n\ns=%f\n",s);NONO();}标准答案:inti;doublesum=0.0;for(i=1;i<=n;i++)if(i%5==0||i%9==0)/*被5或9整除*/sum+=1.0/i;returnsum;知识点解析:(1)首先,通过循环,判断小于等于n的每一个整数是否符合题干中的要求。其中的判断条件能否被5或者被9整除为i%5==0‖i%9==0。(2)然后求得符合(1)要求的数的倒数的累加和。国家二级(C语言)机试模拟试卷第4套一、程序填空题(本题共1题,每题1.0分,共1分。)1、给定程序中,函数fun的功能是计算下式例如,若形参e的值为1e-3,函数的返回值2.985678。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKl.C中。不得增行或删行,也不得更改程序的结构!标准答案:(1)0(2)i++(3)2.0*i知识点解析:函数fun的功能是求级数和,观察可知,级数项有规律变化,可以用循环来累加求和。二、程序修改题(本题共1题,每题1.0分,共1分。)2、下列给定程序中,函数fun()的功能是:根据形参m的值(2≤m≤9),在m行m列的二维数组中存放如下所示的数据,由main()函数输出。例如,若输入2,则输出1224输入4,则输出1234246836912481216请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构.试题程序:#include<conio.h>#include<stdio.h>#defineM10intaiM][MI={0};/***************found*******************/fun(int**a,intm){intj,k;for(j=0;j<m;j++)for(k=0;k<m;k++)/***************found*******************/a[j][k]=k*j;}main(){inti,j,n;clrscr();printf("Entern\n");scanf("%d",&n);fun(a,n);for(i=0;i<n;i++){for(j=0;j<n;j++)printf("%4d",a[i][j]);printf("\n");}}标准答案:(1)错误:fun(int**a,intm)正确:voidfun(int(*a)[M],intm)(2)错误:a[j][k]=k*j;正确:a[j][k]=(k+1)*(j+1);知识点解析:对于二维数组,应该理解成为是由几个一维数组作元素组成的一维数组,或者说,二维数组实际是一个一维数组,只不过它的每个数组元素又都是一个一维数组。我们先来看看指针数组的表示形式:(1)p+i和a+i均表示a[i]的地址,或者讲,它们均指向数组第i号元素,即指向a[i]。(2)*(p+i)和*(a+i)都表示p+i和a+i所指对象的内容,即为a[i]。(3)指向数组元素的指针,也可以表示成数组的形式,也就是说,它允许指针变量带下标,如p[i]与*(p+i)等价。因此,二维数组元素a[i][j]可表示成*(a[i]+j)或*(*(a+i)+j),它们都与a[i][j]等价,或者还可写成(*(a+i))[j]。了解了以上这些内容后本题就好解决了。三、程序设计题(本题共1题,每题1.0分,共1分。)3、请编写程序fun,函数的功能是:实现B=A+A’,即把矩阵A加上A的转置,存放在矩阵B中。计算结果在main函数中输出。例如,输入下面的矩阵:其转置矩阵为:程序输出:注意:部分源程序在文件PROGl.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#includevoidfun(inta[3][3],intb[3][3]){}main()/*主程序*/{inta[3][3]=({1,2,3},{4,5,6},{7,8,9}},t[3][3];inti,j;voidNONO();fun(a,t);for(i=0;i<3;i++){for(j=0;j<3;j++)printf("%7d",t[i][j]);printf("\n");}NONO();}voidNONO(){/*本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/inti,j,k,a[3][3],t[3][3];FILE*rf,*wf;rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(k=0;k<5;k++){for(i=0;i<3;i++)fscanf(rf,"%cl%d%d",&a[i][0],&a[i][1],&a[i][2]);fun(a,t);for(i=0;i<3;i++){for(j=0;j<3;j++)fprintf(wf,"%7d",t[i][j]);fprintf(wf,"\n");}}fclose(rf);fclose(wf);}标准答案:intc[3][3];inti,j;for(i=0;i<3;i++)for(j=0;j<3;j++){c[i][j]=a[j][i];//矩阵的转置b[i][j]=a[i][j]+c[i][j];}知识点解析:(1)首先,将a所指数组元素中的值进行转置并放到c所指数组中。(2)矩阵相加是指把两个矩阵中下标相同的元素的值一一对应相加。国家二级(C语言)机试模拟试卷第5套一、程序填空题(本题共1题,每题1.0分,共1分。)1、标准答案:NN-10知识点解析:第一空:题目要求对每行元素中的值均右移1个位置,故第一空处循环变量每次增1,共循环N次,完成对N行的移位操作,因此第一空处应为“N”。第二空:“x=t[i][___2___];”保存第i行元素的最后一个元素t[i][N-1],故第二空应为“t[i][N-1]”。第三空:此处是右边被移出矩阵的元素绕回左边,即将x内保存的元素放在每行的第一位置,故第三空应为“0”。二、程序修改题(本题共1题,每题1.0分,共1分。)2、给定程序MODll.C中函数fun的功能是:将s所指字符串中的字母转换为按字母序列的后续字母(但Z转换为A,z转换为a),其他字符不变。请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include#includevoidfun(char*s){/***************found*************/while(*s!=’@’){if(*s>=’A’&&’s<=’Z’||*s>=’a’&&*s<=’Z’){if(*s==’Z’)*s=’A’;elseif(*s==’Z’)*s=’a’;elSe*s+=1;}/***************found*************/(*s)++;}}main(){chars[80];printf("\nEnterastringwithlength<80.:\n\n");gets(S);printf("\nThestring:\n\n’’);puts(s);fun(s);printf("\n\nTheCords:\n\n");puts(s);}标准答案:(1)while(*s)或while(*s!=’\0’)或while(*s!=0)(2)s++j知识点解析:(1)第一个错误标识下的“while(*s!=’@’)"语句原意是s不指向字符串尾就进入下面的循环,所以对于指针判断不为尾符的语句应该是“while(*s)"或者“while(*s!=’\0’)"或者“while(*s!=’\0’)"。(2)第二个标识下“(*s)++;"是对字符内容加1,而原题是对字符位置加1,所以将其改为“s++;"。三、程序设计题(本题共1题,每题1.0分,共1分。)3、假定输入的字符串中只包含字母和*号。请编写函数fun。它的功能是:将字符串尾部的*号全部删除,前面和中间的*号不删除。例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:****A*BC*DEF*G。在编写函数时,不得使用C语言提供的字符串函数。注意:部分源程序在文件PROGI.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.dat","r");out=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(in,"%s",s);fun(s);fprintf(out,"%s\n",s);}fclose(in);fclose(out);}标准答案:inti=0;char*p,*q;p=q=a;while(*p)p++;p一一;while(*p==’*’)p--;while(q<=p){a[i]=*q;i++;q++;}a[i]=’\0’;知识点解析:(1)首先,使用一个指针p指向串尾,然后对指向串尾的指针p指向的字符进行判断,如果是"*",指针p就跳过,这样来设置一个指针变量q指向字符串的头位置。(2)然后,将由字符串起始到最后一个字母之间的字符拷贝到字符串a。(3)最后,在新生成的字符串尾加’\0’。国家二级(C语言)机试模拟试卷第6套一、程序填空题(本题共1题,每题1.0分,共1分。)1、给定程序中,函数fun的功能是:判定形参a所指的NxN(规定N为奇数)的矩阵是否是“幻方”,若是,函数返回值为1:不是,函数返回值为O。“幻方”的判定条件是:矩阵每行、每列、主对角线及反对角线上元素之和都相等。例如,以下3×3的矩阵就是一个“幻方”:492357816请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKl.C中。不得增行或删行,也不得更改程序的结构!标准答案:(1)0(2)11(3)1知识点解析:本题中函数fun的功能是判定形参a所指的N×N的矩阵是否是”幻方”,“幻方"的判定条件是:矩阵每行、每列、主对角线及反对角线上元素之和都相等,因此判断“幻方”对先求每行、每列、主对角及反对角元素和,然后判断是否都相等,都相等则是幻方,否则不是幻方。二、程序修改题(本题共1题,每题1.0分,共1分。)2、给定程序MODll.C中函数fun的功能是:比较两个字符串,将长的那个字符串的首地址作为函数值返回。请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!标准答案:(1)char*fun(char*s,char*t)(2)ss++;(3)tt++;知识点解析:本题中函数的功能是比较两个字符串,将长的那个字符串的首地址作为函数值返回。解题思路是对调试过程中产生的错误提示进行跟踪,也就是题干中给出的错误标识符号下的语句。三、程序设计题(本题共1题,每题1.0分,共1分。)3、编写函数fun,函数的功能是求出小于或等于lim的所有素数并放在aa数组中,函数返回所求出的素数的个数。注意:部分源程序在文件PROGl.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。标准答案:知识点解析:该程序功能是求一定范围内的素数。素数是只能被1和自身除尽的数。判断i是不是素数最简单的方法就是用2~(i/2)去除i,只要能除尽就不是素数。国家二级(C语言)机试模拟试卷第7套一、程序填空题(本题共1题,每题1.0分,共1分。)1、给定程序中,函数fun的功能是:计算出形参s所指字符串中包含的单词个数,作为函数值返回。为便于统计,规定各单词之间用空格隔开。例如,形参s所指的字符串为:ThisisaClanguageprogram,函数的返回值为6。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKl.C中。不得增行或删行,也不得更改程序的结构!#includeintfun(char*s){intn=0,flag=0;while(*s!=’\0’){if(*s!=’’&&flag==0){/******************found*******************/【1】;flag=1;}/******************found*******************/if(*s==’’)flag=【2】;/******************found*******************/【3】;}returnn;}main(){charstr[81];intn;printf("\nEnteralinetext:\n");gets(str);n=fun(str);printf("\nfhereare%dwordsinthistext.\n\n",n);}标准答案:(1)n++(2)0(3)s++知识点解析:第一空:“if(*s!=’’&&flag==0)"说明找到空格了,单词的数量应加1,故第一空处应为“n++"。第二空:“if(*s!=’’&&flag==0)"和“if(*s==’’)flag=【2】:"在flag为0的情况下,n才加1,因此第二空处是将flag置0,即第二空处应为“0"。第三空:“while(’s!=’\0’)"循环的终止条件是s达到结尾,因此在循环体内s应该不断往字符串尾移动,即第三空为"s++"。二、程序修改题(本题共1题,每题1.0分,共1分。)2、给定程序MODll.C中函数fun的功能是:为一个偶数寻找两个素数,这两个素数之和等于该偶数,并将这两个素数通过形参指针传回主函数。请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include#includevoidfun(inta,int*b,int*c)(inti,j,d,y;for(i=3;i<=a/2;i=i+2){/**********found***********/Y=1;for(j=2;j<=Sqrt((double)i);j++)if(i%j==0)y=0;if(y==1){/***********found************/d==a-i;for(j=2;j<=sqrt((double)d);j++)if(d%j==0)y=0;if(y==1){*b=i;*c=d;}}}}main()(inta,b,c;do{printf("\nInputa:"),scanf("%d",&a);}while(a%2);fun(a,&b,&c);printf("\n\n%dl=%d+%d\n",a,b,c);}标准答案:(1)y=1;(2)d=a—i;知识点解析:(1)第一标识下“Y=1:"变量Y没有定义,编译时会提示出错。题中用标志y区别i是否是素数,y=1是素数,y=0不是素数。第一个标识下当i是素数时,y最后的值就是进入循环结构前的初始化值0,标识该值不是素数,所以“Y=1;"应该改为“y=1:"。(2)在语句“if[y=1)"中,应该是判断(a-i)是否是素数,即d应赋值“a-i"而不是“d==a-i:",所以第二个标识下"d==a-i;"改为“d=a-i:"。三、程序设计题(本题共1题,每题1.0分,共1分。)3、假定输入的字符串中只包含字母和*号。请编写函数fun。它的功能是:将字符串尾部的*号全部删除,前面和中间的*号不删除。例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:****A*BC*DEF*G。在编写函数时,不得使用C语言提供的字符串函数。注意:部分源程序在文件PROGI.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.dat","r");out=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(in,"%s",s);fun(s);fprintf(out,"%s\n",s);}fclose(in);fclose(out);}标准答案:inti=0;char*p,*q;p=q=a;while(*p)p++;p一一;while(*p==’*’)p--;while(q<=p){a[i]=*q;i++;q++;}a[i]=’\0’;知识点解析:(1)首先,使用一个指针p指向串尾,然后对指向串尾的指针p指向的字符进行判断,如果是"*",指针p就跳过,这样来设置一个指针变量q指向字符串的头位置。(2)然后,将由字符串起始到最后一个字母之间的字符拷贝到字符串a。(3)最后,在新生成的字符串尾加’\0’。国家二级(C语言)机试模拟试卷第8套一、程序填空题(本题共1题,每题1.0分,共1分。)1、给定程序中,函数fun的功能是:计算出带有头结点的单向链表中各结点数据域中值之和作为函数值返回。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKl.C中。不得增行或删行,也不得更改程序的结构!#include#include#defineN8typedefstructlist{intdata;structlist*next;}SLIST;SLIST*creatlist(int*);voidoutlist(SLIST*);intfun(SLIST*h){SLIST*p;ints=0;p=h->next;while(p){/**********found**********/s+=p->【1】;/**********found**********/p=p->【2】;}returns;}main(){SLIST*head;inta[N]={12,87,45,32,91,16,20,48};head=creatlist(a);outlist(head);/**********found**********/printf("\nsum=%d\n",fun(【3】));}SLIST*creatlist(inta[]){SLIST*h,*p,*q;inti;h=p=(SLIST*)malloc(sizeof(SLIST));for(i=0;idata=a[i];p->next=q;p=q;}p->next=0;returnh;}voidoutlist(SLIST*h){SLIST*p;p=h->next;if(p==NULL)printf("ThelistisNULL!\n");else{printf("\nHead");do{printf("->%d",p->data);p=p->next;}while(p!=NULL);printf("->End\n");}}标准答案:datanexthead知识点解析:第一空:循环“while(p)”遍历整个链表,在循环体中,s是累加变量,每个结点的数据域上的数据都累加在s上,因此第一空处应为“s+=p->data;”。第二空:p是循环变量,p不断指向下一个结点,故第二空处应为“p=p->next;”。第三空:fun函数的声明为:intfun(SLIST*h),参数是SLIST结构体指针,表示头结点地址,因此第三空处的函数调用应为“printf("\nsum=%d\n",fun(head));”。二、程序修改题(本题共1题,每题1.0分,共1分。)2、给定程序MODll.c中函数fun的功能是:找出一个大于形参m且紧随m的素数,并作为函数值返回。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#includeintfun(intm){inti,k;for(i=m+1;;i++){for(k=2;k<i;k++)/**************found**************/if(i%k!=0)break;break;/**************found**************/if(k标准答案:if(i%k==0)if(k>=i)知识点解析:(1)“if(i%k!=0)break;”说明k是i的因子的情况,i肯定不是素数可直接跳出循环,因此第一标识下应改成“if(i%k==0)”。(2)“if(k=i时i是素数,故第二标识下应改为“if(k>=i)”。三、程序设计题(本题共1题,每题1.0分,共1分。)3、请编写函数fun,其功能是:计算并输出下列多项式的值:例如,在主函数中从键盘给n输入8后,输出为:s=0.662872。注意:要求n的值大于1但不大于100。部分源程序在文件PROGl.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#includedoublefun(intn){}NONO()(/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/FILE*rf,*wf;intn,i;doubles;rf=fopen(”in.dat”,”r”);wf=fopen(”out.ctat”,”w”);for(i=0;i<10;i++){fscanf(rf,”%d”,&n);S=fun(n);fprintf(wf,”%lf\n”,s);}fclose(rf);fclose(wf);}main(){intnjdoubles;printf("\nInputn:");scanf(”%d”,&n);s=fun(n);printf(”\ns=%f\n”,s);NONO();}标准答案:{inti;doublesum=0.0;if(n>1&&n<=100){for(i=1;i<=n;i++)sum+=1.0/(2*i-1)-1.0/(2*i);}returnsum;}知识点解析:(1)根据题

温馨提示

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

评论

0/150

提交评论