二级C语言程序设计题专项强化真题试卷2
程序设计题
1.下列程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N]),该函数的功能是:将数组左下半三角元素中的值全部置成0。例如a数组中的值为:
197
238
456
则返回主程序后a数组中的值应为:
097
008
000
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include
#include
#nclude
#define N 5
void fun(int a[][N])
{
}
void main()
{
int a[N][N],i,j;
system(\\
void fun(int a[][N])
{
int i,j;
if(a==NULL)return:
for(i=0;i<N;i++)
for(j=0;j<=i;j++)
a[i][j]=0; /*将数组左下半三角元素中的值全部王成0*/
}
解析:本题考查:for循环语句,使用嵌套循环语句遍历二维数组的各个元素;二维数组元素的引用。
对于N×N二维数组,如何表示其左下半三角元素,可以通过以下语句实现。
for(i=0;i<n;i++)
for(j=0;j<=i;j++)
外层循环用来控制矩阵的行下标,内层循环控制矩阵的列下标。注意列下标的取值范围,因为要表示下三角元素,所以j的范围是0~i。
2.编写函数fun,其功能是:根据以下公式求,π的值(要求精度0.0005,即某项小于0.0005时停止迭代)。
double fun(double eps)
{
double s=1.0,s1=1.0;
int n=1;
while(s1>=eps) /*当某项大于精度要求时,继续求下一项*/
{ s1=s1*n/(2*n+1); /*求多项式的每一项*/
s=s+s1; /*求和*/
n++;
}
return 2*s;
}
解析:本题考查:迭代法求给定多项式的值。迭代算法是让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。需要注意变量的数据类型以及赋初值操作。
首先应该定义double类型变量,并且赋初值,用来存放多项式的某一项和最后的总和。从第二项开始以后的每一项都是其前面一项乘以n/(2*n+1),程序中用s1来表示每一项,s表示求和后的结果。需注意s1和s的初值都为1.0,因为循环变量从第二项开始累加。
3.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun,其功能是分别统计形参t所指二维数组中字母A和C的个数。
注意:部分源程序存在PROG1.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
#include<stdlib.h>
#define M 14
void NONO( );
void fun(char(*t)[M],int*a,int,*c){
}
void get(char(*s)[M])
{int i,j;for(i=0;i<M;i++)
{for(j=0;j<M;j++)
{S[i][j]=65+rand( )%12;printf(\\
int i=0,j=0;//循环统计的下标
*a=0;//初始化a字符统计的个数
*c=0;//初始化c字符统计的个数
for(i=0;i<M;i++)//行
{
for(j=0;j<M;j++)//NI
{
if(t[i][j]=’A’)//字符是a,计数
(木a)++;
if(t[i][j]==’C’)//字符是c,计数
(*c)++;
}
}
解析:对二维数组的行列分别循环,行优先,查找数组中元素为A或者C,分别对其进行计数。
4. 请编写函数fun,其功能是:计算并输出下列多项式的值,
S=(1—1/2)+(1/3—1/4)+…+(1/(2n一1)一1/2n)
例如,若主函数从键盘给n输入8后,则输出为S=0.662872。
注意:要求n的值大于1但不大于100。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
double fun(int n)
{
}
main()
{
int n;double s;
void NONO();
printf(\\
double fun(int n)
{
int i;
double s=0.0;
for(i=1;i<=n;i++)
s=s+(1.0/(2*i一1)一1.0/(2*i));
/*计算S=(1—1/2)+(1/3—1/4)+(1/(2n一1)一1/2n)*/
return s;
}
解析:对于求多项式值的题目,一般都使用循环语句来累加计算多项式的通项。本题中多项式的通项为1/(2n一1)一1/2n,循环变量的取值范围为1~n。注意,存放累加和的变量s要定义为实型,累加时要进行类型转换。
本文档预览:3600字符,共3218字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载