2013116-基础练习

[1]//声明两个变量:int n1 = 10, n2 = 20;要求将两个变量交换,最后输出n120,n210。扩展(*):不使用第三个变量如何交换?

int num1 = 10;

int num2 = 20;

int temp = 0;

temp = num1;

num1 = num2;

num2 = temp;

Console.WriteLine("n1{0}n2{1}",num1,num2);

[*]

int num1 = 10;

int num2 = 20;

num1 = num1 + num2;

num2 = num1 - num2;

num1 = num1 - num2;

 

Console.WriteLine("num1{0}num2{1}",num1,num2);

Console.ReadKey();

 

[2]//用方法来实现:将上题封装一个方法来做。提示:方法有两个参数n1,n2,在方法中将n1n2进行交换,使用ref。(*

public static void ChangeNum(ref int num1, ref int num2)

{

 

int temp = 0;

temp = num1;

num1 = num2;

num2 = temp;

}

static void Main(string[] args)

{

int num1 = 10;

int num2 = 20;

ChangeNum(ref num1, ref num2);

Console.WriteLine("num1{0}num2{1}", num1, num2);

Console.ReadKey();

}

 

[3]//请用户输入一个字符串,计算字符串中的字符个数,并输出。

Console.WriteLine("请输入一个字符串");

string str = Console.ReadLine();

Console.WriteLine("输入的字符串长度为:{0}",str.Length);

[4]//用方法来实现:计算1-100之间的所有整数的和。

int sum = 0;

for (int i = 0; i <= 100; i++)

{

sum += i;

}

 

Console.WriteLine("1-100之间的所有整数的和为{0}",sum);

[5]//用方法来实现:计算两个数的最大值。思考:方法的参数?返回值?扩展(*):计算任意多个数间的最大值(提示:params)。

public static int GetMax(ref int num1, ref int num2)

{

return num1 > num2 ? num1 : num2;

}

[6] //用方法来实现:计算1-100之间的所有奇数的和。(odd)

public static int GetOdd()

{

int sum = 0;

for (int i = 1; i < 100; i += 2)

{

sum += i;

}

return sum;

}

[7] //用方法来实现:判断一个给定的整数是否为"质数"

private static bool IsPrime(int num)

{

if (num<2)

{

return false;

}

for (int i = 2 ; i < num; i++)

{

if (num%i==0)

{

return false;

}

}

return true;

}

[8] //用方法来实现:计算1-100之间的所有质数(素数)的和。

public static int GetSumPrime()

{

int sum = 0;

for (int i = 1; i <= 100; i++)

{

if (IsPrime(i))

{

sum += i;

}

}

return sum;

}

 

[*] public static int GetSum()

{

int sum = 0;

for (int i = 2; i <= 100; i++)

{

bool b = true;

for (int j = 2; j < i; j++)

{

if (i % j == 0)//不是质数

{

b = false;

break;

}

}

if (b)

{

sum += i;

}

}

return sum;

}

[9] //用方法来实现:有一个整数数组:{ 1, 3, 5, 7, 90, 2, 4, 6, 8, 10 },找出其中最大值,并输出。不能调用数组的Max()方法。

public static int GetMax(int[] numbers)

{

int max = 0;

foreach (var item in numbers)

{

if (item > max)

{

max = item;

}

 

}

return max;

}

[10] //用方法来实现:有一个字符串数组:{ "马龙", "迈克尔乔丹", "雷吉米勒", "蒂姆邓肯", "科比布莱恩特" },请输出最长的字符串。

public static string GetMax(string[] s)

{

string max = s[0];

for (int i = 0; i < s.Length; i++)

{

if (s[i].Length > max.Length)

{

max = s[i];

}

}

return max;

}

[11] //用方法来实现:请计算出一个整型数组的平均值。{ 1, 3, 5, 7, 90, 2, 4, 6, 8, 10 }

//要求:计算结果如果有小数,则显示小数点后两位(四舍五入)。

public static double GetAvt(int[] n)

{

double sum = 0;

for (int i = 0; i < n.Length; i++)

{

sum += n[i];

}

return sum / n.Length;

}

static void Main(string[] args)

{

//用方法来实现:请计算出一个整型数组的平均值。{ 1, 3, 5, 7, 90, 2, 4, 6, 8, 10 }

//要求:计算结果如果有小数,则显示小数点后两位(四舍五入)。

int[] nums = { 1, 3, 5, 7, 90, 2, 4, 6, 8, 10 };

double avg=GetAvt(nums);

Console.WriteLine("这个数组的平均值是{0:0.00}",avg);

Console.ReadKey();

}

