编程题:
第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;