c#基础阶段测试

一.简答题

1.解释面向对象的概念
​ 答:面向对象既封装对象的属性,实现对象的方法、事件得到需要的对象。
2.c#中常见的15种属性类型
​ 答:整数:byte、sbyte、short、ushort、int、uint、long、ulong;
​ 浮点型:decimal、float、double;字符:char;字符串:string;布尔型:bool;对象:object。
3.简单描述属性赋值四种方式
​ 答:(1)看属性类型,是预定义的15种属性类型直接赋值;(2)如果不是等号后试着敲空格,出现智能提示直接点,选择一个封号结束;(3)特殊类型,类型名称点,选择一个封号结束;(4)以上都不满足,等号后new+空格出现智能提示直接一对小括号封号,删除前半个小括号,在添加上,针对括号里的属性继续使用四种方式进行赋值。
属性赋值的本质是等号两边的属性类型一致。
4.简单说明对象、类、命名空间的关系
​ 答:对象:万事万物皆对象;类:具有相同属性特征和行为的所有对象的一种抽象化的归类;命名空间:类的存储空间、所在空间,也称为类库。
5.说明值类型和引用类型的区别
​ 答:值类型来自system.ValueType,存储在堆栈中,直接存储的是数据的值,内存是自动释放的,调用速度快,常见的有结构体(数值类型、bool型、用户定义的结构体)、枚举、可空类型;引用类型来自system.Object,存储在堆中,存储的是数据的引用地址,内存是.NET中GC机制来自动释放的,调用速度相对于值类型较慢,常见的有string、object、类、数组、接口、委托等。
6.类型转换有哪些方式,分别介绍
​ 答:隐式转换和显示转换,隐式转换:c#默认的安全的转换,是用户看不到的;显示转换:用户自定义的通过函数进行的转换;convert点…;int.parse将数字的字符串转换为int类型,as;tostring;(char)XX;装箱:将值类型转换为引用类型;拆箱:将引用类型转换为值类型,拆箱的前提是装箱。
7.简单介绍全局变量和局部变量
​ 答:全局变量:定义在函数外的变量,整个程序都可以访问;局部变量:定义在函数体内的变量,只能在函数体内使用。
8.变量初始化的作用是什么,c#是怎样保证变量的初始化
​ 答:变量初始化的作用是c#强调安全性的一种方式,C#确保变量在使用前初始化的两个方法:(1)变量直接定义在类中或者结构中,如果没有显示初始化,那么在创建变量的时候会有默认值;(2)方法、事件内的变量必须在代码中显示初始化,之后才能在语句中使用它们的值.此时初始化不是声明该变量时进行的,但编译器会通过方法检查所有可能的路径,如果检测到局部变量在初始化之前就使用了他的值,直接报错。
9.运算符+的作用都有哪些
​ 答:int与int之间是加法运算;Sting与其他类型之间是拼接字符串。
10.定义变量int i=10;int j=++i;求j和i的值分别是多少
​ 答:j=11;i=11
11.假设int i=21;
(1)求~i结果是多少 -22
(2)求i%5结果是多少 1
(3)int j=(i/5)++;j的结果是多少 4
12.使用三元表达式写出以下算法:判断int类型变量i是否大于20;如果大于20则int类型变量j接受的结果为20,否则接受的结果为10;
​ 答:int i>20? j=20:j=10
13.简单描述类的实例化操作的作用是什么
​ 答:创建一个属于这个类的新对象,实例化的过程既对象的创建过程。
14.写出数组的三种初始化方式
​ 答:int[]array=new int[5];int[]array=new int[5]{1,2,3,4,5};int []array={1,2,3,4,5}。
15.数组和泛型集合的区别是什么
​ 答:数组定长,占用内存少,遍历速度快;集合不定长,不断发生改变,占用内存多,遍历速度慢;
在功能上数组能实现的,集合都能实现,集合能实现的某些功能数组难以实现。

二.算法题

1.对12,5,22,68,31进行从小往大的冒泡排序
​ 答:

static void Main(string[] args)
{
	int[]array={12,5,22,68,31};
	for(int i=0;i<array.length;i++)
	{
		for(int j=0;j<array.length-i-1;j++)
		{
			if(array[j]>array[j+1])
			{
				int temp=array[j];
				array[j]=array[j+1];
				array[j+1]=temp;
			}
		}
	}
	for(int i=0;i<array.length;i++)
	{
		console.Write(array[i]+" ");
	}
	console.Readline;
}

2.从1-90之内随机取出10个不同的数

Random r=new Random;
int[]array=new int[10];
for(int i=0;i<array.Length;i++)
{
	array[i]=r.Next(1,91);
	if(i>0)
	{
        for(int j=0;j<i;j++)
        {
			if(array[i]==array[j])
			{
            	i--;    
			}
        }
	}
}
for(int i=0;i<array.Length;i++)
{
	Console.WriteLine(array[i]);
}
Console.ReadLine();

3.实现案例:输入三个数分别是(i,j,k)实现判断这个三个长度是否能构成三角形,如果能构成三角形,判断出是什么三角形(普通三角形,等腰三角形,等边三角形,直角三角形,等腰直角三角形)

while (true)
{
    Console.WriteLine("请输入第一个数");
    int i = int.Parse(Console.ReadLine());
    Console.WriteLine("请输入第二个数");
    int j = int.Parse(Console.ReadLine());
    Console.WriteLine("请输入第三个数");
    int k = int.Parse(Console.ReadLine());
    if ((i + j > k && i - j < k) || (i + k > j && i - k < j) || (j + k > i && j - k < i))
    {
        if ((i * i + j * j == k * k || i * i + k * k == j * j || j * j + k * k == i * i) && (i == j || i == k || k == j))
        {
            Console.WriteLine("等腰直角三角形");
        }
        else if (i * i + j * j == k * k || i * i + k * k == j * j || j * j + k * k == i * i)
        {
            Console.WriteLine("直角三角形");
        }
        else if (i == j || i == k || k == j)
        {
            if (i == j && j == k)
            {
                Console.WriteLine("等边三角形");
            }
            else
            {
                Console.WriteLine("等腰三角形");
            }
        }
        else
        {
            Console.WriteLine("普通三角形");
        }
    }
    else
    {
        Console.WriteLine("输入的三条边不能构成三角形!");
    }
}
Console.ReadLine();

猜你喜欢

转载自blog.csdn.net/qq_43434300/article/details/89455206
今日推荐