二级C语言程序设计题专项强化真题试卷1
程序设计题
1.请编写函数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要定义为实型,累加时要进行类型转换。
2.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。此处有一个很奇怪的车牌号,它是一个4位十进制数,是某一个数的平方数,且这4个数字从右至左一个比一个大。程序的功能是把这个车牌号找出来,部分程序已给出。
请编写函数fun,其功能是:将一个4位数的每一位数分离出来,并依次存放在结构体变量成员中,通过函数值返回给主函数。
例如,一个4位数n为2579,则应把2放在res.m3中,把5放在res.m2中,把7放在res.m1中,把9放在res.m0中。
程序正确运行后的输出结果是:No.is1369
注意:部分源程序存在文件PROGl.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include<stdio.h>
{}include<stdlib.h>
#praqma warning(disable:4996)
struct BITS{int m3,m2,m1,m0;};
Struct BITS fun(int n)
{
Struct BITS res;
/*在这里将函数代码补充完整*/
}
main()
{struct BITS a;
void NONO();
int i=0,n=0;
for(i=32;i<100;i++)
{n=i*i;
a=fun(n);
if(a.m3<a.m2&&a.m2<a.m1&&a.m1<a.m0)
printf(\\
res.m0=n%10;
res.m1=n/10%10;
res.m2=n/100%10;
res.m3=n/1000;
return res;
解析:根据题目要求将一个四位数的个、十、百、千位数提取出来,分别放入res.m0、res.m1、res.m2、res.m3中,首先提取个位数,将数对10取余,所得的结果即为个位数字,将其赋值给res.m0;然后取十位,将该数除以10,因为是int型,进行强制转换,小数点后的数字舍去,则该数的个位数舍去,变为一个三位数(例如2563除以10为256.3,经类型强制转换后变为256),再进行对10取余,得到十位数字,将其赋值给res.m1;然后取百位,将该数除以100,因为是int型,进行强制转换,小数点后的数字舍去,则该数的个位、十位数舍去,变为一个两位数(例如2563除以100为25.63,经类型强制转换后变为25),再进行对10取余,得到百位数字,将其赋值给res.m2;最后取千位,将该数直接除以1000,再进行强制转换后(例如2563除以1000为2.563,经类型强制转换后变为2),所得到的数即为千位数字,将其赋值给res.m3,最后返回该结构体即可。
3.请编写函数fun,其功能是:找出2×M整型二维数组中最大元素的值,并将此值返回调用函数。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#define M 4
#include
int fun(int a[][M])
{
}
void main()
{
int arr[2][M]={5,8,3,45,76,-4,12,82};
printf(\\
int fun(int a[][M])
{
int i,j,max=a[0][0];
/*对二维数组进行遍历*/
for(i=0 ; i<2;i++)
for(j=0;j<M;j++)
if(max<a[i][j])
/*将最大值保存在max中*/
max=a[i][j];
return max;
}
解析:本题考查:求数组的最大值,需运用循环语句。因为数组是二维数值,所以应使用二层加for循环嵌套。使用for循环语句时需注意循环变量的取值范围。
此类求最大值或最小值的问题,可以采用逐个比较的方式,对数组中所有元素遍历一遍,从中找出数组最大值或最小值。首先定义变量max用来存放数组的第一个元素的值,然后利用for循环逐个找出数组中的元素,并与max比较,如果元素值大于max,则将该值赋予max,循环结束后max的值即为数组最大值,最后将该值返回。
该类题目考查较多,需要掌握逐个比较的方法。对于m*n二维数组,如果采用逐个查找方法,代码实现如下:
for(i=0;i<m,i++)
for(j=0;j<n;j++)
if(a[i,j]>max)
max=a[i,j]
4.编写函数fun,它的功能是:求小于形参n,同时能被3与7整除的所有自然数之和的平方根,并作为函数值返回。
例如,若11为1000时,程序输出应为:s=153.909064。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include
#include
double fun(int n)
本文档预览:3600字符,共4069字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载