分享

总结6:常见的程序输出

 kittywei 2012-08-23

总结6:常见的程序输出

1、下面这段代码输出什么?为什么?
     int i=5;  int j=5;
     if (Object.ReferenceEquals(i,j))
          Console.WriteLine("Equal");
     else
          Console.WriteLine("Not Equal");
输出:Not Equal
因为比较的是两个实例是否是相同的实例。

2、在下面的例子里
using System;
namespace TEST
{
    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;
namespace TEST
{
    class Class1
    {
        public static int count = 0;
        static Class1() { count++; }
        public Class1() { count++; }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Class1 o1 = new Class1();
            Class1 o2 = new Class1();
            Console.Write(Class1.count);
            Console.Read();
        }
    }
}
输出:3


4、求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m
 public static int JiSuan(int Num)
        {

            if (Num % 2 == 1)
            {
                return Num - (Num - 1) / 2;
            }
            else
            {
                return -Num / 2;
            }
        }


5、下面这段代码输出什么?
    using System;
namespace TEST
{
    class Father
    {
        void show()
        {
            Console.Write("Father");
        }
        static void Main(string[] args)
        {
            Father obj = new Child();
            obj.show();
            Console.Read();
        }
    }
    class Child : Father
    {
        void show()
        {
            Console.Write("Child");
        }
    }
}
输出:Father


6、一列数的规则如下: 1、1、2、3、5、8、13、21、34......  求第30位数是多少, 用递归算法实现。
        static void Main(string[] args)
        {

            System.Console.WriteLine(Foo(2).ToString());
            System.Console.ReadLine();
        }
        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);
        }

 

7、分析以下代码,完成填空
string strTmp = "abcdefg某某某";
int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;
int j= strTmp.Length;
以上代码执行完后,i= j=
答:i=13,j=10


8、下面的例子中,产生的输出结果是什么?
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);
            Console.Read();
        }
    }
输出:x=1,y=2


9、下面的例子中,产生的输出结果是什么?
            double d = 5.555;
            string str = string.Format("{0:C2}", d);
            Console.WriteLine(str);
            Console.Read();
输出:¥5.56


10、下面的例子中,产生的输出结果是什么?
            string[] test = new string[5];
            test[0] = "11";
            test[4] = "22";
            string s = "";
            foreach (string m in test)
                s = s + m;
            Console.Write(s);
            Console.Read();
输出:1122


11、请编程遍历页面上所有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;
                }
            }


12、请编程实现一个冒泡排序算法
            int[] array = new int[] { 1, 2, 3, 4, 5, 3, 2, 6, 7 };
            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;
                    }
                }
            }


13、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];


14、求f=1*2*4*8*16*32*64*128*256
方法一:利用位运算:
            long sum = 1;
            for (int i = 1; i < 9; i++)
            {
                sum *= 1 << i;
            }
            Console.WriteLine(sum);
方法二:利用循环:
int num = 1, sum = 1;
            for (int i = 0; i < 9; i++)
            {
                sum = num * 1;
                for (int j = 0; j < i; j++)
                {
                    num = num * 2;
                }
            }
            Console.WriteLine(sum);

 


15、下面的例子中,产生的输出结果是什么?
 public abstract class A
    {
        public A()
        {
            Console.WriteLine('A');
        }
        public virtual void Fun()
        {
            Console.WriteLine("A.Fun()");
        }
    }

    public class B : A
    {
        public B()
        {
            Console.WriteLine('B');
        }

        public new void Fun()
        {
            Console.WriteLine("B.Fun()");
        }

        public static void Main()
        {
            A a = new B();
            a.Fun();
            Console.ReadKey();
        }
    }
输出:A
        B
        A.Fun()

 


16、下面的例子中,产生的输出结果是什么?
    public class A
    {
        public virtual void Fun1(int i)
        {
            Console.WriteLine(i);
        }
        public void Fun2(A a)
        {
            a.Fun1(1);
            Fun1(5);
        }
    }
    public class B : A
    {
        public override void Fun1(int i)
        {
            base.Fun1(i + 1);
        }
        public static void Main()
        {
            B b = new B();
            A a = new A();
            a.Fun2(b);
            b.Fun2(a);
            Console.ReadKey();
        }
    }
输出:2
        5
        1
        6

 

