《12月10日上机题目及答案(函数和数组)》由会员分享,可在线阅读,更多相关《12月10日上机题目及答案(函数和数组)(11页珍藏版)》请在金锄头文库上搜索。
1、12月10日上机测试 (函数和数组)题目与答案南京大学 计算机科学与技术系 Base of Programming2题目一1.写两个函数计算从m中选n的组合数即计算 , 一个函数不使用递归的方法计算,一个函数使用递归 方法计算,函数函数原型可分别声明如下:(12分)int comb_loop(int m, int n);int comb_recursion(int m, int n); ( )用main函数调用两函数并打印结果。算法与思路1.非递归算法主要是利用循环实现组合公式或南京大学 计算机科学与技术系 Base of Programming3int comb_loop(int m,int
2、 n) int i , temp, a, b, c;for(i=1,a=1;i(m-n); i-)a=a*i;for (i=1; ix;n=x;n0=0;while(m=n0;i-) an-1i=m+;/赋值下排for(i=n-2;i=n0+1;i-) ain0=m+;/赋值左排n0+;n-;if(x%2=1) a(x-1)/2(x-1)/2=x*x;for(i=0;icol2;col-)/横向左赋值n-1 arrrowcol = first+; for(;rowrow2;row-)/列向上赋值n-1 arrrowcol = first+; if(n-row1)/没有完成,调用递归完成下一圈赋
3、值 huihuan(n-1,row+1,col+1,first); else if(n-row=1)/n是奇数时,要单独处理中心数 arrrowcol=first; return 0; int arr1010; int n; void main() cinn; huihuan(n,0,0,1); for(int i=0;in;i+)/输出矩阵 for(int j=0;jn;j+) coutarrij“t“; coutendl; 常见错误1.大多数同学只能正常打印第一圈,里面的 循环条件和关系没有找对,不能正确对数 组赋值; 2.有同学采用每层每 列逐次赋值,如:南京大学 计算机科学与技术系 B
4、ase of Programming10const int N=5; int aNN; int main () int i,j,n=1;for (n=1;n=25;n+)if (n=5) a0n-1=n;else if (n=9) an-54=n;else if (n=13) a413-n=n;else if (n=16) a17-n0=n;else if (n=19) a1n-16=n;else if (n=21) an-183=n;else if (n=23) a324-n=n;else if (n=25) a2n-23=n;for (i=0;i=4;i+) for (j=0;j=4;j+) coutaij“ “;coutendl; 谢 谢!