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

2018-12-21 12:01

printf(\); }

return 0; }

8.2 兔子生崽问题(4分)

题目内容:

假设一对小兔的成熟期是一个月,即一个月可长成成兔,那么如果每对成兔每个月都可以生一对小兔,一对新生的小兔从第二个月起就开始生兔子,试问从一对兔子开始繁殖,n(n<=12)月以后可有多少对兔子(即当年第n月份总计有多少对兔子,含成兔和小兔)?请编程求解该问题,n的值要求从键盘输入。

参考答案:依题意,兔子的繁殖情况如图所示。图中实线表示成兔仍是成兔或者小兔长成成兔;虚线表示成兔生小兔。观察分析此图可发现如下规律: (1)每月小兔对数 = 上个月成兔对数。

(2)每月成兔对数 = 上个月成兔对数 + 上个月小兔对数。 综合(1)和(2)有:每月成兔对数 = 前两个月成兔对数之和。

用fn(n=1,2,…)表示第n个月成兔对数,于是可将上述规律表示为如下递推公式:

#include int main(){

printf(\); int n,total=0,i,s=0,b=1,t; scanf(\,&n); printf(\,1); for (i=2;i<=n;i++){ t=s; s=b; b=b+t;

printf(\,s+b); }

printf(\,s+b); return 0; }

8.3

抓交通肇事犯(4分)

题目内容:

一辆卡车违犯交通规则,撞人后逃跑。现场有三人目击事件,但都没记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是位数学家,他说:四位的车号刚好是一个整数的平方。现在请根据以上线索帮助警方找出车号以便尽快破案。

[提示]:假设这个4位数的前两位数字都是i,后两位数字都是j,则这个可能的4位数

k = 1000*i + 100*i + 10*j + j

式中,i和j都在0~9变化。此外,还应使k=m*m,m是整数。由于k是一个4位数,所以m值不可能小于31。

输入格式: 无

输出格式:\k=%d,m=%d\\n\

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

#include int main(){

int i,j,k,m,tk,tm; for (i=0;i<=9;i++){ for (j=0;j<=9;j++){

for (m=31;m<100;m++){

k = 1000*i + 100*i + 10*j + j; if (i!=j && m*m==k){ tm=m; tk=k; break; } } } }

printf(\,tk,tm); return 0; }

8.4

检验并打印幻方矩阵。(4分)

题目内容:

幻方矩阵是指该矩阵中每一行、每一列、每一对角线上的元素之和都是相等的。从键盘输入一个5×5的矩阵并将其存入一个二维整型数组中,检验其是否为幻方矩阵,并将其按指定格式显示到屏幕上。 输入格式: \输出格式:

如果是幻方矩阵,输出提示信息: \ 矩阵元素的输出:\(换行使用\)

如果不是幻方矩阵,输出提示信息: \ 输入样例1: 17_24_1_8_15 23_5_7_14_16 4_6_13_20_22 10_12_19_21_3 11_18_25_2_9

(输人样例中“_”代表空格) 输出样例1: It is a magic square! **17**24***1**8**15 **23***5***7**14**16 ***4***6**13**20**22 **10**12**19**21***3 **11**18**25***2***9 (输出样例中“*”代表空格) 输入样例2: 1_0_1_6_1 3_1_1_1_1 1_1_1_1_2 1_1_1_1_1 9_1_7_1_1

(输人样例中“_”代表空格) 输出样例2:

It is not a magic square!

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串! (输人样例中“_”代表空格,输出样例中“*”代表空格)

#include int main() {

int a[5][5],i,j,t,row[5]={0},col[5]={0},dl1=0,dl2=0,flag=1; for (i=0;i<5;i++){ for (j=0;j<5;j++){

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

for (i=0;i<5;i++){ for (j=0;j<5;j++){ row[i]+=a[i][j]; } }

for (i=0;i<5;i++){ for (j=0;j<5;j++){ col[i]+=a[j][i]; }

}

for (i=0;i<5;i++){ dl1+=a[i][i];

dl2+=a[4-i][4-i]; }

for (i=0;i<4;i++){

if (col[i]!=col[i+1]){ flag=0; break; }

if (row[i]!=row[i+1]){ flag=0; break; } }

if (col[1]!=row[1]){ flag=0; }

if (dl1!=dl2){ flag=0;

}

if (dl1!=col[1]){ flag=0; }

if (flag){

printf(\); for (i=0;i<5;i++){ for (j=0;j<5;j++){

printf(\,a[i][j]); }

printf(\); }

}

}

else{

printf(\); }

return 0;

9.1

重复数字检查(4分)

题目内容:

从键盘输入一个数,检查这个数中是否有重复出现的数字。如果这个数中有重复出现的数字,则显示“Repeated digit!”;否则显示“No repeated digit!”。 已知函数原型:

int CountRepeatNum(int count[], int n); 若有重复数字,则该函数返回重复出现的数字;否则返回-1. 程序运行结果示例1: Input n: 28212↙ Repeated digit!

程序运行结果示例2: Input n: 12345↙

No repeated digit!

输入提示:\输入格式: \ 输出格式:

有重复数字,输出信息: \ 没有重复数字,输出信息: \

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

#include int main() {

int log[10]= {0},a[100]; int b,i=0,n,c,d;

printf(\); scanf(\,&n); while(n!=0) {

b=n;


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

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

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

马上注册会员

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