17、常用排序方法:  
  private void BubbleSort()
        {
            //冒泡排序
            int[] list = new int[5] { 111, 12, 223, 854, -5655 };//初始化数组
            int i, j, temp;
            for (j = 1; j < list.Length; j++)
            {
                for (i = 0; i < list.Length - j; i++)
                {
                    if (list[i] > list[i + 1])
                    {
                        temp = list[i];
                        list[i] = list[i + 1];
                        list[i + 1] = temp;
                    }
                }
            }
        }
        private void SelectSort()
        {
            //选择排序
            int[] a = new int[5] { 111, 12, 223, 854, -5655 };//初始化数组
            int min, min_k;//定义最小数,和最小数的下标
            for (int i = 0; i < 5; i++)
            {
                min = a[i];//将当前循环的数设置成最小数
                min_k = i;
                for (int j = i + 1; j < 5; j++)
                {

                    if (a[j] < min)
                    {
                        min = a[j];
                        min_k = j;
                        int tem = a[min_k];
                        a[min_k] = a[i];
                        a[i] = tem;
                    }
                }
            }
        }

 


18、用javascript写出一个div,使之绝对定位在top:200px,left:150px的位置,宽300px,高220px,白色背景,边框1像素平滑红色
        var mydiv = document.createElement("div");
        mydiv.style.position="Absolute";
        mydiv.style.top = "200px";
        mydiv.style.left="150px";
        mydiv.style.width="300px";
        mydiv.style.height="220px";
        mydiv.style.backgroundColor="Red";
        mydiv.style.borderStyle="solid";
        mydiv.style.borderColor="White";
        mydiv.style.borderWidth="1px";

 


19、如何定义泛型方法?如何给泛型变量赋默认值?
    public class MyGenericClass<T>
    {   public T tField = default(T);
        public MyGenericClass()
        { }
        public MyGenericClass(T tField)
        {  this.tField = tField; }
        public void DisplayDefault()
        {  Console.WriteLine(this.tField); }
    }

 


20、如何把一个array复制到arrayList里
    foreach( object o in array )
    arrayList.Add(o);

 


21、根据委托(delegate)的知识,请完成以下用户控件中代码片段的填写:
namespace test
{
  public delegate void OnDBOperate();
  public class UserControlBase : System.Windows.Forms.UserControl
  {
    public event OnDBOperate OnNew;
    private void toolBar_ButtonClick   (objectsender,System.Windows.Forms.ToolBarButtonClickEventArgs e)
    {
      if(e.Button.Equals(BtnNew))
      {
      //请在以下补齐代码用来调用OnDBOperate委托签名的OnNew事件。
      }
    }
  }
}
答:if( OnNew != null )
    OnNew( this, e );

 


22、根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?并简要说明理由。
public void test(int i)
{
   lock(this)
 {
   if (i>10)
   {
     i--;
     test(i);
   }
 }
}
答:不会发生死锁,(但有一点int是按值传递的,所以每次改变的都只是一个副本,因此不会出现死锁。但如果把int换做一个object,那么死锁会发生)

 


23、程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(C#语言)
要求:1.要有联动性,老鼠和主人的行为是被动的。
      2.考虑可扩展性,猫的叫声可能引起其他联动效应。
namespace test
{
    public interface Observer
    {
        void Response();    //观察者的响应,如是老鼠见到猫的反映
    }
    public interface Subject
    {
        void AimAt(Observer obs);  //针对哪些观察者,这里指猫的要扑捉的对象---老鼠
    }
    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();
            Console.Read();
        }
    }
}

 


24、一个构造函数能否调用另一个构造函数,如果能请写出简单的代码
 class class1
    {
        int y;
        public class1()
        {
            new class1(5);
        }
        public class1(int i)
        {
            this.y = i;
        }
        public void x()
        {
            Console.WriteLine(y.ToString());
        }
        static void Main(string[] args)
        {
            //
            class1 cl = new class1(5);
            cl.x();
            Console.Read();
        }
    }

 


25、给定以下XML文件,完成算法流程图。(10)
<FileSystem>
< DriverC >
<Dir DirName=”MSDOS622”>
<File FileName =” Command.com” ></File>
</Dir>
<File FileName =”MSDOS.SYS” ></File>
<File FileName =” IO.SYS” ></File>
</DriverC>
</FileSystem>
请画出遍历所有文件名(FileName)的流程图(请使用递归算法)。
答:
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 );
     }
}
简单的说就是从根节点开始遍历找子节点,在从找到的子节点找它的子节点,一层层下去

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多