导航菜单
首页 >  计算机二级c语言编程题真题  > 计算机二级C语言的注意事项及相应真题

计算机二级C语言的注意事项及相应真题

目录11.根据以下公式求P的值,结果由函数值带回12.计算出x所指数组中n个幂数之和并返回13.计算并输出下列级数和14.求出一个2XM整型二维数组中最大元素的值,并将此值返回调用函数15.求n (nn 请添加图片描述

例如: m=12, n=8时,运行结果为495.000000。

注意:部分源程序存在文件prog1.c中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

prog1.c:

#include float fun(int m, int n){}main()/* 主函数 */{ void NONO ();printf("P=%f\n", fun (12,8));NONO();getchar();}void NONO (){/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf ; int i, m, n ; float s; fp = fopen("in.dat","r") ; wf = fopen("out.dat","w") ; for(i = 0 ; i < 10 ; i++) {//有10组测试数据fscanf(fp, "%d,%d", &m, &n) ;//从文件指针fp指向的文件in.dat获取m,ns = fun(m, n) ;fprintf(wf, "%f\n", s) ;//结果输出到文件指针wf指向的文件out.dat } fclose(fp) ;//关闭 fclose(wf) ;}

解题思路: 就是三个阶乘,可以用三个浮点型变量来存三个阶乘的结果,最后一除就可以了

答案:

1.自己想的:

#include float fun(int m, int n){float i=m-n,a=1,b=1,c=1;while(m>1||n>1){ if(i>1){c*=i;i--;}if(m>1){a*=m;m--;}if(n>1){b*=n;n--;}}return a/(b*c);}main()/* 主函数 */{ void NONO ();printf("P=%f\n", fun (11,4));NONO();getchar();}void NONO (){/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf ; int i, m, n ; float s; fp = fopen("in.dat","r") ; wf = fopen("out.dat","w") ; for(i = 0 ; i < 10 ; i++) {fscanf(fp, "%d,%d", &m, &n) ;s = fun(m, n) ;fprintf(wf, "%f\n", s) ; } fclose(fp) ; fclose(wf) ;}

2.题库答案:

#include float fun(int m, int n){ int i; float s=1,f=1,h=1; float x; for (i=m;i>=1;i--) s=s*i; /*求出m的阶乘*/ for (i=n;i>=1;i--) f=f*i; /*求出n的阶乘*/ for (i=m-n;i>=1;i--) h=h*i;/*求出m-n的阶乘*/ x=s/(f*h); return (x); }main()/* 主函数 */{ void NONO ();printf("P=%f\n", fun (12,8));NONO();getchar();}void NONO (){/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf ; int i, m, n ; float s; fp = fopen("in.dat","r") ; wf = fopen("out.dat","w") ; for(i = 0 ; i < 10 ; i++) {fscanf(fp, "%d,%d", &m, &n) ;s = fun(m, n) ;fprintf(wf, "%f\n", s) ; } fclose(fp) ; fclose(wf) ;}

我用while,他用的for,区别不大♪(´▽`)

测试:

main函数: 在这里插入图片描述 in.dat: 在这里插入图片描述 out.dat: 在这里插入图片描述

12.计算出x所指数组中n个幂数之和并返回

结构体struct mpow两个成员的意义是: a为幂的底,t为幂的指数。

请编写函数fun,其功能是:计算出x所指数组中n个幂数之和并返回。

例如,当结构体数组用如此数据12, 0,9, 2, 23, 1, 7, 2初始化时,

程序的输出结果应该是:sum= 154.000000

注意:部分源程序存在文件PROG1. C中。

请勿更改主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

PROG1. C:

#include #pragma warning (disable:4996)#define N 5struct mpow{double a;//a是底int t;//t是指数};double fun(struct mpow *x,int n){}void main(){void NONO();struct mpow x[N]={ 12,0,9,2,23,1,7,2 };double sum;sum=fun(x,4);printf("sum=%lf\n",sum);NONO();}void NONO () //系统用于评分测试的函数{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */ FILE *in, *out ; struct mpow x[N]; int i,j ; double sum; in = fopen("in.dat","r") ; out = fopen("out.dat","w") ; for(i = 0 ; i < 10 ; i++) {//有10组测试数据for(j=0 ; j < 4; j++) fscanf(in, "%lf,%d,", &x[j].a,&x[j].t) ;//从文件指针in指向的文件in.dat获取结构体数组的元素sum=fun(x,4); fprintf(out, "sum=%lf\n",sum);//输出到文件指针out指向的文件out.dat中 } fclose(in) ;//关闭 fclose(out) ;}

解题思路: 写两个循环,外循环遍历结构体数组,内循环得出每个幂数的结果,然后将其累加,注意啊,幂的底可是浮点数的

答案:

1.自己做的

#include #pragma warning (disable:4996)#define N 5struct mpow{double a;int t;};double fun(struct mpow *x,int n){double sum=0;for(int i=0;i

相关推荐: