1、国家计算机二级考试C语言程序设计1下列给定程序中,函数fun的功能是 :计算如下公式122235746ns-直到3210n,并且把计算结果作为函数值返回。例如,若形参e的值为1e -3,则函数返回值为0.551690。请在下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。注意:部分源程序在文件BLANK1 .C中。不得增行或删行,也不得更改程序的结构!#include double fun(double e) int i, k; double s, t, x;s=0; k=1; i=2;/*found*/x=_1_/4;/*found*/while(x _2_ e) s=s+k*x;
2、k=k* (-1);t=2*i;/*found*/x=_3_/(t*t);i+;return s;main() double e=1e-3;printf(“nThe result is: %fn“,fun(e);【参考答案】(1)3.0或(double)3 (2) (3) (t+1)【考点分析】本题考查:基本算术运算时的类型转换,其转换规则为:如果双目运算符两边运算数的类型一致,则所得结果的类型与运算数的类型一致;如果双目运算符两边运算的类型不一致,系统将自动进行类型转换,使运算符两边的类型达到一致后,再进行运算规律见下表。运算数1 运算数2 转换结果类型短整型 大整型 短整型长整型整型 大整
3、型 整型长整型字符型 整型 字符型整型有符号整型 无符号整型 有符号整型无符号整型整型 浮点型 整型浮点型while循环语句,一般考查如何根据题意确定循环条件,以及如何通过循环变量变化实现循环操作。【解题思路】填空1:变量x定义为double类型,而运算符“/“ 后面是整型数,所以给x赋值时,需要注意数据类型,此处不能将3.0写成3。填空2:while循环语句的循环条件,根据题意确定循环变量应大于1e3,因此此处应填“ 。填空3:表达式的通项是(2*i+1)/(2*i) 2 ,由于程序中已定义 t=2*i,所以此处应该填写(t+1)。【解题宝典】本题填空1还可以运用强制类型转换来实现。强制类型
4、转换是通过类型转换运算来实现的。其一般形式为:“(类型说明符) (表达式)“。其功能是:把表达式的运算结果强制转换成类型说明符所表示的类型。例如:(float) a 把a 转换为实型(int)(xy) 把xy的结果转换为整型国家计算机二级考试C语言程序设计1下列给定程序中函数fun的功能是:求出如下分数序列的前n项之和。和值通过函数值返回。 235821,例如,若n5,则应输出8.391667。请改正程序中的错误,使其得出正确的结果。注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改的程序的结构!#include /*found*/void fun ( int n ) int
5、a, b, c, k; double s;s = 0.0; a = 2; b = 1;for ( k = 1; k #define M 4int fun (int aM)main( ) int arr2M=5,8,3,45,76,-4,12,82 ;void NONO ();printf(“max =%dn“, fun(arr) ;NONO( ) ;void NONO ()/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */FILE *wf ;int arrM=5,8,3,90,76,-4,12,82 ;wf = fopen(“out.dat“,“w“) ;fprintf(
6、wf, “max=%dn“, fun(arr) ;fclose(wf) ;【参考答案】int fun (int aM)int i,j,max=a00;for(i=0;idouble fun(int n) int i; double s, t;/*found*/s=_1_;/*found*/for(i=1; i0): “); scanf(“%d“, printf(“nThe result is: %fn“,fun(n);【参考答案】(1) 0 (2) n (3) (t*t)【考点分析】本题考查:变量初始化操作,需要注意该变量是用作累加器还是累乘器;for循环语句。【解题思路】填空1:程序开始定义
7、了变量s,但没有对其进行初始化,根据公式及后面的程序可知变量s用来存储公式的前n项和,因此该变量应初始化为0。填空2:通过for循环语句将表达式各项进行累加,结果存于变量 s中,循环变量i的取值范围为1n 。填空3:根据题目要求确定表达式通项,前面已定义t2.0*i,因此此空应填(t*t)。【解题宝典】程序要求计算表达式值时,一般我们都设定一个变量s,并赋初值,如果s用来存放表达式的和,则赋初值为0;如果s用来存放表达式的积,则赋初值为1。国家计算机二级考试C语言程序设计2下列给定程序中函数fun的功能是:统计 substr所指的子符串在str所指的字符串中出现的次数。例如,若字符串为aaas
8、 1kaaas,子字符串为as,则应输出 2。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改的程序的结构!#include int fun (char *str,char *substr) int i,j,k,num=0;/*found*/for(i = 0, stri, i+)for(j=i,k=0;substrk=strj;k+,j+)/*found*/If(substrk+1=0) num+;break;return num;main()char str80,substr80;printf(“Input a string:“)
9、 ;gets(str);printf(“Input a substring:“) ;gets(substr);printf(“%dn“,fun(str,substr);【参考答案】(1)for(i=0;stri;i+)(2)if(substrk+1= 0)【考点分析】本题考查:for循环语句的格式,for循环语句使用最为灵活,其一般形式为:for(表达式1;表达式 2;表达式3) ,注意表达式之间使用“ ;“ 相隔;if条件语句的格式,其中if关键字需要区别大小写,这里不能混淆使用。关键字是由C语言规定的具有特定意义的字符串,也称为保留字。用户定义的标识符不应与关键字相同,并且关键字应小写。【
10、解题思路】我们先看循环条件for(i 0, stri, i) ,不难发现此处 for循环语句的格式有误,其中表达式之间应以“;“ 相隔;同时很容易发现 if条件语句处的关键字书写错误。国家计算机二级考试C语言程序设计2编写函数fun,其功能是:根据以下公式求 的值(要求精度 0.0005,即某项小于0.0005时停止迭代)。 123124123575935n程序运行后,若输入精度0.0005,则程序应输出为3.14。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include #include double
11、 fun ( double eps)main( ) double x;void NONO ();printf(“Input eps:“) ;scanf(“%lf“, printf(“neps = %lf, PI=%lfn“, x, fun(x);NONO();void NONO ()/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */FILE *fp, *wf ;int i ;double x ;fp = fopen(“in.dat“,“r“) ;wf = fopen(“out.dat“,“w“) ;for(i = 0 ; i =eps) /*当某项大于精度要求时,继续求下
12、一项*/s1=s1*n/(2*n+1); /*求多项式的每一项*/s=s+s1; /*求和*/n+;return 2*s;【考点分析】本题考查:迭代法求给定多项式的值,迭代算法:让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。需要注意变量的数据类型以及赋初值操作。【解题思路】首先应该定义double类型变量,并且赋初值,用来存放多项式的某一项和最后的总和。从第2项开始以后的每一项都是其前面一项乘以n/(2*n+1),程序中用s1来表示每一项,s表示求和后的结果。需注意s1和s的初值都为1.0,因为循环变量从第二项开始累加。国家计
13、算机二级考试C语言程序设计3给定程序中,函数fun的功能是:统计形参 s所指的字符串中数字字符出现的次数,并存放在形参t所指的变量中,最后在主函数中输出。例如,若形参s所指的字符串为“abcdef35adgh3kjsdf7“,则输出结果为4。请在下画线处填入正确内容并将下画线删除,使程序得出正确的结果。注意:部分源程序在文件BLANK1.C中。不得增行或删行,也不得更改程序的结构!#include void fun(char *s, int *t) int i, n;n=0;/*found*/for(i=0; _1_ !=0; i+)/*found*/if(si=0/*found*/t = x
14、 ; x = y ;/*found*/return(y) ;main()int a = 3, b = 8 ;printf(“%d %dn“, a, b) ;b = fun(printf(“%d %dn“, a, b) ;【参考答案】(1)t = *x ; *x = y ;(2)return(t) ;或return t;【考点分析】本题考查:指针型变量的使用;通过return语句完成函数值的返回。【解题思路】首先,定义变量t作为中间变量,然后进行数据交换,注意参数x是指针变量,交换时应使用*x,最后确定返回值,根据代码bfun(8a,b)可以知道返回值将赋给变量b,而b中应存放交换前*x中的值,
15、所以函数应返回变量t。国家计算机二级考试C语言程序设计3编写函数fun,其功能是:求出 11000之间能被7或11整除,但不能同时被7和11整除的所有整数,并将其放在a所指的数组中,通过n返回这些数的个数。注意:部分原程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include void fun (int *a, int *n)main( ) int aa1000, n, k ;void NONO ( );fun ( aa, for ( k = 0 ; k #define N 9int fun(int a, int n
16、) int i,j;j = 0;for (i=0; iint fun(int a,int b) int r,t;if(an)得余数 r,再用余数r去除原来的除数,得到新的余数,重复此过程直到余数为 0时停止,此时的除数就是m 和 n的最大公约数。程序首先判断参数a和b的大小,如果avoid fun( char *a )main() char s81;void NONO ( );printf(“Enter a string:n“);gets(s);fun( s );printf(“The string after deleted:n“);puts(s);NONO();void NONO()/*
17、本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */FILE *in, *out ;int i ; char s81 ;in = fopen(“in.dat“,“r“) ;out = fopen(“out.dat“,“w“) ;for(i = 0 ; i unsigned long fun(unsigned long n) unsigned long x=0; int t;while(n) t=n%10;/*found*/if(t%2=_1_)/*found*/x=_2_+t;/*found*/n=_3_;return x;main() unsigned long n=-1;while(n99999999|n0) printf(“Please input(0n100000000): “); scanf(“%ld“, printf(“nThe result is: %ldn“,fun(n);【参考答案】(1)0 (2) 10*x (3)n/10【考点分析】本题考查:已知某数,如何求该数各个位数值,已知各个位数值,如何表示该数;除法运算。