2013116-基础练习
[1]//声明两个变量:int n1 = 10, n2 = 20;要求将两个变量交换,最后输出n1为20,n2为10。扩展(*):不使用第三个变量如何交换?
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,在方法中将n1与n2进行交换,使用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] //将普通日期格式:"2011年6月4日" 转换成汉字日期格式:"二零一一年六月四日"。暂时不考虑10日、13日、23日等"带十"的问题。===后面讲
static void Main(string[] args)
{
//将普通日期格式:"2011年6月4日" 转换成汉字日期格式:"二零一一年六月四日"。暂时不考虑10日、13日、23日等"带十"的问题。===后面讲
string str = "2011年6月4日";
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();