c#基础之一

1.声明两个变量:int n1 = 10, n2 = 20;要求将两个变量交换,最后输出n1为20,n2为10。(很多种写法)
int tmp = n1;n1 = n2;n2 = tmp;

n1 = n1 + n2;n2 = n1 - n2;n1 = n1 - n2;

n1 = n1 ^ n2;n2 = n1 ^ n2;n1 = n1 ^ n2;

n2 = n1 + (n1 = n2) * 0;

2.交换两个变量,封装成方法。(值类型和引用类型的区别)
void Swap(ref int n1,ref int n2)
{
int tmp = n1;
n1 = n2;
n2 = tmp;
}

3.通过编程计算1+2-3+4-5+6-7+......100的值。
int iSum = 0;

//循环1-100的每一个数字
for (int i = 1; i <= 100; i++)
{
if(i == 1 || i % 2 == 0)
{

iSum += i;
}
else
{

//奇数
iSum += (-i);
}
}

4.请用户输入一个字符串,计算字符串中的字符个数,并输出

string msg = "你好a!中国 123";

//字符串的Length属性表示字符串中字符的个数,无论是中文字符还是英文字符,一个字符就是一个字符,不是字节数
Console.WriteLine("字符串的个数是:{0}", msg.Length);

5.定义方法来实现:计算两个数的最大值。提示:方法有几个参数?返回值是什么?【思考】:计算任意多个数间的最大值(提示:params)。

private static int GetMaxValue(int n1,int n2)
{
return n1 > n2 ? n1 : n2;
}

private static int GetMaxValue(params int[] arr)
{
int max = arr[0];
for (int i = 1; i < arr.Length; i++)
{
if(max < arr[i])
{
max = arr[i];
}
}
return max;
}

6.计算1-100之间的所有整数的和

int iSum = 0;
for (int i = 1; i <= 100; i++)
{
iSum += i;
}

7.计算1-100之间的所有奇数的和。

int iSum = 0;
for (int i = 1; i <= 100; i++)
{
if (i % 2 != 0)
{
iSum += i;
}
}

8.定义方法来实现:判断一个给定的整数是否为“质数”。Prime Number

private static bool IsPrimeNumber(int n)
{
if (n > 1)
{
for (int i = 2; i < n; i++)
{
if(n % i == 0)
{
return false;
}
}
return true;
}
else
{
throw new ArgumentException("数字小于1不是质数");
}
}

9.计算1-100之间的所有质数(素数)的和。

int iSum = 0;
for (int i = 2; i <= 100; i++)
{

//对于每个数字判断是否是一个质数
if (IsPrimeNumber(i))
{
iSum += i;
}
}

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

private static int GetMaxValueFromArray(int[] arr)
{
int max = arr[0];
for (int i = 1; i < arr.Length; i++)
{
if(max < arr[i])
{
max = arr[i];
}
}
return max;
}

11.定义方法来实现:有一个字符串数组:{ "马龙", "迈克尔乔丹", "雷吉米勒", "蒂姆邓肯", "科比布莱恩特" },请输出字符数最多的字符串。
private static string GetLongName(string[] msg)
{
string longName = msg[0];
for (int i = 1; i < msg.Length; i++)
{
if(longName.Length < msg.Length)
{
longName = msg[i];
}
}
return longName;
}

12.定义方法来实现:请计算出一个整型数组的平均值。{ 1, 3, 5, 7, 90, 2, 4, 6, 8, 10 }。要求:计算结果如果有小数,则显示小数点后两位(四舍五入)。Math.Round()
private static double GetAvgFromArray(int[] arr)
{
int iSum = 0;
for (int i = 0; i < arr.Length; i++)
{
iSum += arr[i];
}
return Math.Round((iSum * 1.0) / arr.Length,2);
}

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

//冒泡排序,这个排序方法无需返回值,因为数组本身就是引用类型,引用类型在方法中修改以后,外面的变量可以获得修改后的值,所以不需要返回值

private static void MySort(int[] arr)
{
for (int i = 0; i < arr.Length - 1; i++)
{
for (int j = arr.Length - 1; j > i; j--)
{
if(arr[j] < arr[j-1])
{
int tmp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = tmp;
}
}
}
}

14.请输入一个十进制数字,计算出对应的二进制数字,以字符串方式输出。如:十进制数字120,输出结果为"1111000"。

private static string GetBinaryNumber(int num)
{
List<string> list = new List<string>();
while (num >= 2)
{
int shang = num / 2;
int yushu = num % 2;
list.Add(yushu.ToString());
num = shang;
}
list.Add(num.ToString());
list.Reverse();
return String.Join("",list.ToArray());
}

