国家计算机等级考试二级c语言-南开100套题(C语言).docx
《国家计算机等级考试二级c语言-南开100套题(C语言).docx》由会员分享,可在线阅读,更多相关《国家计算机等级考试二级c语言-南开100套题(C语言).docx(162页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、第一套填空3:函数的实际参数是圆的半径x。给定程序的功能是:求二分 之一的圆面积,函数通过形 参得到圆的半径,函数返回 二分之一的圆面积(注:圆 面积公式为”=42,在程序 中定义的变量名要与公式 的变量相同)。例如,输入圆的半径值:19.527,输出 为:s=598.949991。注意:部分源程序给出如卜。请勿改动main函数和其他函数中的任何内 容,仅在横线上填入所编写的若干表达式或语句。 试题程序:include double fun( double r) return 3.14159* 1 /2. 0;)void main()double x;printf(*Enter x:);sca
2、nf (*%lf*,【2); printf(*s=%lfn*, fun( 3);)【参考答案】(l)r*r (2)&x(3)x【考点分析】 本题考查:圆面积计算公式 S = 7V *r*r;scanf()函数的形式,其一般形式为 “scanf(格式控制字符串”,地址表列);,注意地址 是由地址运算符&”后跟变量名组成的;primf() 函数的形式,其一般形式为“ printf(”格式控制字符 串”,输出表列);函数实参调用,函数作为另一个 函数调用的实际参数出现。【解题思路】填空1:计算KI的面积,公式为:S = 7rr *Fo填空2:scanf()函数一般形式为scanf(格式控制,地 址表
3、列),因此填入&X。下列给定程序中,函数fun的功能是:计算 S=f(-n)+f(-n+1)+. +f(O)+f( 1 )+f(2)+.f(n)的值。例如,当n为5吐函数值应为10.407143。f(x) 函数定义如下:f(x)=(x + l)/(x-2) x 00x=0曲=2(x-l)/(x-2) x 0请改正程序中的错误,使它能得出正确的结 果。注意:不要改动main函数,不得增行或删行, 也不得更改程序的结构。试题程序:4include #include include 4include /*found*/ f(double x)(if (x0. 0 | x=2. 0) return 0
4、. 0;else if(x0. 0)return(x-1)/(x-2);elsereturn(x+1)/(x-2);)double fun(int n)int i; double s=0. 0, y;for(i=-n; i=n;i+) y=f(1.0*i); s+=y;/* founcl*/ return s)void main() system (*CLSO ;printf(%fn”, fun (5);【参考答案】() 错误:f(double x)正确:double f(double x)(2,) 错误:return s正确:return s;【考点分析】本题考查:函数的定义,其一般形式 为
5、“类型标识符函数名(形式参数表列)”,其中类 型标识符指明了本函数的类型,函数的类型实际 上是函数返回值的类型。【解题思路】该程序的流程是,fun()程序对f(n)项循环累加,并 且采用条件选择语句计算函数f(x)的值。本题的 错误在于未定义函数f(double x)的返回值类型。C 语言规定,在未显式声明的情况下,函数返回值默 认为int型。编写函数fun,函数的功能是:根据以下公式 计算s,计算结果作为函数值返回;n通过形参传 入。S=l+l/(l+2)+l/(l+2+3)+.+l/(l+2+3+.+n) 例如,若n的值为11时,函数的值为1.833333。 注意:部分源程序给出如下。请勿
6、改动main函数和其他函数中的任何内 容,仅在函数fun的花括号中填入所编写的若干语 句。试题程序:#include #include #include #include float fun(int n)void mainOFILE *wf; int n; float s;system(*CLS*);printf(*nPlease enter N:); scanf(%d, &n);s=fun(n);printf(*The result is:%fn * , s);wf=fopen(*out. dat*, w); fprintf (wf, *%f*, fun(11); fclose(wf); /
7、【参考答案】float fun(int n)int i,sl=0; /*定义整型变量si,表示分母*/float s=0.0; /*定义单精度变量s,表示每一 项*/for(b=l;iv=n;i+)sl=sl+i;/*求每一项的分母*/s=s+1.0/sl;/*求多项式的值*/1return s;【考点分析】本题考查:计算给定表达式的值,根据题意判断表 达式为1到n累加倒数之和。变量数据类型及强制 转换操作。foi循环语句,一般情况需要确定循环 变量的取值范围。使用relurn语句完成函数值的 返回。【解题思路】本题可以通过for循环语句来实现第1项到第n项 的变化,然后计算各项的累加和。方法
8、是先根据题 目要求定义变量(注意该变量的数据类型),然后 对其进行初始化操作,因为该变量用作累加器,所 以初始值应为0(或0.0,根据变量数据类型来确定), 再通过for循环语句来完成累加过程。本题中si用来表示式中每一项的分母,它可以由 前一项的分母加项数得到。注意:由于si定义成一 个整型,所以在$=+ 1.0/s 1中不能把1.0写成1。【解题宝典】此类计算表达式值的程序,首先需要根据题意分 析表达式的规律,得出通项,然后再完成程序语 句。第二套请补充main函数,该函数的功能是:计算两 个自然数n和m(mvlOOOO)之间所有数的和(n和m 从键盘输入)。例如,当 n=l,m=100
9、时,sum=5O5O;当 n=l 00,m=l 000时,sum=495550。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表 达式或语句。试题程序:#include include #include void main() (int n, m;long sum;1;system(*CLS*);printf(*nlnput n, mn);scanf (*%d, %d*, &n, &m);while (n=m)(2;n+;)printf (*sum=% 3 n, sum);)【参考答案】(l)sum=O (2) sum+=n (3
10、) Id【考点分析】本题考查:变量初始化,需要注意该 变量是累加器还是累乘器:printf()函数,其一般形 式为“printf(“格式控制符”,输出表列广。其中,格式 控制符用于指定输出格式,可由格式字符串和非 格式字符串两种组成,格式字符串是以开头的 字符串,在后面跟有各种格式字符,以说明输出 数据的类型、形式、长度、小数位数等,如“ld” 表示按十进制长整型输出,非格式字符串在输出 时原样照印,在显示中起提示作用。【解题思路】填空1:变量sum进行了类型声明,但没有进行初始 化,而后面的程序用sum来存放最后的结果,所以 要在使用前将sum初始化为0。填空2:通过while循环将自然数n
11、和m之间的数进 行累加,结果存于sum中。填空3:由于sum为长整型,所以标准输出函数 printf()中的格式控制符为“%kT.下列给定程序中,fun函数的功能是:根据形 参明计算下列公式的值:t=l+l/2+l/3+l/4+.+ l/m例如,若输入5,则应输出2.283333。请改正程序中的错误,使它能计算出正确的结果。/ 注意:不要改动main函数,不得增行或删行,.也不得更改程序的结构。试题程序:ttinclude #include #include double fun(int m)(double t=l. 0;int I;for(1=2;I=m;I+)/* foiind*/t+=1
12、.0/k;/*found*/ return I;)void main 0int m;system(CLS);printf(nPlease enter 1 integer number:);scanf &m);printf(nThe result is %lfn”, fun(m);【参考答案】错误:t+=1.0/k;正确:t+=1.0/I;错误:return I; 正确:return t;【考点分析】本题考杳:for循环语句的循环条件,这类题口的一 般解法是根据题意确定循环变量的取值范围;函 数返回值,其般形式为return表达式;,该语句 的功能是计算表达式的值,并返回给主调函数。【解题思路】
13、(1)该题目考查分母成等差数列递增的一个数学 公式,我们先看循环条件for(l=2;k=m;I+),i从2开 始递增到m,所以t的值应该是由1.0/i的值逐步循 环叠加后的结果,而不是t+=L0/k;。(2)retum I;考查对程序的解读能力,当循环结束后 (由输入m的值决定),函数返回当前t的值.请编写一个函数 void fun(char *tt,int pp), 统计在tt字符串中a到z26个字母各自出现的 次数,并依次放在pp所指数组中。,例如,当输入字符串abcdefghabcdeabc后,程-序的输出结果应该是:3 33 22 1 1 1 0000000 000000000000注
14、意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内 容,仅在函数fun的花括号中填入所编写的若干语 句。试题程序:#include ttinclude include void fun(char *tt, int pp)void main()(FILE *wf;char aa1000;int bb26, k;system(*CLS*);printf (*nPlease enter a char string :);scanfaa);fun (aa, bb);for (k=0 ;k26 ; k+)printf(*%d *, bbk);printf(*n );wf=fopen(*ou
15、t. dal, w);fun (abcdefgabcdeabc”, bb);for (k=0 ;k26 ; k+)fprintf (wf, *%d , bbk);fclose(wf);【参考答案】void fun(char*tt,int pp)int i;for(i=0;i=a&*tt=,z,)pp*tt-,a,+;/*将tt字符串中才到226个字母各自出现的 次数,依次放在pp数组中,任一个小写字母减去官 后所得结果正好是它对应的下标*/【考点分析】本题考查:统计小写字母在指定字符串中出现次 数。for循环语句,需要注意循环变量的取值范围。 if条件语句要注意条件表达式的判定。【解题思路】第
16、I个循环的作用是初始化数组pp,未经赋值变量 的量为个不确定数字。由于它要将到N26个 字母的个数依次放到数组pp中,即富的个数存于 pp中,b的个数存于ppl中内的个数存于pp 中,,依此类推,而-3的值正好为0,好为的值为 l;c- a的值为2,,依此类推。任一个小写字母 减去后所得结果正好是它对应的下标,所以就 有了pp*tt-a+,但*tt必须是小写字母,即if()不 应省略。.第三套给看程序的功能是:判断字符ch是否与串str 中的某个字符相同,若相同什么也不做,若不同则 插在串的最后。注意:部分源程序给出如下。请勿改动函数ma i n和其他函数中的任何内 容,仅在横线I:填入所编写
17、的若干表达式或语句.试题程序:ttinclude #include void fun (char *str, char ch) (while (*str &*str !=ch) str+; if(*str 1 ch) str0=ch;2 =0;)void main()(char s81,c;system(*CLS*);printf (*nPlease enter a string :); gets(s);printf (*n Please enter the character to search :);c=getchar ();fun( 3);printf(*nThe result is %
18、sn”, s);)【参考答案】 != (2) str或*(str+l) (3)s,c【考点分析】本题考查:if语句,一般掌握条件表 达式的判定。函数的调用,其一般形式为函数名 (实际参数表正【解题思路】填空1:根据题意若相同什么也不做,则应填入!= o填空2:若不同则插在串的最后,那么0就在字符串 的倒数第二了。填空3:函数传递的参数为输入的两个字符串,则 填入s,c。下列给定程序中,函数fun的功能是:分别统 计字符串中大写字母和小写字母的个数。例如, 给字符串s输入:AaaaBBb 123CCccccd,则应输出 结 果:upper=5 Jower=9 0请改正程序中的错误,使它能计算出正
19、确的 结果。注意:不要改动main函数,不得增行或删行, 也不得更改程序的结构。试题程序:#include#include/*found*/void fun (char *s, int a, int b)while (*s)(/ *f otind*/if (*s=,A* & *s=,a* & *s=,z*) b+;s+;)main()char s100;int upper=0, lower=0;printf(*nplease a string gets(s);fun (s, &upper, & 1 ower);printf(*nupper=%dlower=%dn*, upper, lower)
20、;【参考答案】错误:void fun(char *s, int a. int b)确:void fun(char *s, int *a, int *b)(2)错误:a+;正确:(*a)+;(3)错误:b+;正确:(*b)+;【考点分析】本题考查:函数的参数传递和指针变量,理解指针 变量作为函数的参数,函数的参数不仅可以是整 型、实型、字符型等数据,还可以是指针类型,它 的作用是将一个变量的地址传送到另一个函数 中。【解题思路】(1)根据题中程序可以看出,函数fun传递的是地址, 那么,在函数中就应该出现指针,所以改为void fun (char *s ,int *a, int *b)(2)和(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 国家 计算机等级考试 二级 语言 南开 100
限制150内