[c语言程序中怎样用rand函数编写一个从1到33中任选6个不同的数的程]先建一个数组ay= {1,……33}, 指针*p = ay 首先,了解rand()/33 即是从0-32中任选一个数 则第一个数a = *(p+rand()/33) 然后,从剩下32数中任选一个数b,过程如下: for(int i = a; i...+阅读
编写程序,实现如下表所示的5-魔方阵。
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
5-魔方阵
问题分析
所谓“n-魔方阵”,指的是使用1〜n2共n2个自然数排列成一个n*n的方阵,其中n为奇数;该方阵的每行、每列及对角线元素之和都相等,并为一个只与n有关的常数,该常数为n*(n2+1)/2。
例如5-魔方阵,其第一行、第一列及主对角线上各元素之和如下:
第一行元素之和:17+24+1+8+15=65
第一列元素之和:17+23+4+10+11=65
主对角线上元素之和:17+5+13+21+9=65
而 n*(n2+1)/2=5*(52+1)/2=65 可以验证,5-魔方阵中其余各行、各列及副对角线上的元素之和也都为65。
假定阵列的行列下标都从0开始,则魔方阵的生成方法为:在第0行中间置1,对从2开始的其余n2-1个数依次按下列规则存放:
(1) 假定当前数的下标为(i,j),则下一个数的放置位置为当前位置的右上方,即下标为(i-1,j+1)的位置。
(2) 如果当前数在第0行,即i-1小于0,则将下一个数放在最后一行的下一列上,即下标为(n-1,j+1)的位置。
(3) 如果当前数在最后一列上,即j+1大于n-1,则将下一个数放在上一行的第一列上,即下标为(i-1,0)的位置。
(4) 如果当前数是n的倍数,则将下一个数直接放在当前位置的正下方,即下标为(i+1,j)的位置。算法设计
在设计算法时釆用了下面一些方法:定义array()函数,array()函数的根据输入的n值,生成并显示一个魔方阵,当发现n不是奇数时,就加1使之成为奇数。
使用动态内存分配与释放函数malloc()与free(),在程序执行过程中动态分配与释放内存,这样做的好处是使代码具有通用性,同时提高内存的使用率。
在分配内存时还要注意,由于一个整型数要占用两个内存,因此,如果魔方阵中要存放的数有max个,则分配内存时要分配2*max个单元,从而有malloc(max+max)。在malloc()函数中使用max+max而不是2*max是考虑了程序运行的性能。
显然应该使用二维数组来表示魔方阵,但虽然数组是二维形式的,而由于内存是一维线性的,因此在存取数组元素时,要将双下标转换为单个索引编号。在程序中直接定义了指针变量来指向数组空间,即使用malloc()函数分配的内存。
以下为关联文档:
C语言程序设计编写函数number展开全部 #include int number(int x, int w) { //返回整数number的从右往左数的第W位的数,如果x不满足w位,则返回-1。 if(x < 0) x = -x; while(--w > 0) { x /= 10; if(x ==...
如何使用vs2015编写c语言1.创建项目,【文件】》【新建】》【项目】 2.项目类型为【Win32控制台应用程序】,自己定义项目名称,确定 3.按照Win32应用向导完成设置,【下一步】即可 4.选择应用类型为【控制...
如何用VS2012编写c语言打开vs2012——文件——新建——项目 单击(如zhidao图) 在对话框左侧分别找到模板——其他语言——visual c++——win32(如图) 选择“win32控制台应用程序”并设置好”名称“和...
如何使用visualstudio编写c语言程序1电脑上安装微软公司的VS2013,可以从dreamspark 上下载正版或通过其他途径获得,安装即可。 2 打开VS2013, 3 可以通过点击文件 - - 新建 - - 项目 建立工程或者点击 欢迎页的...
编一首歌曲编写虫儿飞我们都约定再会 请记得曾经最美 虫儿飞 云儿追 春光亦相随 静静的风吹浪尾 摇曳的星辉无眠 一席梦 一夜泪 蝉声依旧美 秋叶飞 冬雪坠 时光依然铭记谁 冬春夏秋 与你同走 暖...
用c语言编写一个计算机病毒的例子简单啊 void main() { while(1) {} }//死循环,电脑用不了 或者这样 void main() { while(1) { char *a=new char(1024); } }//吃光你的内存 还能这样 #include #include void...
谁有C语言编写的病毒源代码一个c病毒源代码#include#include#include#include#include#pragma comment(lib,"shlwapi.lib")#define TIMER 1//计时器//functionLRESULT CALLBACK WndProc(HWND, UINT, WPA...
用C语言编个小游戏// pukepai.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include#include#define N 100 #define M 21 void swapnum(int n, int m) { int tmp = 0; tmp = n;...
C语言编的小游戏谁帮我看看估计是把回车也接收了,我自定义了一个ch函数解决这个问题,但阁下还要注意一点,用户输入的数据可能是大写也肯能是小写字母,但程序中好像认大写字母。。 #include#include#includ...