C语言 如何用给定的数字(每个数字只能用一次且必须用一次),产生不重复且全面的数组

Python013

C语言 如何用给定的数字(每个数字只能用一次且必须用一次),产生不重复且全面的数组,第1张

这是求取全排列问题,得出的数组个数是n的阶乖。下面是我写的一段代码 string str1, str2, temp, outstr, prestr, poststrstring[] zh = new string[210]int[,] qpl = new int[720, 7]string[,] jc = new string[151200, 2]int index = 0int onenum = 0StreamWriter sw = new StreamWriter(@"D:\aa.txt", false, Encoding.Default, 2048)str1 = str2 = "1111110000"while (str2.Substring(0, 4) != "0000") { outstr = ""prestr = ""poststr = ""for (int ii = 0ii <10ii++) { if (str2.Substring(ii, 1) == "1") outstr += String.Format("{0}", ii)} sw.WriteLine(outstr)zh[index++] = outstr//////////////////// prestr = str1.Substring(0, str1.IndexOf("10"))onenum = 0for (int ii = 0ii <prestr.Lengthii++) { if (prestr.Substring(ii, 1) == "1") onenum++} temp = ""for (int ii = 0ii <onenumii++) temp += "1"for (int ii = onenumii <prestr.Lengthii++) temp += "0"prestr = tempif (str1.IndexOf("10") <8) { poststr = str1.Substring(str1.IndexOf("10") + 2, 10 - str1.IndexOf("10") - 2)} else { poststr = ""} str2 = String.Format("{0}01{1}", prestr, poststr)//sw.WriteLine(str2)str1 = str2} outstr = ""for (int ii = 0ii <10ii++) { if (str2.Substring(ii, 1) == "1") outstr += String.Format("{0}", ii)} sw.WriteLine(outstr)zh[209] = outstrindex = 0for (int a = 0a <6a++) { for (int b = 0b <6b++) { for (int c = 0c <6c++) { for (int d = 0d <6d++) { for (int ee = 0ee <6ee++) { for (int f = 0f <6f++) { if ((a == b) || (a == c) || (a == d) || (a == ee) || (a == f) || (b == c) || (b == d) || (b == ee) || (b == f) || (c == d) || (c == ee) || (c == f)|| (d == ee) || (d == f) || (ee == f)) continueelse { qpl[index, 0] = aqpl[index, 1] = bqpl[index, 2] = cqpl[index, 3] = dqpl[index, 4] = eeqpl[index, 5] = findex++outstr = String.Format("{0}{1}{2}{3}{4}{5}", a, b, c, d, ee, f)sw.WriteLine(outstr)} } } } } } } for (int ii = 0ii <210ii++) { for (int jj = 0jj <720jj++) { outstr = String.Format("{0}{1}{2}{3}{4}{5}", zh[ii].Substring(qpl[jj, 0], 1), zh[ii].Substring(qpl[jj, 1], 1), zh[ii].Substring(qpl[jj, 2], 1), zh[ii].Substring(qpl[jj, 3], 1), zh[ii].Substring(qpl[jj, 4], 1), zh[ii].Substring(qpl[jj, 5], 1))jc[ii * 720 + jj, 0] = outstrsw.WriteLine(outstr)} } sw.Close()sw = new StreamWriter(@"D:\all.txt", false, Encoding.Default, 2048)这里输出的文件是全排列 for (int ii = 0ii <112240) { index = rd.Next(0, 151199)if (jc[index, 1] != "1") { jc[index, 1] = "1"ii++sw.WriteLine(jc[index, 0])} } sw.Close()MessageBox.Show("OK")

这个你需要看C语言的或是其他高级语言的说明;

void function(reference)

这个是定义一个函数的一种格式,function代表你定义的函数名称,方便你在其他函数中调用需要先声明;

reference,代表参变量,即你函数体与reference的关系;

void,代表你函数返回的数值为void(空);

void应该是C语言的关键字,

参考

http://wenku.baidu.com/link?url=RDLJXZHNjBaL7_RlqOqNYTepja1XZkc2-3POqhQ6QPlSnAWIdOM1OWeGZpZ6c0N4EBCO1pBj-XhauizTtBDlTmzuZUBTEdN4fxrhwnLyZMu

第三页

Void关键字是在ANSI C标准中才引入的新的关键字。

Void

关键字有以下三个用途。

1.用来修饰函数的返回值 如:void main()

2.用来声明函数的入口参数

如:int main(void)

3.用来声明空类型指针

如:void *malloc(int)

在这里面,其实你这个

void speak(void) 与void speak()一样的,我在编程时是按后者来的,即在其他函数体中调用时,无参数,即调用就执行;

你说的因该是Gnome

gnome[n�0�5um] n. [C]地精,土地神(传说居于地下守护财宝的年老侏儒).

 

GNOME 即GNU网络对象模型环境 (The GNU Network Object Model Environment),GNU计划的一部分,开放源码运动的一个重要组成部分。 是一种让使用者容易操作和设定电脑环境的工具。

目标是基于自由软件,为Unix或者类Unix操作系统构造一个功能完善、操作简单以及界面友好的桌面环境,他是GNU计划的正式桌面。

GNOME计划是1997年8月由Miguel de Icaza和Federico Mena发起,作为KDE的替代品。

使用孟加拉国语的GNOMEKDE是一个基于Qt部件工具箱自由的桌面环境,而QT是由Trolltech开发,当时并未使用自由软件许可。GNU项目的成员关注于使用象这样的一种工具箱构造自由的软件桌面和应用软件,从而发起两个项目:一个是作为纯粹Qt库替代品的“Harmony”;还有就是目的在于使用完全与Qt无关的自由软件构造桌面系统的GNOME项目。

在GNOME变得实用和普及之后,2000年9月Trolltech在GNU GPL和QPL(去掉了大多数争论多年的内容)双重许可证下发布了GNU/Linux版的QT库。但是Qt的许可证还是在许多人中间有争议,因为GPL用于库时对与之链接的代码-例如的KDE框架和任何为其编写的程序-都施加了许可证限制。

GIMP Toolkit(GTK+)被选中做为Qt toolkit的替代,担当GNOME桌面的基础。GTK+使用GNU宽通用公共许可证(LGPL,一个自由软件许可证),允许链接到它的软件——例如GNOME的应用程序——使用任意的许可证。GNOME桌面的库使用LGPL,而GNOME计划内的应用程序使用GPL许可证。

GNOME桌面系统使用C语言编程,但也存在一些其它语言的绑定使得能够使用其它语言编写GNOME应用程序,例如C++, Java, Ruby, C#, Python, Perl 等等。

 在GNOME之下还有很多子计划,现在它们并不是都包含在GNOME发布版里。一些基于概念的纯粹试验性质的有朝一日或许加入稳定的GNOME软件,其它还有一些正在完善以便直接加入。例如:

GNOME存储

D-BUS

尽管GNOME应用软件可以使用很多编程语言,但是作为GNOME发行版一部分的GNOME桌面纯粹用C写成。关于是否使用其它高级语言C#,Python和Java等正在深入讨论。这些语言都已经用于开发GNOME应用程序,但是如果用于GNOME核心应用的开发就必须在所有GNOME安装中加入相应的虚拟机。这会抬高可以运行GNOME桌面的计算机的最低配置要求。

正常的 留着吧 删不删无所谓