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 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 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 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 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]); }