当前位置:文档之家› 福建省计算机二级(c语言)编程含答案

福建省计算机二级(c语言)编程含答案

福建省计算机二级(c语言)编程含答案
福建省计算机二级(c语言)编程含答案

编程题:

第1套

1. 打开考生文件夹中的Cprog011.C ,完成其中的fun1函数,该函数的数学表达式是:

1sin 1()1x

x e fun x x ++=+

例如:fun1(0.76) = 2.175

fun1(3.00) = 5.307

fun1(3.76) = 9.111

2. 打开考生文件夹中的Cprog012.C ,完成其中的函数fun2(int a[ ], int n, int b[ ], int c[ ]),实现:

(1)将数组a 中大于-20的元素,依次存放到数组b 中;

(2)将数组b 中的元素按照从小到大的顺序存放到数组c 中;

(3)函数返回数组b 中的元素个数。

Cprog011.C

double fun1(double x)

{ /**/ double y = 0.0;

y=(1+sin(x)+exp(x))/(1+x);

return y; /**/ }

Cprog012.C

int fun2(int a[],int n,int b[],int c[])

{

/**/

int j = 0;

int i,t,k;

for(i=0;i

if(a[i]>-20) { c[j]=b[j]=a[i]; j++; }

for(i=0;i

for(k=i+1;k

if(c[i]>c[k])

{ t=c[i]; c[i]=c[k]; c[k]=t; }

return j; /**/ }

第2套

1. 打开考生文件夹中的Cprog021.C ,完成其中的函数fun1,该函数的数学表达式是:

|6|1() 1.3x e x fun x x +-=+

例如:fun1(0.76) = 3.582

fun1(3.00) = 5.369

fun1(3.76) = 8.931

2. 打开考生文件夹中的Cprog022.C ,完成其中的函数fun2(char a[ ], char b[ ], char c[ ]),实现:将三个字符串a 、b 、c 从小到大排序后输出。

注意:字符串比较函数为strcmp(str1,str2),字符串赋值函数为strcpy(str1,str2)。

Cprog021.C

double fun1(double x)

{ /**/

double y = 0.0;

y=(exp(x)+fabs(x-6))/(x+1.3);

return y; /**/}

Cprog022.C

void fun2(char a[],char b[],char c[])

{/**/

char str[100];

if (strcmp(a,b)>0)

{ strcpy(str,a);strcpy(a,b);strcpy(b,str);}

if(strcmp(b,c)>0)

{ strcpy(str,b);strcpy(b,c);strcpy(c,str);}

if(strcmp(a,b)>0)

{ strcpy(str,a);strcpy(a,b);strcpy(b,str);}/**/}

第3套

1. 打开Cprog031.C ,完成其中的函数fun1,该函数的数学表达式是:

1.231()103

213x fun x x x x ?=

例如:fun1(0.76) = 1.200

fun1(3.00) = 10.000

fun1(3.76) = 8.520

2. 打开Cprog032.C ,完成其中的函数fun (char *s),使程序实现统计输入字符串中空格的个数。

Cprog031.C

double fun1(double x)

{/**/

double y = 0.0;

if(x==3) y=10;

else if(x<3) y=1.2;

else y=2*x+1;

return y; /**/ }

Cprog032.C

int fun(char *s)

{ /**/

int n=0;

char *p=s;

while(*p)

{ if(*p==' ') n++;

p++;

}

return n; /**/}

第4套

1. 打开程序Cprog041.C ,完成其中的fun ( )函数,使其计算:

00()||3.2

sin()2x f x x x x ≤??=+?>?+?

如 输入: 12 输出: f(12.000)=10.387

输入: 32.25 输出: f(32.250)=12.935

输入: 0.113 输出: f(0.113)=1.568

2. 打开程序Cprog042.C ,完成其中的fun ( )函数,使程序打印出Fibonacci 数列的前20个数。该数列(1, 1, 2, 3, 5, 8, 13, ……)的第1、第2个数为1,从第3个数开始每个数等于前2个数之和。

Cprog041.C

double f(float x)

{/**/

double y;

if (x<=0)

y = 0;

else

y = (fabs(x)+3.2)/(sin(x)+2);

return y;/**/}

Cprog042.C

void fun(int a[],int m)

{ /**/

int i;

a[0]=1;

a[1]=1;

for(i=2; i

a[i] = a[i-2] + a[i-1];/**/}

第5套

1. 打开程序Cprog051.C ,完成其中的f ( )函数,使其计算:

5.8||||700()1||700x x f x x ?+≤?=?->=?

如 输入: 0.4 输出: f(0.40)=0.82

输入: 1.5 输出: f(1.50)=1.24

输入: 780 输出: f(780.00)=-1.00

2. 打开程序Cprog052.C ,完成其中的fun ( )函数,使其判断一个矩阵是否为对称矩阵,若矩阵对称返回1,不对称返回0。说明:矩阵a 是一个二维数组,若其中的第k 行第j 列的元素与第j 行第k 列的元素相同,则称其为对称矩阵,否则为非对称矩阵。

如 输入:6 3 12 如 输入:6 9 12

3 18 8 3 18 8

12 8 7 34 8 22

输出:Yes 输出:No

Cprog051.C

double f(float x)

{/**/

double y;

if (fabs(x)<=700)

y = sqrt(5.8+fabs(x))/(cos(x)+2.1);

else

y = -1;

return y; /**/}

Cprog052.C

int fun(int a[][3],int m)

{ /**/

int flag =1;

int i, j;

for(i = 0; i

for(j = 0; j

if(a[i][j] != a[j][i])

flag = 0;

return flag; /**/}

第6套

1. 打开程序Cprog061.C ,完成其中的f ( )函数,使其计算:

3

||300()lg(|| 2.6)

1||300x x f x x x ?≤?=+??->=?

如 输入: 0.8 输出: f(0.80)=0.96

输入: 4.5 输出: f(4.50)=107.05

输入: 725 输出: f(725.00)=-1.00

2. 打开程序Cprog062.C ,完成其中的fun ( )函数,使其实现四则运算功能。

如 输入:3.2 2.1

输出:3.20+2.10=5.30

3.20-2.10=1.10

3.20*2.10=6.72

3.20/2.10=1.52

Cprog061.C

double f(float x)

{ /**/

double y;

if (fabs(x)<=300)

y = pow(x,3)/log10(fabs(x)+2.6);

else

y = -1;

return y; /**/}

Cprog062.C

float fun(float a,char flag,float b)

{ /**/

float y;

switch(flag)

case ‘+’: y = a+b; break;

case ‘-‘: y = a-b; break;

case ‘*’: y = a*b; break;

case ‘/’: y = a/b;

return y; /**/}

第7套

1. 打开程序Cprog071.C ,完成其中的f(x)函数,使对其输入的一个月工资数额,求应交税款。设应交税款的计算公式如下:

01600(1600)5%16002100()(1600)10%25

21003100(1600)15%1253100x x x f x x x x x ≤??-?<≤?=?-?-<≤??-?->?

例如 输入: 1825 输出: f(1825)=11.25

输入: 2700 输出: f(2700)=85.00

输入: 5655 输出: f(5655)=483.25

2. 打开程序Cprog072.C ,完成其中的fun ( )函数,该函数将4阶矩阵A 的各行中0之前的所有正数依次存放到数组b 中,并返回这些正数之和。如矩阵A 为

1234012131421230243132330--????--????--??--??

则调用函数fun( )后,b[0]为1,b[1]为2,b[2]为23,b[3]为32,函数返回58。

Cprog071.C

double f(float x)

{/**/

double y;

if (x<=1600)

y=0;

else if (x<=2100)

y = (x-1600)*0.05;

else if (x<=3100)

y = (x-1600)*0.1-25;

else

y = (x-1600)*0.15-125;

return y; /**/}

Cprog072.C

int fun(int a[][COL],int row,int b[])

{/**/

int x=0,i,j,k=0;

for(i=0;i

for(j=0;j

if(a[i][j]>0) b[k++]=a[i][j];

else if (a[i][j]==0) break;

for(i=0;i

x=x+b[i];

return x;/**/}

第8套

1. 打开程序Cprog081.C ,完成其中的f (x )函数,使其计算:

(2)0()(2)ln(2)0x

x e x f x x x x ?+≤=?+>?

如 输入: -1.2 输出: f(-1.200)=0.241

输入: 6 输出: f(6.000)=19.879

2. 打开程序Cprog082.C ,完成其中的fun ( )函数,该函数将以指针数组的形式存放的n 个串升序排序。(提示:字符串复制函数是strcpy(char *, char *),字符串比较函数是strcmp(char *, char *) )

Cprog081.C

double f(float x)

{ /**/

double y;

if (x<=0)

y=(x+2)*exp(x);

else

y=(x+2)*log(2*x);

return y; /**/}

Cprog082.C

void f(char p[][20],int n)

{/**/

char t[20];

int i, j;

for(i=1; i

for(j=0; j

if(strcmp(p[j], p[j+1])>0)

{strcpy(t,p[j]); strcpy(p[j],p[j+1]); strcpy(p[j+1],t); } /**/}

第9套

1. 打开程序Cprog091.C ,完成其中的f ( )函数,使其返回方程2

0ax bx c ++=的两个根中较大的根,求根公式为: 21,242b b ac x a --=,其中假设:0a ≠,且240b ac -≥

2. 打开程序Cprog092.C ,完成其中的strcmp1 ( )函数,该函数实现判别两字符串str1和str2的大小。

Cprog091.C

double f(float a,float b,float c)

{ /**/

double x,y,d;

d= b*b-4*a*c;

x=(-b+sqrt(d))/2*a;

y=(-b-sqrt(d))/2*a;

if(x>y)

return x;

else

return y; /**/}

Cprog092.C

int strcmp1(const char *str1,const char *str2)

{ /**/

while(*str1||*str2)

{

if(*str1-*str2)

return *str1-*str2;

else

{ str2++;

str1++;

}

}

return 0; /**/}

第10套

1. 打开程序Cprog101.c,完成其中的fun(x)函数,该函数的功能是:根据输入的x和n的值,

计算fun(x)=(21)

(1)

n

n x

n n

+

+(1.0≤x≤2.0,0

结果的小数部分存入a[1]中。

2. 打开程序Cprong102.c,完成其中的fun( )函数,该函数的功能是:将已按升序排列好的数组a和已按降序排列好的数组b中的所有元素按降序存入数组c中。

Cprog101.C

void fun(double a[],double x,int n)

{ /**/a[0]=(2*n+1)*pow(x,(double)n)/(n*(n+1));

a[1]=a[0]-(int)a[0]; /**/}

Cprog102.C

void fun(int a[],int b[],int c[])

{ /**/ int i,j,k,t;

for(i=0;i

c[i]=b[i];

for(i=0;i

c[i+M]=a[i];

for(i=0; i

{ k = i;

for (j=i+1; j

if ( c[k]

if (k!=i)

{ t=c[i]; c[i]=c[k]; c[k]=t; }

}/**/}

第11套

1. 打开考生文件夹中的Cprog111.c ,完成其中的函数fun ,该函数的数学表达式是:

?????>----==--1/))()1()()12((1

01)(21n n x P n x P x n n x n x P n n n

例如:当x=5.2,n=6时,函数的值为4.724444。

2. 打开程序Cprog112.c ,完成其中的fun 函数,该函数返回数组a 中的次小数(即仅 大于最小数的数),设数组a 中没有重复的元素。

Cprog111.C

double fun(double x,int n)

{ /**/

double y;

if(n==0)

y=1;

else if(n==1)

y=x;

else if(n>1)

y=((2*n-1)*x-fun(x,n-1)-(n-1)*fun(x,n-2))/n;

return(y); /**/}

Cprog112.C

int find(int a[])

{ /**/

int i,j,k,t;

for (i=0; i

{ k = i;

for (j=i+1; j

if ( a[k]

if (k!=i)

{ t=a[i]; a[i]=a[k]; a[k]=t; }

}

return(a[ROW-2]); /**/}

Cprog121.C

double fun(double x)

{/**/

return((sin(2*x)+3*x*x-2)/(fabs(2*tan(x)+x*log(10))+1)); /**/}

第12套

1.打开程序Cprog121.c ,完成其中的fun 函数,该函数的数学表达式是:

110ln 2232sin )(2++-+=x tgx x x x fun

例如:fun(0.55)=-0.058 。

2.打开程序Cprog122.c ,完成其中的fun 函数:将二维数组a 表示的矩阵的各元素进行本行循环右移指定位数后存入数组b 中。

Cprog122.C

void fun(int a[][COL],int b[][COL],int m)

{

/**/

int i,j;

for(i=0;i

for(j=0;j

if(j-m<0)

b[i][j]=a[i][COL-m+j];

else

b[i][j]=a[i][j-m]; /**/}

相关主题
文本预览
相关文档 最新文档