网友您好, 请在下方输入框内输入要搜索的题目:

题目内容 (请给出正确答案)

2、求组合数。 马上要举办新生程序设计竞赛了,与以往不同的是,本次比赛以班为单位,为了全面衡量一个班级的整体水平,要求从一个班的m位同学中任选k位同学代表本班参加比赛,问有多少种组合方案。显然,这个组合数是m!/(k!(m-k)!)。要求先编写求阶乘的子程序fact,实现求一个数的阶乘功能,在主函数中调用此函数。 Start(in n, out f) { //函数返回值为n的阶乘。 } 输入两个正整数m,k,k<=m<=12。输出一个整数,即组合方案数。 例如:输入 5 3 输出结果为:10


参考答案和解析
正确
更多 “2、求组合数。 马上要举办新生程序设计竞赛了,与以往不同的是,本次比赛以班为单位,为了全面衡量一个班级的整体水平,要求从一个班的m位同学中任选k位同学代表本班参加比赛,问有多少种组合方案。显然,这个组合数是m!/(k!(m-k)!)。要求先编写求阶乘的子程序fact,实现求一个数的阶乘功能,在主函数中调用此函数。 Start(in n, out f) { //函数返回值为n的阶乘。 } 输入两个正整数m,k,k<=m<=12。输出一个整数,即组合方案数。 例如:输入 5 3 输出结果为:10” 相关考题
考题 试题三(共 15分)阅读以下说明、C函数和问题,将解答写入答题纸的对应栏内。【说明 1】函数test_f1(int m, int n)对整数 m、n进行某种运算后返回一个整数值。【C函数 1】int test_f1(int m, int n){ int k;k = m n ? m : n;for(;(k%m!=0) || (k%n!=0);k++);return k;}【问题 1】(5分)(1)请写出发生函数调用test_f1(9,6)时,函数的返回值;(2)请说明函数test_f1的功能。【说明 2】设在某 C 系统中为每个字符分配 1 个字节,为每个指针分配 4 个字节,sizeof(x)计算为x分配的字节数。函数test_f2()用于测试并输出该C系统为某些数据分配的字节数。【C函数 2】void test_f2( ){ char str[] = "NewWorld"; char *p = str; char i = '\0';void *ptr = malloc(50);printf("%d\t", sizeof(str)); printf("%d\n", sizeof(p));printf("%d\t", sizeof(i)); printf("%d\n ", sizeof(ptr));}【问题 2】(4分)请写出函数test_f2()的运行结果。【说明 3】函数 test_f3(char s[])的功能是:将给定字符串 s 中的所有空格字符删除后形成的串保存在字符数组tstr中(串s的内容不变),并返回结果串的首地址。【C函数 3】char *test_f3 (const char s[]){ char tstr[50]={'\0'}; unsigned int i, k = 0;for(i=0; istrlen(s); i++)if (s[i] != ' ') tstr[k++] = s[i];return tstr;}【问题 3】(6分)函数test_f3()对返回值的处理有缺陷,请指出该缺陷并说明修改方法。

考题 请编写两个函数int sum_of_powers(int k,int n),powers(int m,int n),求1~6的k次方的和,sum_of_powers中参数k和n分别表示k次方和所求数列中最大的一个自然数,最后返回所求值,powers中参数m和n分别表示m为底数n为指数,最后返回所求值。要求使用for循环和函数嵌套(int sum_of_powers中调用powers)实现算法。输出结果如下:sum of 4 powers of intergers from 1 to 6=2275注意:部分源程序已存在文件test25_2.cpp中。请勿修改主函数main和其他函数中的任何内容,仅在函数sum_of_powers和powers的花括号中填写若干语句。文件test25_2.cpp的内容如下:include<iostream.h>const int k(4);const int n(6);int sum_of_powers(int k,int n),powers(int m,int n);void main(){cout<<"sum of "<<k<<" powers Of intergers from 1 to "<<n<<"=";cout<<sum_of_powers(k,n)<<endl;}int sum_of_powers(int k,int n){}int powers(int m, int n){}

考题 编写函数fun(),它的功能是;根据以下公式求p的值,结果由函数值带回。m与n为两个正数且要求m>n。P=m!/n!(m-n)!),例如:m=12,n=8时,运行结果为495.000000。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:include <conio.h>include <stdio.h>float fun (int m, int n){}main(){clrscr() ;printf ("p=%f\n", fun (12,8) ) ;}

考题 请编写一个函数proc,它的功能是:求出1~m(含m) 能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。 例如,若传给m的值为70,则程序输出: 7 11 14 21 22 28 33 35 42 44 49 55 56 63 66 70 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填人所编写的若干语句。 试题程序: includestdlib.h includeconio.h includestdio.h define N 100 void proc(int m,int*a,int*n) {} void main { int arr[N],n,k; system("CLS"); proc(70,arr,&n); for(k=0;kn;k++) if((k+1)%20==0)//每行输出20个数 { printf("%4d",arr[k]); printf("\n"); } else printf("%4d",arr[k]); printf("\n"); }

考题 编写函数jsValue,它的功能是:求Hofstadter数列中的第m项H(m)(m<1000),结果由函数返回。其中数列H(n)的定义为:H(1)=H(2)=1H(n)=H(n-H(n-1))+H(n-H(n-2))(n>2)最后调用函数writeDat()读取50个数据m,分别得出结果且把结果输出到文件out.dat中。例如:当t=997时,函数值为605。部分源程序已给出。请勿改动主函数main()和写函数writeDat()的内容。include<stdio. h>int jsValue(int m){main ( ){int m;m=300;printf ("m=%d, k-%d\n", m, jsValue (m));writeDat ( );writeDat ( ){FILE *in, *out;int i,m,s;in= fopen ( "in. dar" , "r" );ut=f open ( "out. dar" , "w" );for (i=0; i<50; i++) {fscanf (in, "%d", m);s=jsValue (m);printf( "%d\n", s );fprintf (out, "%d\n" , s );}fclose (in);fclose (out);

考题 阅读以下函数说明和C语言函数,将应填入(n)的字句写在答题纸的对应栏内。[说明1]函数int fun1(int m, int n)的功能是:计算并返回正整数m和n的最大公约数。[函数1]int fun1(int m, int n){while ((1)) {if (m>n) m=m-n;else n=n-m;}(2);}[说明2]函数long fun2(char*str)的功能是:自左至右顺序取出非空字符串str中的数字字符形成一个十进制整数(最多8位)。例如,若字符串str的值为“f3g8d5.ji2e3p12fkp”,则函数返回值为3852312。[函数2]long fun2(char *str){int i=0;long k=0;char *p=str;while (*p!='\0' (3)) {if (*p>='0' *p<='9') {k=(4)+ *p - '0';++i;}(5);}return k;}

考题 请补充函数fun(),函数fun()的功能是求7的阶乘。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。试题程序:include<stdio.h>long fun(int n){if(【 】)return(n*fun(【 】);else if(【 】)return 1;}main(){int k=7;printf("%d!=%ld\n", k, fun(k));}

考题 下列给定程序中,函数fun()的功能是:根据形参m的值(2≤m≤9),在m行m列的二维数组中存放如下所示的数据,由 main()函数输出。例如,若输入2,则输出1 22 4输入4,则输出1 2 3 42 4 6 83 6 9 124 8 12 16请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构.试题程序:include <conio.h>include <stdio. h>define M 10int aiM] [MI={0};/***************found*******************/fun( int **a, int m){int j,k;for (j=0; j<m; j++)for (k=0; k<m; k++)/***************found*******************/a[j] [k]=k*j;}main ( ){int i, j, n;clrscr ();printf ("Enter n\n"); scanf ("%d", n);fun (a, n);for (i=0; i<n; i++){ for (j=0;j<n;j++)printf ("%4d ",a[i] [j]);printf ("\n ");}}

考题 编写函数,isValue,它的功能是:求以下数列中满足t(K)=1的最小的k,结果由函数返回。其中数列t(n)的定义为:t(0)=m(m为给定正整数,m<=300)t(n+1)=t(n)/2 (当t(n)为偶数时)或t(n+1)=3*t(n)+1(当t(n)为奇数时)最后调用函数writeDat()读取50个数据m,分别得出结果且把结果输出到文件out.dar中。例如:当t=299时,函数值为117。已知对于m<=300,结果k不超过300部分源程序已给出。请勿改动主函数main()和写函数writeDat()的内容。include<stdio. h>int jsValue(int m){main ( ){int m;m=300;printf ("m=%d, k-%d\n", m, jsValue (m));writeDat ( );writeDat ( ){FILE *in, *out;int i,m,s;in= fopen ( "in. dar" , "r" );ut=f open ( "out. dar" , "w" );for (i=0; i<50; i++) {fscanf (in, "%d", m);s=jsValue (m);printf( "%d\n", s );fprintf (out, "%d\n" , s );}fclose (in);fclose (out);

考题 请编写一个函数void fun(int m, int k, int xx[]),该函数的功能是将大于整数m且紧靠m的k个非素数存入所指的数组中。例如,若输入15,5,则应输出16,18,20,21,22。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:include<conio.h>include<stdio.h>void fun(int m,int k,int xx[]){}main(){int m,n,zz[1000];clrscr();printf("\nPlease enter two integers:");scanf("%d%d",m,n);fun(m,n,zz);for(m=0;m<n;m++)printf("%d",zz[m]);printf("\n");}

考题 下列程序的功能是:将大于整数m且紧靠m的k个被3除余1的素数存入数组xx。请编写函数num(int m,imt k,int xx[])实现程序的要求,最后调用函数readwriteDat()把结果输出到文件out.dat中。例如:若输入17,5,则应输出:19,31,37,43,61。部分源程序已给出。请勿改动主函数main()和输出数据函数readwriteDat()的内容。include <conio.h>include <stdio.h>void readwriteDat();void num(int m, int k, int xx[]){}main ( ){int m,n,xx[1000];clrscr();printf("\nPlease enter two integers:");scanf(" %d%d" ,m,n);num(m,n,xx);for(m=0;m<n;m++)printf(" %d" ,xx[m]);printf("\n" );readwriteDat();}viod readwriteDat(){int m,n, xx[1000], i;FILE *rf,*wf;rf=fopen("in.dat" ," r" );wf=fopen(" out.dat" ," w" );for(i=0;i<10;i++){fscanf(rf," %d%d" ,m,n);num(m,n,xx);for(m=0;m<n;m++)fprintf(wf," %d" ,xx[m]fprintf(wf,"\n" );}fclose(rf);fclose(wf);}

考题 下列给定程序中,函数fun()的功能是::求k!(k<13),所有阶乘的值作为函数值返回。例如:若k=10,则应输出3628800。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:include <conio.h>include <stdio.h>long fun(int k){/*************found**************/if k>0return (k* fun (k-l));/*************found**************/else if (k=0)return 1;}main ( ){int k=10;clrscr ();print, ("%d!=%1d\n ", k, fun (k));}

考题 编写函数jsValue(),它的功能是求Pibonacci数列中大于t的最小的一个数,结果由函数返回,其小 Fibonacci数列F(n)的定义为:F(0)=0, F(1)=1 ’F(n)=F(n-1)+F(n-2)最后调用函数writeDat(),把结果输出到文件OUT10.DAT中。例如:当t=1000时,函数值为1597。注意:部分源程序已给出。请勿改动主函数main()和写函数WriteDat()的内容。试题程序:includeint jsValue(int t){}main ( ){int n;n=1000;printf("n=%d, f=%d\n", n, jsValue(n));writeDat();}writeDat(){FILE *in, *out;int n,s;out = fopen("OUT10.DAT", "w");s = jsValue(1000); printf("%d",s);fprintf(out, "%d\n", s);fclose(out);}

考题 下列程序的功能是:将大于整数m且紧靠m的k个素数存入数组xx。请编写函数num(int m,int k,int xx[])实现程序的要求,最后调用函数read write DAT()把结果输出到out31.dat文件中。例如,若输入17,5,则应输出19,23,29,31,37。注意:部分源程序已给出。请勿改动主函数main()和输入输出函数read write DAT()的内容。试题程序:include conio.hincludeVoid readwriteDAT();Void num(int m,int k,,int XX[]){}main(){int m,n,xx[1000];Clrscr();printf(“\nPlease enter tWO integers:”)‘scanf(“%d,%d”,m,n);num(m, n, XX);for(m=0;m<n;m++)printf(“%d”, XX[m]);printf(”\n”);readwriteDAT();)VOid read write DAT(){int m,n,xx[1000],i;FILE *rf.,*Wf;rf=fopen(“in31.Dat”,r”);Wffopen(“ou1t31.Dat”/”w”);。 for(i=0;i<10;i++){fscanf(rf,%d,” %d”,m,n);num(m,n,XX);for(m=0;m fprintf(wf,%d”,xx[m]);fprintf (wf, “\n”);}fclose(rf);fclose (wf);}

考题 下列程序的功能是:将大于整数m且紧靠m的k个素数存入数组xx中。请编写函数num(int m, int k, int xx[])实现程序的要求,最后调用函数readwriteDAT() 把结果输出到文件out.dat中。例如:若输入“17, 5”,则应输出“19, 23, 29, 31, 37”。注意:部分源程序已给出。请勿改动主函数main()和函数readwriteDAT()的内容。#include conio.h#include stdio.hvoid readwriteDat();void num(int m, int k, int xx[]){ }main(){ int m, n, xx[1000]; printf("\nPlease enter two integers:"); scanf("%d%d", m, n); num(m, n, xx); for (m=0; mn; m++) printf("%d ", xx[m]); printf("\n"); readwriteDat();}void readwriteDat(){ int m, n, xx[1000], i; FILE *rf, *wf; rf = fopen("in.dat", "r"); wf = fopen("out.dat", "w"); for (i=0; i10; i++) { fscanf(rf, "%d %d", m, n); num(m, n, xx); for (m=0; mn; m++) fprintf(wf, "%d ", xx[m]); fprintf(wf, "\n"); } fclose(rf); fclose(wf);}

考题 下列给定程序中,函数fun()的功能是:判断一个整数m是否是素数,若是返回l,否则返回0。在main()函数中,若fun()返回1则输出YES,若fun()返回0则输出NO!请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构.试题程序:include <conio.h>include <stdio.h>int fun(int m){ int k=2;while (k<=m&&(m%k))/*************found*********************/k++/*************found*********************/if(m=k)return 1;else return O;}main ( ){ iht n;clrscr ();printf("\nPlease enter n: ");scanf ("%d", n);if (fun (n)) printf ("YES\n");else printf ("NO! \n");}

考题 阅读以下函数说明和C语言函数,将应填入(n)处的字句填写在对应栏内。[函数2.1说明]函数fun1 (int m, int k, int xx [])的功能是:将大于整数m且紧靠m的k个素数存入数组xx中传回。例如:若输入17,5,则应输出:19,23,29,31,37。[函数2.1]fun1 (int m, int k, int xx [] ){inti, j, s=0;for ( i=m+1; k>0; i++ ){for (j=2; j<i; j++ )if ( i %j=0 )(1)if( i==j ){(2)k--; }}}[函数2.2说明]函数void fun 2 ()的功能是:打印出杨辉三角形(要求打印出10行)。[函数2.2]void fun2 ( ){int i, j;int a[10][10];printf ("\n" );for (i=0; i<10; i++{a [i] [0]=1;(3))for (i=2; i<l0; i++ )for (j=1; j<i; j++)(4)for (i=0; i<10; i++ ){for (j=0; j<=i; j++ )(5)printf ( "\n" );}}

考题 请编写一个函数comm(int n,int k),该函数将用递归算法计算从n个人中选择k个人组成一个委员会的不同组合数,由n个人里选k个人的组合数=由(n-1)个人里选k个人的组合数+由(n-1)个人里选(k-1)个人的组合数。注意:部分源程序已存在文件test41_2.cpp中。请勿修改主函数main和其他函数中的任何内容,仅在函数comm的花括号中填写若干语句。源程序文件test41-2.cpp清单如下:include<iostream.h>int comm(int n, int k){}void main ( ){int n=7, k=3;cout<<"n=7,k=3"<<endl;cout<<comm(n,k)<<endl;}

考题 请补充函数proc,函数proc的功能是求7的阶乘。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数proc的横线上填入所编写的若干表达式或语句。 试题程序: includestdio.h long proc(int n) { if( 【1】 ) return(n*proc( 【2】 ); else if(【3】) return l; } void main { int k=7: printf("%d!=%ld\n",k,proc(k)); }

考题 请编写一个函数fun(),它的功能是:求出1到m(含m)之内能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。例如,若传给m的值为50,则程序输出:7 11 14 21 X 28 33 35 42 44 49注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:include<conio.h>include<stdio.h>define M 100void fun(int m, int *a, int *n){}main(){int aa[M],n,k;clrscr();fun(50,aa,n);for(k=0;k<n; k++)if((k+1)%20==0) /*每行输出20个数*/{printf("%4d",aa[k]);printf("\n");}elseprintf("%4d",aa[k]);printf("\n");}

考题 下列程序的功能是:将一正整数序列{K1,K2,…,K9}重新排列成一个新的序列。新序列中,比K1小的数都在K1的前面(左面),比K1大的数都在K1的后面(右面)。要求编写函数NumSort(int a[10][9])实现此功能,最后调用Wdata函数将新序列输出到文件out.dat中。 说明:在程序中已给出了10个序列,每个序列有9个正整数,并存入数组a[l0][9]中,分别求出这10个新序列。 例:序列{6,8,9,1,2,5,4,7,3} 经重排后成为{3,4,5,2,1,6,8,9,7} 注意:部分源程序已经给出。 请勿改动主函数main和写函数Wdata的内容。

考题 请补充函数fun(),该函数的功能是:寻找两个整数之间的的所有素数(包括这两个整数),把结果保存在数组bb中,函数返回素数的个数。例如,输入6和21,则输出为:7 11 13 17 19 21。注意:部分源程序给出如下。请勿改动主函数main 和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。试题程序:include<conio. h>include<stdio. h>define N 1000int fun (int n, int m, int bb [N]){int i, j, k=0, flag;for (j=n; j<=m; j++){【 】;for (i=2; i<j; i++)if(【 】){flag=0;break;}if(【 】)bb [k++] =j}return k;}main (){int n=0,m=0, i, k;int bb[N];clrscr ();printf ("Input n\n");scanf ("%d", n);printf ("Input m\n");scanf ("%d", m);for (i=0; i<m-n; i++)bb[i]=0;k=fun (n, m, bb);for (i=0; i<k; i++)printf ("%4d",bb [i]);}

考题 请编写函数fun( ),其功能是:将所有大于1小于整数m的素数存入xx所指数组中,素数的个数通过k传回。例如,输入25,则应输出2 3 5 7 11 13 17 19 23。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:include<conio.h>include<stdio.h>void fun(int m,int *k,int xx[ ]){}main( ){int m,n,zz[100];clrscr( );printf("/nPlease enter an integer number between 10 and 100:");scanf("%d",n);fun(n,m,zz);printf("\n\nThere are%d prime numbersless than %d:",m,n);for(n=0;n<m;n++)printf("\n %4d",zz[n]);}

考题 程序test.c的功能是:将大于整数m且紧靠m的k个素数存入数组XX。请考生编写函数num(intm,intk,intxx[])实现程序的要求,最后调用函数readwriteDAT0把结果输出到0ut.dat文件中。 例如,若输入17,5,则应输出:19,23,29,31,37。

考题 编写函数jsValue(int t),它的功能是:求Fibonacci数列中大于t的最小的一个数,结果由函数返回。其中Fibonacci数列F(n)的定义为: F(0)=0,F(1)=1 F(n)=F(n-1)+F(n-2) (n≥2) 最后调用函数writeDat读取l0个数据t,分别得出结果且把结果输出到文件out.dat中。 例如:当t=1000时,函数值为:1597。 注意:部分源程序存在test.c文件中。 请勿改动数据文件in.dat中的任何数据、主函数main和写函数writeDat的内容。

考题 关于下面函数,哪一个是错误描述?n为整数deffactorial(n):ifn A.求整数n的阶乘B.factorial(5)是函数调用C.是递归函数D.求任意两个数值n和n-1的乘积

考题 下面是通过建立计算阶乘的自定义函数计算组合C(M,N)一M!/(N!*(M—N))!)的值,其中的M,N通过键盘输入。请在( )处填上正确的语句。

考题 阅读以下说明、C函数和问题,将解答写入答题纸的对应栏内。【说明1】函数test_fl(int m,im n)对整数m、n进行某种运算后返回一个整数值。【c函数1】int test_f1 (int m,int n){ int k;k=mn?m:n;for(; (k%m! =O) I I (k%n! =0);k++);return k;)【问题1】(5分)(1)请写出发生函数调用test_fl(9,6)时,函数的返回值;(2)请说明函数test_f1的功能。【说明2】设在某c系统中为每个字符分配1个字节,为每个指针分配4个字节,sizeof(x)计算为x分配的字节数。函数test_12Q用于测试并输出该c系统为某些数据分配的字节数。【c函数2】void test_f2(){ char str[] =“NewWorld”; char*p=str; char i=‘\0’; VOid*ptr=malloc(50);printf(”%d\t”,sizeof(str));printf(“%d\n”,sizeof(p)),printf(”%d\t”,sizeof(i)); printf(”%d\n”,sizeof(ptr));}【问题2】(4分)请写出函数test_f2()的运行结果。【说明3】函数test_f3(char S[])的功能是:将给定字符串S中的所有空格字符删除后形成的串保存在字符数组tstr中(串S的内容不变),并返回结果串的首地址。【C函数3】char*test_f3(const char s[])( char tstr[50]=(‘\0’); unslgned int i,k=0;for(i=0;i(strlen(s);i++)if(s[i]!=‘’)tstr[k++]=s[i];return tStr ;)【问题3】(6分)函数test_f3()对返回值的处理有缺陷,请指出该缺陷并说明修改方法。