a 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。
int[] intArr=new int[100]; ArrayList myList=new ArrayList(); Random rnd=new Random(); while(myList.Count<100) { int num=rnd.Next(1,101); if(!myList.Contains(num)) myList.Add(num); } for(int i=0;i<100;i++) intArr[i]=(int)myList[i]; 20.请叙述类与结构的区别。 1)、结构是值类型; 2)、结构不支持继承; 3)、结构不能定义默认的构造函数; 4)、结构不能定义析构函数; 5)、结构不能使用初始值设置域值。
在c#中using和new这两个关键字有什么意义,请写出你所知道的意义?
Using 引入一个名子空间,或在使用了一个对像后自动调用其IDespose,New 实例化一个对像,或修饰一个方法,表此方法完全重写此方法 2.在下面的例子里 using System; class A { public A(){ PrintFields(); } public virtual void PrintFields(){} } class B:A { int x=1; int y; public B(){ y=-1; } public override void PrintFields(){ Console.WriteLine("x={0},y={1}",x,y); } 当使用new B()创建B的实例时,产生什么输出?X=1,Y=0 3.下面的例子中using System; class A { public static int X; static A(){ X=B.Y+1; } } class B { public static int Y=A.X+1; static B(){} static void Main(){ Console.WriteLine("X={0},Y={1}",A.X,B.Y); } } 产生的输出结果是什么?x=1,y=2
76.C#代码实现,确保windows程序只有一个实例(instance)
///<summary> ///应用程序的主入口点。 ///</summary> [STAThread] staticvoid Main() { //防止程序多次运行 if(!OneInstance.IsFirst("GetPayInfo")) { MessageBox.Show ("警告:程序正在运行中! 请不要重复打开程序!可在右下角系统栏找到!","程序错误提示:",MessageBoxButtons.OK,MessageBoxIcon.Stop); return; } Application.Run(new Form1()); } // ******************* 防止程序多次执行 publicabstractclass OneInstance { ///<summary> ///判断程序是否正在运行 ///</summary> ///<param name="appId">程序名称</param> ///<returns>如果程序是第一次运行返回True,否则返回False</returns> publicstaticbool IsFirst(string appId) { bool ret=false; if(OpenMutex(0x1F0001,0,appId)==IntPtr.Zero) { CreateMutex(IntPtr.Zero,0,appId); ret=true; } return ret; } [DllImport("Kernel32.dll",CharSet=CharSet.Auto)] privatestaticextern IntPtr OpenMutex( uint dwDesiredAccess, // access int bInheritHandle, // inheritance option string lpName // object name ); [DllImport("Kernel32.dll",CharSet=CharSet.Auto)] privatestaticextern IntPtr CreateMutex( IntPtr lpMutexAttributes, // SD int bInitialOwner, // initial owner string lpName // object name ); }
94、列举ASP.NET 页面之间传递值的几种方式。
答. 1.使用QueryString, 源页面 string url; url="anotherwebform.aspx?name=" + TextBox1.Text Response.Redirect(url); 目标页面 Label1.Text=Request.QueryString["name"]; 2.使用Session变量 源页面 Session["name"]=TextBox1.Text; Session["email"]=TextBox2.Text; Server.Transfer("anotherwebform.aspx"); 目标页面 Label1.Text=Session["name"].ToString(); Label2.Text=Session["email"].ToString(); Session.Remove("name"); Session.Remove("email"); 3.使用Server.Transfer 源页面代码: public string Name { get { return TextBox1.Text; } } //然后调用Server.Transfer方法 private void Button1_Click (object sender, System.EventArgs e) { Server.Transfer("anotherwebform.aspx"); } 目标页面代码: private void Page_Load (object sender, System.EventArgs e) { WebForm1 wf1; wf1=(WebForm1)Context.Handler; Label1.Text=wf1.Name; }
95、一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现。
答:public class MainClass { public static void Main() { Console.WriteLine(Foo(30)); } public static int Foo(int i) { if (i <= 0) return 0; else if(i > 0 && i <= 2) return 1; else return Foo(i -1) + Foo(i - 2); } }
97、请编程遍历页面上所有TextBox控件并给它赋值为string.Empty?
foreach (System.Windows.Forms.Control control in this.Controls) { if (control is System.Windows.Forms.TextBox) { System.Windows.Forms.TextBox tb = (System.Windows.Forms.TextBox)control ; tb.Text = String.Empty ; } }
98、请编程实现一个冒泡排序算法?
int [] array = new int [*] ; int temp = 0 ; for (int i = 0 ; i < array.Length - 1 ; i++) { for (int j = i + 1 ; j < array.Length ; j++) { if (array[j] < array[i]) { temp = array[i] ; array[i] = array[j] ; array[j] = temp ; } } }
第二种
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 冒泡排序 { class Program { /// <summary> /// 交换两个整型变量的值 /// </summary> /// <param name="a">要交换的第一个整形变量</param> /// <param name="b">要交换的第一个整形变量</param> private static void Reverse(ref int a, ref int b) { int temp = a; a = b; b = temp; } static void Main(string[] args) { while (true) { string[] strInput;//用来接收用户输入的字符串 int[] intInput; string[] separator = { ",", " " };//设置分隔符 Console.WriteLine("请输入数据,以\",\"或空格分隔,或按\"q\"退出。"); string str = Console.ReadLine();//接收键盘输入 if (str == "q") { return; } strInput = str.Split(separator, StringSplitOptions.RemoveEmptyEntries);//将用户输入的字符串分割为字符串数组 intInput = new Int32[strInput.Length]; //将字符串数组的每一个元素转换为整型变量 //转换时如果出现格式错误或溢出错误则提示 try { for (int i = 0; i < strInput.Length; i++) { intInput[i] = Convert.ToInt32(strInput[i]); } } catch (FormatException err) { Console.WriteLine(err.Message); } catch(OverflowException err) { Console.WriteLine(err.Message); } //排序算法主体 for (int i = 0; i < intInput.Length - 1; i++)//这里的Length要减1否则会超界 { for (int j = 0; j < intInput.Length - i - 1; j++)//这里的Length要减i以减少重复运算 { //如果元素j比它之后的一个元素大,则交换他们的位置 //如此循环直到遍历完整个数组 if (intInput[j] > intInput[j + 1]) { Reverse(ref intInput[j], ref intInput[j + 1]); } } } string strOutput = "";//用于输出的字符串 foreach (int temp in intInput) { strOutput += Convert.ToString(temp) + ","; } Console.WriteLine("排序后的数据为:\r\n{0}\r\n", strOutput); } } } }