c#约瑟夫环

约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。

例如:

n = 9, k = 1, m = 5

【解答】

出局人的顺序为5, 1, 7, 4, 3, 6, 9, 2, 8。

阅读更多

C#窗体间传值

关于C#窗体间的数据传值的方法好几种,在项目中都各有应用,虽然简单,这里记录下来,分享给大家!

一、使用带参数的构造函数

主窗体

1
2
3
4
5
6
private void button_Click(object sender, System.EventArgs e)
{
// 将主窗体的控件值作为参数传递到子窗体
Form2 formChild = new Form2(this.textBoxFrm1.Text, this.checkBoxFrm1.Checked);
formChild.ShowDialog();
}

子窗体(Form2)

阅读更多

混沌序列

最近做信息安全方面的项目,看到一些关于混沌变换的论文,总结一番。

关于混沌

如果一个系统的演变过程对初始的状态十分敏感,就把这个系统称为是混沌系统。

在1972年12月29日,美国麻省理工教授、混沌学开创人之一E.N.洛仑兹在美国科学发展学会第139次会议上发表了题为《蝴蝶效应》的论文,提出一个貌似荒谬的论断:在巴西一只蝴蝶翅膀的拍打能在美国得克萨斯州产生一个龙卷风,并由此提出了天气的不可准确预报性。至此以后,人们对于混沌学研究的兴趣十分浓厚,今天,伴随着计算机等技术的飞速进步,混沌学已发展成为一门影响深远、发展迅速的前沿科学。

混沌来自于非线性动力系统,而动力系统又描述的是任意随时间变化的过程,这个过程是确定性的、类似随机的、非周期的、具有收敛性的,并且对于初始值有极敏感的依赖性。而这些特性正符合序列密码的要求。19**Robert Matthews在Logistic映射的变形基础上给出了用于加密的伪随机数序列生成函数,其后混沌密码学及混沌密码分析等便相继发展起来。混沌流密码系统的设计主要采用以下几种混沌映射:一维Logistic映射、二维He’non映射、三维Lorenz映射、逐段线性混沌映射、逐段非线性混沌映射等,在本文中,我们主要探讨一维Logistic映射的一些特性。

阅读更多

凯撒密码(一)

  “恺撒密码”据传是古罗马恺撒大帝用来保护重要军情的加密系统。(即今天我们所说的:替代密码)

  它是一种代换密码,通过将字母按顺序推后起3位起到加密作用,如将字母A换作字母D,将字母B换作字母E。据说恺撒是率先使用加密函的古代将领之一,因此这种加密方法被称为恺撒密码。

  假如有这样一条指令:

  明文(小写):ji xiao jing

  用恺撒密码加密后就成为:

阅读更多

凯撒密码(二)

上篇显示了用错误的key得到了错误的结果,现在使用正确的key

这样就得到了正确的结果。

当然,这个程序只是演示凯撒密码的一个思路,没有对其他符号加密,这样有个很严重的后果,就是很key容易被破解。

举例:(key是*不告诉你,嘿嘿)

阅读更多

C#网页自动填表自动登录

自动填表的方式有很多,关键是获取控件的id或者name。

比如源代码有

1
<input id="pwdInput" tabindex="2" class="ipt-t" type="password" name="password" onMouseOver="fEvent('mouseover',this)" onFocus="fEvent('focus',this)" onBlur="fEvent('blur',this)" onMouseOut="fEvent('mouseout',this)"/>

那么就可以用

1
2
3
4
5
6
7
8
9
10
HtmlDocument doc = webBrowser1.Document;
foreach (HtmlElement em in doc.All)
{
string str = em.Id;
if (str == "pwdInput")
{
em.SetAttribute("value", "abc"); break;

}
}
阅读更多

C#实现扫雷游戏中左右键同时点击

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
private MouseButtons Button;
private long Ticks;
private long TicksDelay = 100000L;

private void btn_Click(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
if (DateTime.Now.Ticks - Ticks < TicksDelay && Button == MouseButtons.Right)
{
//左右键"同时"(先左后右)

}
else
{
//左键

}
}
else if (e.Button == MouseButtons.Right)
{
if (DateTime.Now.Ticks - Ticks < TicksDelay && Button == MouseButtons.Left)
{
//左右键"同时"(先右后左)

}
else
{
//右键

}
}
Button = e.Button;
Ticks = DateTime.Now.Ticks;

}

