中国大学MOOC-哈工大-C语言程序设计精髓第六-十二周编程题答案(2)

2018-12-21 12:01

case 4: day=30;break; case 5: day=31;break; case 6: day=30;break; case 7: day=31;break; case 8: day=31;break; case 9: day=30;break; case 10: day=31;break; case 11: day=30;break; case 12: day=31;break;

default:day=-1;printf(\); }

if((year%4==0&&year0!=0||year@0==0)&&month==2) day=29; if (day!=-1)

printf(\,day); return 0; }

7.1递归法计算游戏人员的年龄(4分)

题目内容:

有n个人围坐在一起,问第n个人多大年纪,他说比第n-1个人大2岁;问第n-1个人,他说比第n-2个人大2岁,.....,问第3个人,他说比第2个人大2岁;问第2个人,他说比第1个人大2岁。第1个人说自己10岁,问第n个人多大年纪。

递归函数原型:unsigned int ComputeAge(unsigned int n); 提示:

计算年龄的递归公式为:

#include

unsignedint ComputeAge(unsignedint n){ }

main() {

int i, j, k, s = 23, n, c, age; scanf(\, &n);

printf(\,8+2*n); }

7.2递归法计算两个数的最大公约数(4分)

题目内容:

利用最大公约数的性质计算。对正整数a和b,当a>b时,若a中含有与b相同的公约数,则a中去掉b后剩余的部分a-b中也应含有与b相同的公约数,对a-b和b计算公约数就相当于对a和b计算公约数。反复使用最大公约数的上述性质,直到a和b相等为止,这时,a或b就是它们的最大公约数。这三条性质,也可以表示为:

性质1 如果a>b,则a和b与a-b和b的最大公约数相同,即Gcd(a, b) = Gcd(a-b, b) 性质2 如果b>a,则a和b与a和b-a的最大公约数相同,即Gcd(a, b) = Gcd(a, b-a) 性质3 如果a=b,则a和b的最大公约数与a值和b值相同,即Gcd(a, b) = a = b

#include int gys(int a,int b) {

int r; r=a%b;

if(r==0) return b; elsereturn gys(b,r); }

main() {

printf(\); int a,b;

scanf(\, &a,&b); if (a<=0 || b<=0){

printf(\); } else

printf(\,gys(a,b)); }

7.3 寻找中位数v1.0(4分)

题目内容:

编写一个函数返回三个整数中的中间数。函数原型为: int mid(int a, int b, int c); 函数功能是返回a,b,c三数中大小位于中间的那个数。 输入格式: \

输出格式:\ 输入样例1: 12 6 18↙ 输出样例1: The_result_is_12

输入样例2: -9 7 -2↙ 输出样例2: The_result_is_-2

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串! (注意:在输出中,“_”代表空格,如果直接将上段示例粘贴到代码中,应将其替换为空格。)

#include

int median(int a, int b, int c) {

if(a

if(b

else{return a if(c>a){return a;}//c>a>b

else{return c>b? c: b;}//a>c>b: a>b>c } }

main() {

int a,b,c;

scanf(\, &a,&b,&c);

printf(\,median (a,b,c)); }

7.4

还原算术表达式(4分)

题目内容:

编写程序求以下算式中XYZ的值,其中两数XYZ与YZZ相加的和n(99

程序运行结果示例1:

Input n(n<1000): 532↙ X=3,Y=2,Z=1

程序运行结果示例2: Input n(n<1000): 977↙ Invalid

输入提示:\Input n(n<1000):\\n\ 输入格式: \

输出格式:\ 计算不成功(无解)的输出提示:\

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!

#include main() {

printf(\); int a,b,c,n,s,x,y,z,flag=0; scanf(\, &n); for (x=1;x<=9;x++){ for (y=1;y<=9;y++){ for (z=0;z<=9;z++){

if (x*100+y*10+z+y*100+z*11 == n){ flag=1;

a=x,b=y,c=z; break; } } } }

if (flag)

printf(\,a,b,c); else printf(\); }

8.1矩阵转置v1.0(4分)

题目内容:

用二维数组作为函数参数,编程计算并输出n×n阶矩阵的转置矩阵。其中,n的值不超过10,n的值由用户从键盘输入。

程序运行结果示例1: Input n:3↙ Input 3*3 matrix: 1 2 3↙ 4 5 6↙ 7 8 9↙

The transposed matrix is: 1 4 7 2 5 8 3 6 9

程序运行结果示例2: Input n:2↙ Input 2*2 matrix: 1 2↙ 4 5↙

The transposed matrix is: 1 4 2 5

#include int main(){

printf(\); int n;

scanf(\,&n);

printf(\,n,n); int m[n][n],i,j; for (i=0;i

scanf(\,&m[i][j]); } }

printf(\); for (i=0;i

printf(\,m[j][i]);

}


中国大学MOOC-哈工大-C语言程序设计精髓第六-十二周编程题答案(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:桑树病虫害后期防治

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: