c语言习题及答案-爱课程mooc 下载本文

n++;

continue; }

if (t%7==0 && t<=21*7) { n++;

continue; } }

printf(\return 0; }

8.2

兔子生崽问题(4分)

题目内容:

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

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

(1)每月小兔对数 = 上个月成兔对数。

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

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

输入格式:无 输出格式:

每个月兔子对数的输出格式: \

第12个月的兔子总数的输出格式: \ 输入样例: 输出样例:

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

#include int creat(int n);

int main() {

int each,total,i;

for (i=1;i<=12;i++)

printf(\ printf(\return 0; }

int creat(int n) {

if (n==1 || n==2) return 1; else

return creat(n-1)+creat(n-2); }

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 a,b,c,d,i,j;

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

j=i*i; a=j/1000; d=j;

b=j00/100; c=j0/10;

if (a==b&&c==d&&a!=c)

printf(\ }

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 judge(); int i,j;

int m[5][5]={0}; int main()

{

for(i=0;i<5;i++)

for (j=0;j<5;j++)

scanf(\

if (judge()) {

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

for (j=0;j<5;j++)

printf(\ printf(\ } } else

printf(\

return 0; }

int judge () {

int l=0,r=0;

int s[5]={0},t[5]={0}; for (i=0;i<5;i++) for (j=0;j<5;j++) { s[i]+=m[i][j]; t[j]+=m[i][j]; if (i==j) l+=m[i][j]; if (i+j==4) r+=m[i][j]; } if (l!=r) return 0; for (i=0;i<5;i++) if (s[i]!=l||t[i]!=l) return 0; return 1; }

第九章

9.1

ISBN识别码判断(4分)

题目内容:

每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”就是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表