C#数据结构程序举例

链表

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
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace list
{
class Program
{
static void Main(string[] args)
{
LinkedList<int> LinkList;
List<LinkedListNode<int>> Lnode;
LinkList = new LinkedList<int>();
Lnode = new List<LinkedListNode<int>>();
Lnode.Add(new LinkedListNode<int>(3));
Lnode.Add(new LinkedListNode<int>(1));
Lnode.Add(new LinkedListNode<int>(2));
LinkList.AddFirst(Lnode[2]);
LinkList.AddBefore(Lnode[2],Lnode[1]);
LinkList.AddAfter(Lnode[2],Lnode[0]);

foreach (int doc in LinkList)
{
Console.WriteLine(doc);
}

}
}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
using System;
using System.Collections;
using System.Linq;
using System.Text;

namespace stack
{
class Program
{
static void Main(string[] args)
{
Stack st = new Stack();
st.Push('A');
st.Push('B');
Console.WriteLine(st.Pop());
st.Push('C');
Console.WriteLine(st.Pop());
Console.WriteLine(st.Count);
Console.WriteLine(st.Pop());
st.Push('D');
Console.WriteLine(st.Pop());
}
}
}

队列

阅读更多

c#制作视频音频歌词相关技术代码记录

开发类似千千静听或者KMplayer等音频视频播放器播放字幕或者歌词的技术

从两方面着手,一是时间轴,二是帧(对于视频)。

方法一的实现比较简单,只需要内置一个定时器,在媒体播放时开始计时,然后读指定的脚本即可。

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
99
100
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.IO;
using System.Windows.Forms;


namespace MediaPlayer
{
public partial class Form6 : Form
{
private AxWMPLib.AxWindowsMediaPlayer axWindowsMediaPlayer2 = new AxWMPLib.AxWindowsMediaPlayer();
PictureBox pictureBox2 = new PictureBox();
private int t = 0;
private int count = 0;
private string filename;
private string[] info = new string[100];



public Form6(ref AxWMPLib.AxWindowsMediaPlayer axWindowsMediaPlayer1, ref PictureBox pictureBox1)
{
InitializeComponent();
this.Text = "视频分析";
timer1.Enabled = false;
axWindowsMediaPlayer2 = axWindowsMediaPlayer1;
pictureBox2 = pictureBox1;
}


private void timer1_Tick(object sender, EventArgs e)
{
t++;
label2.Text = t.ToString();


if (!info[count].Equals("end#"))
{
if (t == Int32.Parse(info[count].Substring(0, info[count].IndexOf(']'))))
{
richTextBox1.Text = info[count].Substring(info[count].IndexOf(']') + 1);

count++;
}
}


}

private void button1_Click(object sender, EventArgs e)
{
openFileDialog1.ShowDialog();
filename = openFileDialog1.FileName;
try
{
// Create an instance of StreamReader to read from a file.
// The using statement also closes the StreamReader.
using (StreamReader sr = new StreamReader(filename))
{
String line;
int i = 0;
// Read and display lines from the file until the end of
// the file is reached.
while ((line = sr.ReadLine()) != null)
{
info[i] = line;
i++;
}
sr.Close();
}
}
catch (Exception a)
{
// Let the user know what went wrong.
MessageBox.Show("读取错误");


MessageBox.Show(a.Message);
}
}

private void openFileDialog2_FileOk(object sender, CancelEventArgs e)
{
axWindowsMediaPlayer2.URL = openFileDialog2.FileName;
pictureBox2.Visible = false;
timer1.Enabled = true;
}


private void button2_Click(object sender, EventArgs e)
{
openFileDialog2.ShowDialog();
}

}
}

方法二需要利用DirectX开发,或者flash播放的技术拆解成帧然后播放

阅读更多

C#调用IE浏览器设置

1
2
3
4
using  System.Diagnostics;   
ProcessStartInfo Info=new ProcessStartInfo();
Info.FileName = "inetcpl.cpl ";
Process.Start(Info);