二级C语言程序设计题专项强化真题试卷5
程序设计题
1.学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组S中。请编写函数fun,其功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。
例如,输入的分数是60、69,则应当把分数在60~69的学生数据输出,包含60分和69分的学生数据。主函数中把60放在low中,把69放在heigh中。
注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
#define N 16
typedef struct
{
char num[10];
int s;
}STREC;
int fun(STREC*a,STREC*b,int 1,int h)
{
}
main()
{
STREC S[N]={{\\
int fun(STREC*a,STREC*b,int l,int h)
{
int i,j=0;
for(i=0;i<N;i++)
if(a[i].s>=1&&a[i].s<=h)
/*将分数高于1,低于h的学生记录存入结构体数组b中*/
b[j++]=a[i];
return j;/*返回分数范围内的学生人数*/
}
解析:本题考查:结构体数组操作;循环判断结构。
本题使用循环判断结构实现程序操作,循环语句用于遍历结构体数组,条件语句用于判断当前元素是否符合条件,若符合条件则将其存入结构体数组b中。
2.请编写函数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要定义为实型,累加时要进行类型转换。
3.下列程序定义了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。
4.请编写一个函数fun,它的功能是:将SS所指字符串中所有下标为奇数位置的字母转换为大写(若该位置上不是字母,则不转换)。
例如,若输入”abc4Efg”,则应输出”aBc4EFg”。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序如下:
#include
#include
#include
#include
void fun(char*ss)
{
}
void main()
{
FILE*wf;
char tt[81],S[81]=\\
void fun(char*ss)
{
int i;
for(i=0;ss[i]!=’\0’;i++) /*将ss所指字符串中所有下标为奇数位置的字母转换为大写*/
{
if(i%2==1&&ss[i]>=’a’&&ss[i]<=’z’)
ss[i]=ss[i]一32;
}
}
解析:该题要求将给定字符串中奇数位置的字母转换为大写,需要先判断奇数位置以及此位置字符是否是小写字母,如果是再通过其转换方法进行转换。
从C语言的学习中知道,只要将小写字母
本文档预览:3600字符,共3657字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载