算法程序
1. 算法源程序
C# 程序如下,思想是用位移运算(符号“<<”、“>>”)。
private void button1_Click(object sender, System.EventArgs e)
{
string str1,str2,str3,str4;
str4 = textBox1.Text;
str1 = str4.Substring(0,str4.IndexOf("."));
str4 = str4.Remove(0,str4.IndexOf(".")+1);
str2 = str4.Substring(0,str4.IndexOf("."));
str4 = str4.Remove(0,str4.IndexOf(".")+1);
str3 = str4.Substring(0,str4.IndexOf("."));
str4 = str4.Remove(0,str4.IndexOf(".")+1);
long int1,int2,int3,int4;
int1 = long.Parse(str1);
int2 = long.Parse(str2);
int3 = long.Parse(str3);
int4 = long.Parse(str4);
int3 = int3<<8;
int2 = int2<<16;
int1 = int1<<24;
long result;
result = int1+int2+int3+int4;
textBox1.Text = result.ToString();
}
程序还没判断输入数据的合法性,楼主自己加上去就可以了。
判断IP地址的合法性可以用System.Net里的IPAddress类型。就是用IPAddress.Parse方法尝试着把一个string转换成IP地址,如果失败,就表示不合法。
如果还有什么疑问可以加我QQ15076723
-----------------------------------
恩。现在把整个程序写好了,贴上来:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Net;
namespace ConvertIP
{
/// <summary>
/// Form1 的摘要说明。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.TextBox textBox2;
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.textBox1 = new System.Windows.Forms.TextBox();
this.button1 = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label();
this.textBox2 = new System.Windows.Forms.TextBox();
this.SuspendLayout();
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(8, 40);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(168, 23);
this.textBox1.TabIndex = 0;
this.textBox1.Text = "127.0.0.1";
//
// button1
//
this.button1.Location = new System.Drawing.Point(40, 104);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(104, 24);
this.button1.TabIndex = 1;
this.button1.Text = "Go!";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// label1
//
this.label1.Location = new System.Drawing.Point(8, 8);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(168, 23);
this.label1.TabIndex = 2;
this.label1.Text = "将IP地址转换成数字:";
//
// textBox2
//
this.textBox2.Location = new System.Drawing.Point(8, 72);
this.textBox2.Name = "textBox2";
this.textBox2.ReadOnly = true;
this.textBox2.Size = new System.Drawing.Size(168, 23);
this.textBox2.TabIndex = 3;
this.textBox2.Text = "";
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(7, 16);
this.ClientSize = new System.Drawing.Size(192, 136);
this.Controls.Add(this.textBox2);
this.Controls.Add(this.label1);
this.Controls.Add(this.button1);
this.Controls.Add(this.textBox1);
this.Name = "Form1";
this.Text = "ConvertIP";
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void Form1_Load(object sender, System.EventArgs e)
{
}
private void button1_Click(object sender, System.EventArgs e)
{
textBox1.Enabled = false;
IPAddress InputIP;
try
{
InputIP = IPAddress.Parse(textBox1.Text);
textBox1.Text = InputIP.ToString();
}
catch
{
MessageBox.Show("请输入正确合法的IP地址!","错误");
textBox1.Enabled = true;
return;
}
string str1,str2,str3,str4;
str4 = textBox1.Text;
str1 = str4.Substring(0,str4.IndexOf("."));
str4 = str4.Remove(0,str4.IndexOf(".")+1);
str2 = str4.Substring(0,str4.IndexOf("."));
str4 = str4.Remove(0,str4.IndexOf(".")+1);
str3 = str4.Substring(0,str4.IndexOf("."));
str4 = str4.Remove(0,str4.IndexOf(".")+1);
long int1,int2,int3,int4;
int1 = long.Parse(str1);
int2 = long.Parse(str2);
int3 = long.Parse(str3);
int4 = long.Parse(str4);
int3 = int3<<8;
int2 = int2<<16;
int1 = int1<<24;
long result;
result = int1+int2+int3+int4;
textBox2.Text = result.ToString();
textBox1.Enabled = true;
}
}
}
2. 算法与程序的区别与联系
算法和程序的区别是:
(1) 两者定义不同。算法是对特定问题求解步骤的描述,它是有限序列指令。而程序是实现预期目的而进行操作的一系列语句和指令。
说通俗一些算法是解决一个问题的思路,程序,是解决这些问题所具体好写的代码。算法没有语言界限。他只是一个思路。为实现相同的一个算法,用不同语言编写的程序会不一样。
(2)两者的书写规定不同。程序必须用规定的程序设计语言来写,而算法很随意。算法是一系列解决问题的清晰指令,也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。算法常常含有重复的步骤和一些逻辑判断。
简单算法举例 例:求 1*2*3*4*5
步骤 1 :先求 1*2 ,得到结果 2 。
步骤 2 :将步骤 1 得到的乘积 2 再乘以 3 ,得到结果 6 。
步骤 3 :将步骤 2 得到的乘积 6 再乘以 4 ,得到结果 24 。
步骤 4 :将步骤 3 得到的乘积 24 再乘以 5 ,得到最后结果 120 。
算法与程序的联系 :
算法和程序都是指令的有限序列 ,但是程序是算法,而算法不一定是 程序。程序 = 数据结构 + 算法。算法的主要目的在于为人们提供阅读了解所执行的工作流程与步骤。数据结构与算法要通过程序的实现,才能由计算机系统来执行。可以这样理解,数据结构和算法形成了可执行的程序。
(2)算法程序扩展阅读
算法的要素:
一、数据对象的运算和操作:计算机可以执行的基本操作是以指令的形式描述的。一个计算机系统能执行的所有指令的集合,成为该计算机系统的指令系统。一个计算机的基本运算和操作有如下四类:
1、算术运算:加减乘除等运算。
2、逻辑运算:或、且、非等运算。
3、关系运算:大于、小于、等于、不等于等运算。
4、数据传输:输入、输出、赋值等运算。
二、算法的控制结构:一个算法的功能结构不仅取决于所选用的操作,而且还与各操作之间的执行顺序有关。
3. 设计一个算法程序
试题答案:(1)算法步骤:
第一步:使i=1;
第二步:使S=0;
第三步:使S=S+2i;
第四步:使i+1;
第五步:如果i>10,则输出S,结束算法;否则,返回第三步,继续执行算法.
(2)算法的程序框图:
4. 算法与程序有何区别和联系
联系:程序是计算机指令的有序集合,是算法用某种程序设计语言的表述,是算法在计算机上的具体实现。
区别:
一、形式不同
1、算法:算法在描述上一般使用半角式化的语言。
2、程序:程序是用形式化的计算机语言描述的。
二、性质不同
1、算法:算法是解决问题的步骤。
2、程序:程序是算法的代码实现。
三、特点不同
1、算法:算法要依靠程序来完成功能。
2、程序:程序需要算法作为灵魂。
5. 什么是算法,程序
程序 = 算法+数据结构
算法就是要实现某个功能的方法,比如要算加法a+b+c,我们可以用(a+b)+c来实现,也可以用a+(b+c)来实现,当然这个例子很幼稚,但是说明一个问题,就是说算法就是解决问题的一种方法。但是从深的来说,算法又有很多种,常见的有分治算法,动态规划,NP不完全理论,递归算法.....很多了,算法是一个程序的核心,算法比较难,但是学好算法的话,对以后的工作等等都是有很大帮助的。
6. 程序=数据结构+算法
数据结构:线性(Linear)、树型(Tree)、图(Graph)
算法:排序(Sort)、查找(Search)、枚举(Enum)等等...
算法解决的是数据结构中的“增删改查”,数据结构为的是让计算机理解我们需要解决的问题是什么东西。
一个问题,让计算机理解它是什么,然后我们通过‘增删改查’来达到解决问题的期望。
框架(framework)这个在2000年之前,其实计算机软件开发当中并不怎么使用这个词,那个时候我们经常会说的是库,SDK,API,例如:Win32 API,游戏开发中,我们也不叫框架,叫“引擎”,后来2000年后才逐步的开始使用这个名词。框架实际上是利用设计模式,将某类型软件开发中的常见问题,常用功能进行"封装"(框架名词与OOP关系很深)以达到更好的代码复用率(少写代码),并且让程序的设计工作以框架为主干(骨骼)进行扩展和开发,也就是给你画个框框,你的开发在这个框框中,框架决定你的开发模式、框架中提供的API决定了你编码方式(接口),所谓的框架无非是利用了所谓的23种常见“软件设计模式”中的一些模式来组织代码,然后让使用框架的人,陷入这个条条框框中,按照对方给你的API来进行软件开发。
好处就是:标准化、简单化
坏处就是:(依赖)框架的人,严格来说都是程序搬砖工而已
从开发成本的角度来看,框架可以缩短我们的开发周期,但从学习的角度来看,还不如深入的去了解数据结构与算法以及设计模式,我们可以使用框架,但不要依赖框架。
数据结构:就是让基本数据类型和复合数据类型以某种结构化的组织方式在计算机上进行数据的存储,而算法就是我们如何利用这些结构化的数据来解决实际问题方法。
计算就是一个IO设备,input -> (CPU、Memory、Storage) -> output
数据结构解决如何组织数据的输入、数据的存储、数据的输出
算法解决如何输入、如何处理数据计算、如何输出
数据结构与算法是(心法),设计模式是(内功),编程语言是(招式)
没有心法,内功等于0,招式就是假把式
有了心法,内功才有依靠,有了心法和内功,招式才能产生效果!
7. 算法与程序
???虽然不知道你想问的是什么。。但是
①程序是你写完源代码后,计算机编译后得到的可执行文件。
②算法一般结合数学思想,以下内容算是算法:
给数组按大小排序、查找数组某元素、图形处理算法、音频识别处理。
但广义上,用了顺序分支循环就是算法。
8. 程序算法
Basic类
Dim Count,i
Count=0
For i=1 To 100
Count=Count+i^2
Next
C#
long Count
For (int i=1;i<100;i++){
Count=Count+(long)i^2
}
9. 算法与程序有什么异同
用一句说话答你的话, 那就是 : 算法只是程序中可以处理的其中一件事.
算法, 基本上就是以数学的形式去对一个 "模式" 的模术, 例如最简单的毕氏定理 a^2 + b^2 = c^2 . 当然还有更多更复杂的算法, 例如 OpenCV 对面容辨识的各种算法, 从距离, 比例, 颜色深浅来定位那里是双眼, 嘴巴, 人面... 但总言之, 算法离不开 f(x) = ..... 这个框架. 你可以从算法中求 x 等于甚么, 又或者从已知的 x 去找出算法中其他的未知数.. 算法, 就是数学
程序, 基本有: 输入 -> 处理 -> 输出 -> 存取档案这几个部份, 当中便有豪多样的可能性, 光是输入, 就已可分由用者输入, 从档案输入, 甚至... 从算法中输入!! 又来到处理, 算法所不能做到的的一件事, 就是程序可以做出逻辑的分支, if ... elseif... else... 整个流程可以随意跳跃...
最后一句就是, 算法是死的, 程序是活的.