资源描述:
《2011二级c语言南开上机100题---带解析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第一套给定程序的功能是:求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积(注:圆面积公式为:2,在程序中定义的变量名要与公式的变量相同)。例如,输入圆的半径值:19.527,输出为:s=598.949991。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。试题程序:#includedoublefun(doubler){return3.14159*【1】/2.0;}voidmain(){doublex;printf("Enterx:");sca
2、nf("%lf",【2】);printf("s=%lf",fun(【3】));}【参考答案】(1)r*r(2)&x(3)x【考点分析】本题考查:圆面积计算公式*r*r;scanf()函数的形式,其一般形式为"scanf("格式控制字符串",地址表列);",注意地址是由地址运算符"&"后跟变量名组成的;printf()函数的形式,其一般形式为"printf("格式控制字符串",输出表列);";函数实参调用,函数作为另一个函数调用的实际参数出现。【解题思路】填空1:计算圆的面积,公式为:*r。填空2:scanf()函数一般形式为scanf(格
3、式控制,地址表列),因此填入&x。填空3:函数的实际参数是圆的半径x。下列给定程序中,函数fun的功能是:计算S=f(-n)+f(-n+1)+…+f(0)+f(1)+f(2)+…f(n)的值。例如,当n为5时,函数值应为10.407143。f(x)函数定义如下:f(x)=请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#include#include#include/**********
4、***found**************/f(doublex){if(x==0.0
5、
6、x==2.0)return0.0;elseif(x<0.0)return(x-1)/(x-2);elsereturn(x+1)/(x-2);}doublefun(intn){inti;doubles=0.0,y;for(i=-n;i<=n;i++){y=f(1.0*i);s+=y;}/*************found**************/returns}voidmain(){system("CLS");printf("%f",fun(5)
7、);}【参考答案】(1)错误:f(doublex)正确:doublef(doublex)(2)错误:returns正确:returns;【考点分析】本题考查:函数的定义,其一般形式为"类型标识符函数名(形式参数表列)",其中类型标识符指明了本函数的类型,函数的类型实际上是函数返回值的类型。【解题思路】该程序的流程是,fun()程序对f(n)项循环累加,并且采用条件选择语句计算函数f(x)的值。本题的错误在于未定义函数f(doublex)的返回值类型。C语言规定,在未显式声明的情况下,函数返回值默认为int型。编写函数fun,函数的功能是:根据
8、以下公式计算s,计算结果作为函数值返回;n通过形参传入。S=1+1/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+n)例如,若n的值为11时,函数的值为1.833333。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#include#include#includefloatfun(intn){}voidmain(){FILE*wf;intn;floats;sys
9、tem("CLS");printf("PleaseenterN:");scanf("%d",&n);s=fun(n);printf("Theresultis:%f",s);/******************************/wf=fopen("out.dat","w");fprintf(wf,"%f",fun(11));fclose(wf);/*****************************/}【参考答案】floatfun(intn){inti,s1=0;/*定义整型变量s1,表示分母*/floats=0.0;/
10、*定义单精度变量s,表示每一项*/for(i=1;i<=n;i++){s1=s1+i;/*求每一项的分母*/s=s+1.0/s1;/*求多项式的值*/}return