15.请用户输入一个年份,判断该年份是否为闰年。判断闰年条件:1>能被4整除但不能被100整除2>能被400整除的

private static bool IsLeapYear(int year)
{
if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
{
return true;
}
else
{
return false;
}
}

16.在控制台输出如下显示的“乘法口诀表”。

for (int i = 1; i <= 9; i++)
{
for (int j = 1; j <= i; j++)
{
Console.Write("{0}*{1}={2}\t",j,i,j*j);
}
Console.WriteLine();
}

17.自己编写一个函数,实现类似.net中Trim()函数的功能:去掉字符串两端的空格。

private static string MyTrim(string msg)
{
int start = 0;
int end = msg.Length - 1;
while(start < msg.Length)
{
if(!char.IsWhiteSpace(msg[start]))
{
break;
}
start++;
}

while(end >= start)
{
if(!char.IsWhiteSpace(msg[end]))
{
break;
}
end--;
}
return msg.Substring(start,end-start+1);
}

18.随机生成10个1-100之间的不重复的偶数,填充到List<int>集合中。

List<int> list = new List<int>();
Random random = new Random();
int index = 0;
while(list.Count < 10)
{

//随机生成一个1-100之间的数字
int num = random.Next(1,101);
if(num % 2 == 0 && !list.Contains(num))
{
list.Add(num);
}
index++;
}
foreach (int item in list)
{
Console.WriteLine(item);
}
Console.WriteLine("============");
Console.WriteLine(index);

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

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

//使用IndexOf(),该方法返回在整个字符串中,指定的字符或字符串第一次出现的索引位置,如果没有找到指定的字符或者字符串则返回-1
while((index = msg.IndexOf(word,index)) != -1)
{
Console.WriteLine("第{0}次出现【咳嗽】,出现的索引位置是:{1}",count,index);
index = index + word.Length;
count++;
}

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

string msg = " hello world,你 好 世界 ! ";
msg = msg.Trim();
string[] result = msg.Split(new char[]{' '},StringSplitOptions.RemoveEmptyEntries);
string str = String.Join(" ",result);
Console.WriteLine(str);

21.请统计出数组:{1,2,3,4,5,6,7,8,9,1,2,3,79,23,45,64,9,3,2,4}中的不重复的数字的个数。【思考】如果题目要求变更为去除重复数字放到一个新数组中,如何实现?

统计不重复的元素的个数

int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 79, 23, 45, 64, 9, 3, 2, 4, 1, 1, 1, 1, 1, 1 };

int count = 0;
for (int i = 0; i < arr.Length; i++)
{
bool b = true;
for (int j = 0; j < arr.Length; j++)
{
if(arr[i] == arr[j] && i != j)
{
b = false;
break;
}
}
if(b)
{
count++;
}
}
Console.WriteLine("不重复的元素的个数是:{0}",count);

去除重复

int[] arr = { 1, 2, 3, 4, 79, 79, 5, 6, 7, 8, 9, 1, 2, 3, 79, 23, 45, 64, 9, 3, 2, 4, 1, 1, 1, 1, 1, 1, 79, 79 };//1,1,1,1,1,2,2,2,3,4,5,6
Array.Sort(arr);
List<int> list = new List<int>();
for (int i = 0; i < arr.Length - 1; i++)
{
if(arr[i] != arr[i+1])
{
list.Add(arr[i]);
}
}
list.Add(arr[arr.Length-1]);
for (int i = 0; i < list.Count; i++)
{
Console.WriteLine(list[i]);
}

22.

制作一个控制台小程序。要求:用户可以在控制台录入每个学生的姓名,当用户输入quit(不区分大小写)时,程序停止接受用户的输入,并且显示出用户输入的学生的个数,以及每个学生的姓名。
List<string> list = new List<string>();
string userName = string.Empty;
int count = 0;
do
{
Console.WriteLine("请输入姓名:");
userName = Console.ReadLine();
if (userName.IndexOf('王') == 0)
{
count++;
}
list.Add(userName);
}while(userName.ToLower() != "quit");
list.RemoveAt(list.Count - 1);
Console.WriteLine("共输入了:{0}个学生,每个学生信息是:", list.Count);
foreach (string name in list)
{
Console.WriteLine(name);
}
Console.WriteLine("姓王的同学的个数是:{0}", count);

猜你喜欢

转载自www.cnblogs.com/zhoupp/p/9669409.html