首先,注意二级C的程序设计题总得来说有6大类.
1. 数值计算类
这类题的概率比较大,所以一定要引起注意, 这类题并不难但要细心.
1.1.素数类
首先,要知道如何知道一个数m是不是素数,其方法如下:
for(int k=2;k<m;k++)
{
if(m%k==0)
{
break;
}
}
此循环结束只有两种情况,一种是执行了break语句;另一种是循环条件不满足,其中前一种是表示m不是素数,后一种是表示m是素数。
例1. 请编制一函数fun(),其功能是:计算并输出3~n之间的所有素数的平方根之和。
注意:部分源程序已给出。
请勿改动主函数main()的内容。
试题程序:
#include <math.h>
#include <stdio.h>
double fun(int n)
{
}
main()
{
int n;
double sum;
printf("/n/nInput n:%d/n");
scanf("%d",&n);
sum=fun(n);
printf("/n/nThe sum=%f/n/n",sum);
}
本题难点:1.判断一个数是不是素数;2.计算一个正数的平方根。
参考答案:
double fun(int n)
{
int m,k,i;
double s=0.0;
for(m=3;m<=n;m++)
{
k=sqrt(m);
for( i=2 ; i<=k ; i++)
{
if( m%k==0 )
{
break;
}
}
if(i>=k+1) /*其实是判断,是否执行了break;语句*/
{ /*如果执行了break;语句,那么i就<=k*/
s+=sqrt(m); /*如果没有执行那么m就是素数*/
} /*假如要对一个非素数操作的话改变条件即可*/
}
return s;
}
1.2.方程求根(请看其它参考书)
1.3.求级数前n项和
这类题的公式看上去很复杂,好像无从下手,其实它的规律非常单一,仅靠一个循环一般就能得出结果。这类题总是给出一个级数公式与求和的项数n,求解过程是先将存放和的单元清成0,循环变量置初值(一般为1或0)。循环体内分两步运算,第一步是先找出级数的一般项和下标的关系,然后利用上一项的值累加或类乘来表示本项的分子或分母。
例2. 请编制一函数fun(),其功能是:根据以下公式计算s,计算结果作为数值返回,n通过行参传人。
s=1+1/(1+2)+1/(1+2+3)+…+ 1/(1+2+3+…+n)
例如:若n=11则s值为1.833333。
注意:部分源程序已给出。
请勿改动主函数main()的内容。
试题程序:
#include <conio.h>
#include <stdio.h>
#include <string.h>
double fun(int n)
{
}
main()
{
int n;
double s;
clrscr();
printf("/n/nInput n:");
scanf("%d",&n);
s=fun(n);
printf("/n/nThe s=%f/n/n",s);
}
本题难点:在于找到一般项与下标的关系。
参考答案:
double fun(int n)
{
int i;
float s=1.0,t=1.0;
for(i=3;i<=n;i++)
{
t+=i;s+=(1/t);
}
return s;
}