[12] //请通过冒泡排序法对整数数组{ 1, 3, 5, 7, 90, 2, 4, 6, 8, 10 }实现升序排序。

static void Main(string[] args)

{

//请通过冒泡排序法对整数数组{ 1, 3, 5, 7, 90, 2, 4, 6, 8, 10 }实现升序排序。

int[] nums = { 1, 3, 5, 7, 90, 2, 4, 6, 8, 10 };

//Array.Sort(nums);

//Array.Reverse(nums);

for (int i = 0; i < nums.Length - 1; i++)

{

for (int j = 0; j < nums.Length - 1 - i; j++)

{

if (nums[j] > nums[j + 1])

{

int temp = nums[j];

nums[j] = nums[j + 1];

nums[j + 1] = temp;

}

}

}

for (int i = 0; i < nums.Length; i++)

{

Console.WriteLine(nums[i]);

}

Console.ReadKey();

}

[13] //有如下字符串:【"患者:"大夫,我咳嗽得很重。" 大夫:"你多大年记?" 患者:"七十五岁。" 大夫:"二十岁咳嗽吗"患者:"不咳嗽。" 大夫:"四十岁时咳嗽吗?" 患者:"也不咳嗽。" 大夫:"那现在不咳嗽,还要等到什么时咳嗽?""】。需求:请统计出该字符中"咳嗽"二字的出现次数,以及每次"咳嗽"出现的索引位置。扩展(*):统计出每个字符的出现次数(后面)

 

string text = ""患者:"大夫,我咳嗽得很重。" 大夫:"你多大年记?" 患者:"七十五岁。" 大夫:"二十岁咳嗽吗"患者:"不咳嗽。" 大夫:"四十岁时咳嗽吗?" 患者:"也不咳嗽。" 大夫:"那现在不咳嗽,还要等到什么时咳嗽?""";

int index = 0;//索引

int count = 0;//记录出现多少次

string keyWord = "咳嗽";

//text这个字符串中找"咳嗽"这个词,如果找到了则把这个词所在的索引的值赋值给index,如果找不到则索引的值是-1;

// index = text.IndexOf(keyWord, index);

//text中找keyword这个词,从索引index=0开始查找,查找到了这个词就把这个词所在的索引赋值给index.然后再判断index的值是不是-1

while ((index=text.IndexOf(keyWord,index))!=-1)

{

count++;//记录个数

Console.WriteLine("索引是{0},=====出现了{1}",index,count);

index = index + keyWord.Length;

}

Console.ReadKey();

[*]

string str = "患者:"大夫,我咳嗽得很重。" 大夫:"你多大年记?" 患者:"七十五岁。" 大夫:" 二十岁咳嗽吗"患者:"不咳嗽。" 大夫:"四十岁时咳嗽吗?" 患者:"也不咳嗽。" 大夫:"那现在不咳嗽,还要等到什么时咳嗽?";

Dictionary<char, int> dic = new Dictionary<char, int>();

for (int i = 0; i < str.Length; i++)

{

if (str[i] == ' ')

{

continue;

}

if (dic.ContainsKey(str[i]))

{

dic[str[i]]++;

}

else

{

dic[str[i]] = 1;

}

}

 

 

foreach (KeyValuePair<char,int> item in dic)

{

Console.WriteLine("字符{0}出现了{1}",item.Key,item.Value);

}

Console.ReadKey();

[14] //将字符串" hello world, 世界 ! "两端空格去掉,并且将其中的所有其他空格都替换成一个空格,输出结果为:"hello world, 世界 !"

string str = " hello world, 世界 ! ";

str = str.Trim();

string[] strs = str.Split(new Char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

str = string.Join(" ", strs);

Console.WriteLine(str);

Console.ReadKey();

[15] //制作一个控制台小程序。要求:用户可以在控制台录入每个学生的姓名,

//当用户输入quit(不区分大小写)时,程序停止接受用户的输入,

//并且显示出用户输入的学生的个数,以及每个学生的姓名。效果如图:

List<string> list = new List<string>();

while (true)

{

Console.WriteLine("请输入学生的姓名");

string name = Console.ReadLine();

if (name != "quit")

{

//将每个人的姓名都存储到泛型集合中

list.Add(name);

}

else

{

break;

}

}

Console.WriteLine("学生个数是{0}", list.Count);

int count = 0;

foreach (var item in list)

{

if (item[0] == '')

{

count++;

}

 

}

Console.WriteLine("姓王的有{0}", count);

 

 

//foreach (var item in list)

//{

// Console.WriteLine(item);

//}

Console.ReadKey();

[16] //将普通日期格式:"201164" 转换成汉字日期格式:"二零一一年六月四日"。暂时不考虑10日、13日、23日等"带十"的问题。===后面讲

static void Main(string[] args)

{

//将普通日期格式:"201164" 转换成汉字日期格式:"二零一一年六月四日"。暂时不考虑10日、13日、23日等"带十"的问题。===后面讲

string str = "201164";

string date = ConvertToDate(str);//是字符串形式的日期转换成汉字格式的日期

Console.WriteLine(date);

Console.ReadKey();

}

private static string ConvertToDate(string str)

{

char[]chs= str.ToCharArray();//这个方法是把字符串变成字符数组

for (int i = 0; i < chs.Length; i++)

{

switch (chs[i])

{

case '0': chs[i] = ''; break;

case '1': chs[i] = ''; break;

case '2': chs[i] = ''; break;

case '3': chs[i] = ''; break;

case '4': chs[i] = ''; break;

case '5': chs[i] = ''; break;

case '6': chs[i] = ''; break;

case '7': chs[i] = ''; break;

case '8': chs[i] = ''; break;

case '9': chs[i] = ''; break;

}

}

string newDate = new string(chs);//字符串的构造函数

return newDate; //chs这个字符数组转换成字符串

}

[17] //创建一个Person类,属性:姓名、性别、年龄;方法:SayHi() 。再创建一个Teacher类继承Person类,扩展属性Salary,重写SayHi方法。

public class Person

{

private string _name;//姓名---字段

public string Name

{

get { return _name; }

set { _name = value; }

}

private char _gender;//性别----数据库中 存性别---bit 1---true 0-------false

public char Gender

{

get { return _gender; }

set { _gender = value; }

}

private int _age;

 

public int Age

{

get{ return _age;}

set{ _age = value;}

}

public virtual void SayHi()//虚方法

{

Console.WriteLine("大家好,我是人");

}

}

public class Teacher : Person

{

private double _salary;//工资

public double Salary

{

get { return _salary; }

set { _salary = value; }

}

public override void SayHi()

{

Console.WriteLine("大家好,我是老湿!");

}

}

[18] //请编写一个类:ItcastClass,该类中有一个私有字段_names,数据类型为:字符串数组,数组长度为5,并且有5个默认的姓名。要求:为ItcastClass类编写一个索引器,要求该索引器能够通过下标来访问_names中的内容。

public class ItcastClass

{

private string[] _names = { "老杨","老苏","老马","老牛","老虎"};

public string this[int index]

{

get

{

return _names[index];

}

set

{

_names[index] = value;

}

}

}

[19] //案例:使用WinForm窗体,制作一个简易计算器,默认为"请选择"。要求具有+-*/功能,当用户点击"等于"按钮时,如果输入的为非数字则提示用户。效果如图:

//窗体加载的事件

private void Form1_Load(object sender, EventArgs e)

{

comboBox1.SelectedIndex = 0;//告诉窗体加载的时候显示的是:请选择,

//

}

private void btnResult_Click(object sender, EventArgs e)

{

//获取两个文本框中的数字

//判断用户选择的是不是运算符号

if (comboBox1.SelectedIndex>0)//用户是否选择了符号

{

//获取第一个文本框中的内容,并且转换成数字类型,下面这行代码是有可能会报异常的

int number1 = Convert.ToInt32(txtNumber1.Text.Trim());//第一个数字

int number2 = Convert.ToInt32(txtNumber2.Text.Trim());//第二个数字

switch (comboBox1.Text)//这里存的是符号

{

case "+": txtSum.Text = (number1 + number2).ToString(); break;

case "-": txtSum.Text = (number1 - number2).ToString(); break;

case "*": txtSum.Text = (number1 * number2).ToString(); break;

case "/": txtSum.Text = (number1 / number2).ToString(); break;

}

}

else

{

MessageBox.Show("请选择运算符");

 

}

}

[20] //编写代码说明什么是方法重载。要求:至少编写3个方法。

public static void M(int n1, int n2)

{

 

}

 

public static void M(string s1, int n2)

{

 

}

 

public static void M(int n1, int n2, int n3)

{

 

}

[21] //请将字符串数组{ "中国", "美国", "巴西", "澳大利亚", "加拿大" }中的内容反转。

//然后输出反转后的数组。不能用数组的Reverse()方法。

string[] names = { "中国", "美国", "巴西", "澳大利亚", "加拿大" };

for (int i = 0; i < names.Length / 2; i++)

{

string temp = names[i];

names[i] = names[names.Length - 1 - i];

names[names.Length - 1 - i] = temp;

}

 

for (int i = 0; i < names.Length; i++)

{

Console.WriteLine(names[i]);

}

Console.ReadKey();

posted @ 2014-01-20 21:13  几维  阅读(830)  评论(0编辑  收藏  举报