C语言程序设计编程精选44例(10)

2020-03-27 14:20

从1~N*N的各个数依次如下规则存放: (1) 1在第一行中间一列;

(2) 每一个数存放的行比前一个数的行数减一,列数加一(如上的三阶方阵5在4的上一行,后一列);

(3) 如果上一个数在第一行,则下一个数在最后一行,列数加一; (4) 如果上一个数在最后一列,则下一个数在第一列,行数减一;

(5) 如果按上述规则确定的位置已经有数,或上一个数在第一行第N列,则下一个数放在上一个数的正下方。

输入

输入包含多组数据,每组为一个小于100的正奇数。

输出

对于每个输入的N,输出N阶魔方阵;两组数据之间用一个空行分隔。方阵中每行每两个数之间有一个空格,行首和行末没有多余的空格。

样例输入

3

样例输出

8 1 6 3 5 7 4 9 2

解答:

#include int main() {

int i,j,k,n,row=1,col,temp_row,temp_col; int sqrt[100][100]={0}; scanf(\col=(n+1)/2;

for(i=1;i<=n*n;i++) {

sqrt[row][col]=i; temp_row=row; temp_col=col;

if(row==1&&col==n)

row++; else {

row--; col++; if(row==0) row=n; if(col>n) col=1;

if(sqrt[row][col]!=0) {

row=temp_row+1; col=temp_col; if(row>n) row=1; } } } j=1;

while(j<=n) { k=1;

while(k<=n) {

if(k%n==0)

printf(\ else

printf(\ k++; } j++; }

for(;scanf(\{

printf(\

int sqrt[100][100]={0}; col=(n+1)/2;

for(i=1;i<=n*n;i++) {

sqrt[row][col]=i; temp_row=row; temp_col=col;

if(row==1&&col==n) {

row++; } else {

row--; col++; if(row==0) row=n; if(col>n) col=1;

if(sqrt[row][col]!=0) {

row=temp_row+1;

col=temp_col; if(row>n) row=1; } } } j=1;

while(j<=n) { k=1;

while(k<=n) {

if(k%n==0)

printf(\ else

printf(\ k++; } j++; } } }

问题30: 兔子的繁殖问题

题目描述

假设一对兔子每月能生一对小兔(一雌一雄),每对小兔出生后的下一个月是没有繁殖能力的,至出生后的第三个月开始又可以每月生一队小兔,问从一对刚出生的小兔开始,经过若干个月后一共有多少兔子(假设在此过程中兔子没有死亡)?

这个问题是意大利数学家菲波那契(Fibonacci)在他1202年出版的《算盘全书》中提出来的,从第一对刚出生的小兔开始每月的兔子数被乘坐菲波那契序列。

输入

输入的第一个数为n,接下来有n个数字。每个数字为一个月份m(m<=45)。

输出

输出为n行,每行为第m个月后的兔子总数。

样例输入

6

1 2 3 4 5 10

样例输出

1 2 3 5 8 89

提示

可以先计算出菲波那契序列并存储下来,然后查询出每月兔子数。

解答:

#include int main() { int a[50],b[50]; int i,x,n; a[0]=1; a[1]=1; i=2; while(i<50) {

a[i]=a[i-1]+a[i-2]; i++; }

scanf(\ for(i=1;i<=x;i++) {

scanf(\ b[i]=a[n]; } for(i=1;i<=x;i++)

printf(\}

问题31: 简单的整数排序

题目描述

对给出的若干整数按从小到大排序。

输入

输入的第一个数为n(n<=1000),后接n个整数。

输出

按从小到大的顺序输出这些整数,每两个整数之间用一个空格分隔开,最后一个整数后面没有空格。

样例输入

10 3 9 1 5 2 8 5 6 7 3

样例输出

1 2 3 3 5 5 6 7 8 9

提示

排序前必须把所有的整数都存储下来。因为只有最多1000个数,1秒的时间足够任何排序算法运行处结果来。

解答:

/*本题使用插入排序*/ #include int main() { int a[1000]; int m,n,p,i,j; scanf(\ for(i=0;ia[j]) break; else p++; } m=a[j]; for(i=j;i>p;i--) a[i]=a[i-1]; a[p]=m; }


C语言程序设计编程精选44例(10).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:吉利自由舰常见故障案例汇编

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

马上注册会员

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