2017.11.3 关于C语言程序设计现代方法第9章第5题&&第8章第17题
来源:互联网 发布:java date 格式化毫秒 编辑:程序博客网 时间:2024/06/13 19:03
幻方问题。
我的代码如下,如有错误,恳请指正:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99100
#include <stdio.h>#define N 99void create_magic_square(int n,int magic_square[N][N]);void print_magic_square(int n,int magic_suqre[N][N]);int main(void){ int n;conti: printf("This program creates a magic square of a specified size.\n"); printf("The size must be an odd number between 1 and 99.\n"); printf("Enter size of magic square: \n"); scanf("%d",&n);//获取幻方的大小。 printf("\n"); if ( n % 2 == 0 || n > 99) { printf("Illegal input!\n\n"); goto conti;//按照题目要求输入99以内的奇数,如果不满足条件,则继续输入。 } int magic_square[N][N];//假设幻方大小为99*99。 create_magic_square(n,magic_square); print_magic_square(n,magic_square);//输出幻方。 return 0;}void create_magic_square(int n,int magic_square[N][N]){ int x,y,mid,max,i,flag[N][N] = {0};//flag数组用来标识被占用的数组。//全部初始化为0,每占用一个,把1赋给相应的flag。 int sx,sy;//sx和sy用来存储每次循环前x和y的位置。//如果遇到要走的位子被占的情况下,可以直接//在原来的sx和sy的基础上移动。向下移动即y+1。//(因为在下面的运算过程中,会改变x和y的值)//sx和sy是为了下一步位子被占的情况准备的。 mid = n / 2;//奇数除以二得中间的位子。 max = n * n;//幻方中数字的最大值。 x = mid; y = 0;//初始化x,y。 magic_square[x][y] = 1;//使第0行中间一个数字为1。 flag[x][y] = 1;//标识第0行中间一个数字已经被占用。 for (i = 2;i <= max;i++)//从2开始循环,一直到max循环结束。 { sx = x; sy = y; if ( (x + 1) > (n - 1)) { x = 0; }//如果越界,则绕回。 else { x = x + 1; }//如果没有越界,则继续。 if ( (y - 1) < 0) { y = n - 1; } else { y = y - 1; } if (flag[x][y] == 0) { magic_square[x][y] = i; flag[x][y] = 1; }//对于没有被占用位子的情况进行操作。 else { x = sx; y = sy; y = y + 1; magic_square[x][y] = i; flag[x][y] = 1; }//对于下一步位子被占用的情况进行操作。 }}void print_magic_square(int n,int magic_square[N][N]){ int x,y; for (y = 0;y < n;y++) { for (x = 0;x < n;x++) { printf("%3d",magic_square[x][y]); } printf("\n");//每n行,一个换行符。 }//输出幻方。}
阅读全文
0 0
- 2017.11.3 关于C语言程序设计现代方法第9章第5题&&第8章第17题
- 2017.11.3 关于C语言程序设计现代方法第9章第8题
- 2017.11.2 关于C语言程序设计现代方法第8章第9题
- c语言程序设计现代算法第8章第9题
- 简单 随机步法 C语言程序设计现代方法 第二版 第8章 编程题9
- 简单 凯撒加密 C语言程序设计现代方法 第二版 第8章 15题 列2
- C语言程序设计现代方法---第13章:字符串
- C语言程序设计现代方法---第14章:预处理器
- 关于《C语言程序设计现代方法》第15章例子“文本格式化”的理解
- C语言程序设计现代方法——学习笔记(第10章)
- C语言程序设计:现代方法(第2版)的评论
- C语言程序设计现代方法(第2版)
- 第1章 C语言程序设计
- C语言程序设计(第二版)第3章编程题
- C语言程序设计(第二版)第6章编程题
- C语言程序设计第1章习题
- c语言程序设计第2章知识点
- c语言程序设计第6章数组知识点
- hostname
- 文章标题
- 分享一个白帽交流灵感的社区——先知技术安全社区
- Caffe从入门到精通07
- JS——Factory(工厂)模式
- 2017.11.3 关于C语言程序设计现代方法第9章第5题&&第8章第17题
- 关于C#开发中那些编码问题
- web.xml 中的listener、 filter、servlet 加载顺序及其详解
- 注解
- 基于C#的Http参数化请求工具
- 开发中 ios 11.0系统遇到的坑及解决办法
- IT连创业系列:说说苹果商店AppStore上架App应用前后遇到的那些神坑
- [贪心] Codeforces #545D. Queue
- Presto 集群管理工具