4.一個(gè)長(zhǎng)度為10000的字符串,通過隨機(jī)從a-z中抽取10000個(gè)字符組成,。請(qǐng)用c#語言編寫主要程序來實(shí)現(xiàn),。 答: using
System.Text; StringBuilder sb = new StringBuilder(0, 10000); string strABC
= “a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z”; string[] ABC =
strABC.Split(‘,’); int len = ABC.Length; Random rd = new Random(); for
(int i = 0; i < 10000; i++) { sb.Append(ABC[rd.Next(len)]); }
5.產(chǎn)生一個(gè)int數(shù)組,長(zhǎng)度為100,,并向其中隨機(jī)插入1-100,,并且不能重復(fù)。 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];
2.如何把一個(gè)Array復(fù)制到ArrayList里 答: foreach(
object o in array )arrayList.Add(o);
1. 用C#寫一段選擇排序算法,,要求用自己的編程風(fēng)格,。
答:private int min;
public void xuanZhe(int[] list)//選擇排序
{
for (int i = 0; i < list.Length – 1; i++)
{
min = i;
for (int j = i + 1; j < list.Length; j++)
{
if (list[j] < list[min])
min = j;
}
int t = list[min];
list[min] = list[i];
list[i] = t;
}
}
4.寫一個(gè)函數(shù)計(jì)算當(dāng)參數(shù)為N的值:1-2+3-4+5-6+7……+N 答:public
int returnSum(int n) { int sum = 0; for (int i = 1; i <= n;
i++) { int k = i; if (i % 2 == 0) { k = -k; } sum = sum +
k; } return sum; }
public int returnSum1(int n) { int k = n; if (n ==
0) { return 0; } if (n % 2 == 0) { k = -k; } return
aaa(n – 1) + k; }
7. 某一密碼僅使用K、L、M,、N,、O共5個(gè)字母,密碼中的單詞從左向右排列,,密碼單詞必須遵循如下規(guī)則 : (1)
密碼單詞的最小長(zhǎng)度是兩個(gè)字母,,可以相同,也可以不同 (2) K不可能是單詞的第一個(gè)字母 (3) 如果L出現(xiàn),,則出現(xiàn)次數(shù)不止一次 (4)
M不能使最后一個(gè)也不能是倒數(shù)第二個(gè)字母 (5) K出現(xiàn),,則N就一定出現(xiàn) (6)
O如果是最后一個(gè)字母,則L一定出現(xiàn) 問題一:下列哪一個(gè)字母可以放在LO中的O后面,,形成一個(gè)3個(gè)字母的密碼單詞,? A) K B)L C) M D)
N 答案:B 問題二:如果能得到的字母是K、L,、M,,那么能夠形成的兩個(gè)字母長(zhǎng)的密碼單詞的總數(shù)是多少? A)1個(gè) B)3個(gè) C)6個(gè)
D)9個(gè) 答案:A 問題三:下列哪一個(gè)是單詞密碼,? A) KLLN B) LOML C) MLLO D)NMKO 答案:C
62-63=1
等式不成立,,請(qǐng)移動(dòng)一個(gè)數(shù)字(不可以移動(dòng)減號(hào)和等于號(hào)),使得等式成立,,如何移動(dòng),? 答案:62移動(dòng)成2的6次方
17、列出常用的使用javascript操作xml的類包 答: XML.prototype.xmlDoc
= new
ActiveXObject(“Microsoft.XMLDOM”); XML.prototype.InitXML=InitXML; XML.prototype.getFirstChild=getFirstChild; XML.prototype.getLastChild=getLastChild; XML.prototype.getChild=getChild;
// 取得節(jié)點(diǎn)值 XML.prototype.getNodeslength=getNodeslength; //
最得節(jié)點(diǎn)下的子節(jié)點(diǎn)的個(gè)數(shù) XML.prototype.getNode=getNode; //
取得指定節(jié)點(diǎn) XML.prototype.delNode=delNode; //
刪除指定節(jié)點(diǎn),如果節(jié)點(diǎn)相同,則刪除最前面的節(jié)點(diǎn). XML.prototype.getNodeAttrib=getNodeAttrib; //
取得節(jié)點(diǎn)的指定屬性值. XML.prototype.InsertBeforeChild=InsertBeforeChild; //
在指定節(jié)點(diǎn)之前插入一個(gè)節(jié)點(diǎn). XML.prototype.InsertChild=InsertChild; //
在指定節(jié)點(diǎn)下插入節(jié)點(diǎn). XML.prototype.setAttrib=setAttrib; //
設(shè)置指定屬性的值. XML.prototype.setNodeValue=setNodeValue; //
設(shè)置指定節(jié)點(diǎn)的值. XML.prototype.CreateNodeS=CreateNodeS; //
創(chuàng)建一個(gè)指定名的節(jié)點(diǎn). XML.prototype.addAttrib=addAttrib; //
為指定節(jié)點(diǎn)添加指定屬性,,并設(shè)置初值. XML.prototype.FindString=FindString; //
在指定節(jié)點(diǎn)下查找字符串.
給定以下XML文件,,完成算法流程圖<FileSystem> <
DriverC > <Dir DirName=”MSDOS622”> <File FileName =”
Command.com” ></File> </Dir> <File FileName =”MSDOS.SYS”
></File> <File FileName =” IO.SYS”
></File> </DriverC> </FileSystem> 請(qǐng)畫出遍歷所有文件名(FileName)的流程圖(請(qǐng)使用遞歸算法)。 答: void
FindFile( Directory d ) { FileOrFolders =
d.GetFileOrFolders(); foreach( FileOrFolder fof in FileOrFolders
) { if( fof is File ) You Found a file; else if ( fof is Directory
) FindFile( fof ); } }
6.C#代碼實(shí)現(xiàn),,確保windows程序只有一個(gè)實(shí)例(instance)
///<summary> ///應(yīng)用程序的主入口點(diǎn),。 ///</summary> [STAThread] staticvoid
Main() { //防止程序多次運(yùn)行 if(!OneInstance.IsFirst(“GetPayInfo”)) { MessageBox.Show
(“警告:程序正在運(yùn)行中! 請(qǐng)不要重復(fù)打開程序!可在右下角系統(tǒng)欄找到!”,”程序錯(cuò)誤提
示:”,MessageBoxButtons.OK,MessageBoxIcon.Stop); return; } Application.Run(new
Form1()); } // ******************* 防止程序多次執(zhí)行
************************** publicabstractclass
OneInstance { ///<summary> ///判斷程序是否正在運(yùn)行 ///</summary> ///<param
name=”appId”>程序名稱</param> ///<returns>如果程序是第一次運(yùn)行返回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 ); }
6.一列數(shù)的規(guī)則如下: 1、1,、2,、3、5,、8,、13、21,、34…… 求第30位數(shù)是多少,, 用遞歸算法實(shí)現(xiàn)。 答: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); } }
8.請(qǐng)編程實(shí)現(xiàn)一個(gè)冒泡排序算法,? 答: 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 ; } } }
11.在下面的例子里 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); }
} 當(dāng)使用new B()創(chuàng)建B的實(shí)例時(shí),,產(chǎn)生什么輸出,? 答: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);
}
}
產(chǎn)生的輸出結(jié)果是什么?x=1,y=2
15.根據(jù)委托(delegate)的知識(shí),,請(qǐng)完成以下用戶控件中代碼片段的填寫: namespace
test { public delegate void OnDBOperate(); public class UserControlBase
: System.Windows.Forms.UserControl { public event OnDBOperate
OnNew; privatevoidtoolBar_ButtonClick(objectsender,System.Windows.Forms.ToolBarButtonClickEventArgs
e) { if(e.Button.Equals(BtnNew)) { //請(qǐng)?jiān)谝韵卵a(bǔ)齊代碼用來調(diào)用OnDBOperate委托簽名的OnNew事件,。 } } } 答:if(
OnNew != null ) OnNew( this, e );
16.分析以下代碼,完成填空 string strTmp
= “abcdefg某某某”; int i=
System.Text.Encoding.Default.GetBytes(strTmp).Length; int j=
strTmp.Length; 以上代碼執(zhí)行完后,,i= j= 答:i=13,j=10
17.給定以下XML文件,,完成算法流程圖。 <FileSystem> <
DriverC > <Dir DirName=”MSDOS622”> <File FileName =”
Command.com” ></File> </Dir> <File FileName =”MSDOS.SYS”
></File> <File FileName =” IO.SYS”
></File> </DriverC> </FileSystem> 請(qǐng)畫出遍歷所有文件名(FileName)的流程圖(請(qǐng)使用遞歸算法),。 答:偽代碼: void
FindFile( Directory d ) { FileOrFolders =
d.GetFileOrFolders(); foreach( FileOrFolder fof in FileOrFolders
) { if( fof is File ) You Found a file; else if ( fof is Directory
) FindFile( fof ); } } C#: Public void DomDepthFirst(XmlNode
currentNode) { XmlNode
node=currentNode.FirstChild; while(node!=null) { DomDepthFirst(node); node=node.NextSibling; } if(node.Name==”File”) { Console.Write(((XmlElement)node).GetAttribute(“FileName”)+”\r\n”); } }
29.根據(jù)線程安全的相關(guān)知識(shí),,分析以下代碼,當(dāng)調(diào)用test方法時(shí)i>10時(shí)是否會(huì)引起死鎖?并簡(jiǎn)要說明理由,。 public
void test(int i) { lock(this) { if
(i>10) { i–; test(i); } } } 答:不會(huì)發(fā)生死鎖,,(但有一點(diǎn)int是按值傳遞的,所以每次改變的都只是一個(gè)副本,,因此不會(huì)出現(xiàn)死鎖,。但如果把int換做一個(gè)object,那么死鎖會(huì)發(fā)生)
78,、下面的程序執(zhí)行結(jié)果是什么,?
class Person
{
public int Age { get; set; }
}
int i1 = 20;
int i2 = i1;
i1++;
Console.WriteLine(i2);
Person p1 = new Person();
p1.Age = 20;
Person p2 = p1;
p1.Age++;
Console.WriteLine(p2.Age);
答案:
20 、21
2,、不用中間變量交換兩個(gè)變量
int i = 500;
int j = int.MaxValue – 10;
//int i = 10;
//int j = 20;
Console.WriteLine(“i={0},j={1}”, i, j);
i = i + j;//i=30
j = i – j;//j=10;
i = i – j;//i=20;
Console.WriteLine(“i={0},j={1}”,i,j);
有一個(gè)10個(gè)數(shù)的數(shù)組,,計(jì)算其中不重復(fù)數(shù)字的個(gè)數(shù)。{3,5,9,8,10,5,3}
用HashSet
int[] values = { 3, 5, 9, 8, 10, 5, 3 };
HashSet<int> set = new HashSet<int>();
foreach (int i in values)
{
set.Add(i);
}
foreach (int i in set)
{
Console.WriteLine(i);
}
點(diǎn)擊table獲取行號(hào)列號(hào),?
- function getRowAndColumn()
- {
- if(!document.getElementsByTagName || !document.createTextNode)return;
- varrows=document.getElementById(‘MyTable’).getElementsByTagName(‘tr’);
- varcols;
- for(i = 0; i < rows.length; i++)
- {
- rows[i].onclick=function()
- {
- 10. alert(“行:”+eval(this.rowIndex + 1));
- 11. }
- 12. if(i=0)
- 13. {
- 14. colsTH =rows[i].getElementsByTagName(‘th’);
- 15. alert(colsTH.length);
- 16. for(k = 0; k< colsTH.length; k++)
- 17. {
- 18. colsTH[k].onclick =function()
- 19. {
- 20. alert(“列:”+eval(this.cellIndex +1));
- 21. }
- 22. }
- 23. }
- 24. else
- 25. {
- 26. cols =rows[i].getElementsByTagName(‘td’);
- 27. for(j = 0; j < cols.length; j++)
- 28. {
- 29. cols[j].onclick =function()
- 30. {
- 31. alert(“列:”+eval(this.cellIndex + 1));
- 32. }
- 33. }
- 34. }
- 35. }
- 36. }
//相傳有一群猴子要選出大王,,它們采用的方式為:所有猴子站成一個(gè)圈,然后從1開始報(bào)數(shù),,每當(dāng)數(shù)到”.
//”N的那一只猴子就出列,,然后繼續(xù)從下一個(gè)猴子開始又從1開始數(shù),數(shù)到N的猴子繼續(xù)出列,,一直到最后”.
//”剩的猴子就是大王了,。假如現(xiàn)在有M只猴子,,報(bào)數(shù)數(shù)為N,,請(qǐng)問第幾只猴子是大王?列出選大王的過程,。
int M = 10;
int N = 3;
List<int> monkeys = new List<int>();
for (int i = 1; i <= M; i++)
{
monkeys.Add(i);
}
int currentIndex = 0;
while (true)
{
for (int i = 1; i <= N; i++)
{
if (i == N)
{
monkeys.RemoveAt(currentIndex);
if (monkeys.Count == 1)
{
Console.WriteLine(monkeys[0]);
return;
}
}
currentIndex++;
if (currentIndex >= monkeys.Count)
{
currentIndex = 0;
}
}
}
38:請(qǐng)編程遍歷頁面上所有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
; } }
10. 程序設(shè)計(jì): 貓大叫一聲,所有的老鼠都開始逃跑,,主人被驚醒,。(C#語言)
要求: 1.要有聯(lián)動(dòng)性,老鼠和主人的行為是被動(dòng)的。
2.考慮可擴(kuò)展性,,貓的叫聲可能引起其他聯(lián)動(dòng)效應(yīng),。
要點(diǎn):1. 聯(lián)動(dòng)效果,運(yùn)行代碼只要執(zhí)行Cat.Cryed()方法,。2. 對(duì)老鼠和主人進(jìn)行抽象 評(píng)分標(biāo)準(zhǔn):
<1>.構(gòu)造出Cat,、Mouse、Master三個(gè)類,,并能使程序運(yùn)行 <2>從Mouse和Master中提取抽象 <3>聯(lián)動(dòng)效應(yīng),,只要執(zhí)行Cat.Cryed()就可以使老鼠逃跑,主人驚醒,。
public interface Observer { void Response();
//觀察者的響應(yīng),,如是老鼠見到貓的反映 } public interface Subject { void AimAt(Observer
obs); //針對(duì)哪些觀察者,這里指貓的要撲捉的對(duì)象—老鼠 } public class Mouse :
Observer { private string name; public Mouse(string name, Subject
subj) { this.name = name; subj.AimAt(this); }
public void Response() { Console.WriteLine(name + ” attempt to
escape!”); } } public class Master : Observer { public
Master(Subject subj) { subj.AimAt(this); }
public void Response() { Console.WriteLine(“Host
waken!”); } }
public class Cat : Subject { private ArrayList observers; public
Cat() { this.observers = new ArrayList(); } public void
AimAt(Observer obs) { this.observers.Add(obs); } public void
Cry() { Console.WriteLine(“Cat cryed!”); foreach (Observer obs in
this.observers) { obs.Response(); } } } class
MainClass { static void Main(string[] args) { Cat cat = new
Cat(); Mouse mouse1 = new Mouse(“mouse1″, cat); Mouse mouse2 = new
Mouse(“mouse2″, cat); Master master = new
Master(cat); cat.Cry(); } }
//———————————————————————————————
設(shè)計(jì)方法二: 使用event — delegate設(shè)計(jì).. public delegate void
SubEventHandler(); public abstract class Subject { public event
SubEventHandler SubEvent; protected void FireAway() { if (this.SubEvent
!= null) this.SubEvent(); } } public class Cat :
Subject { public void Cry() { Console.WriteLine(“cat
cryed.”); this.FireAway(); } } public abstract class
Observer { public Observer(Subject sub) { sub.SubEvent += new
SubEventHandler(Response); } public abstract void
Response(); } public class Mouse : Observer { private string
name; public Mouse(string name, Subject sub) : base(sub) { this.name =
name; } public override void Response() { Console.WriteLine(name + ”
attempt to escape!”); } } public class Master : Observer { public
Master(Subject sub) : base(sub){} public override void
Response() { Console.WriteLine(“host waken”); } } class
Class1 { static void Main(string[] args) { Cat cat = new
Cat(); Mouse mouse1 = new Mouse(“mouse1″, cat); Mouse mouse2 = new
Mouse(“mouse2″, cat); Master master = new Master(cat); cat.Cry(); }
}
|