C#基础1

1. 声明两个变量:要求将两个变量交换。

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;

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

2、交换两个变量,封装成方法。

private static 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;
for (int i = 1; i <= 100; i++)
{
    if(i == 1 || i % 2 == 0)
    {
          iSum += i;
    }
    else
    {
          iSum += (-i);
    }
}

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

string str = @"你好@中国 123";
//字符串的Length属性表示字符串中字符的个数,无论中文字符还是英文字符,一个字符就是一个字符,不是字节数。
int len = str.Length;

5、计算1-100之间的所有整数的和。

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

6、计算1-100之间的所有奇数的和。

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

7、定义方法来实现:判断一个给定的整数是否为“质数”。

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不是质数!");
    }
}                                

8、定义方法来实现:计算任意多个数的最大值。

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

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

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

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

10、定义方法来实现:有一个整数数组,找出其中最大值,并输出。不能调用数组自身的Max()方法。

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

11、定义方法来实现:有一个字符串数组,请输出字符数最多的字符串。

private static string GetLongestName(string[] names)
{
    string longName = names[0];
    for (int i = 1; i < names.Length; i++)
    {
        if(longName.Length < names[i].Length)
        {
             longName = names[i];
        }
    }
    return longName;
}

12、定义方法来实现:请计算出一个整型数组的平均值。要求:计算结果如果有小数,则显示小数点后两位(四舍五入)。

private static double GetAvgFromArray(int[] nums)
{
    int iSum = 0;
    for (int i = 0; i < nums.Length; i++)
    {
        iSum += nums[i];
    }
    return Math.Round(iSum * 1.0 / nums.Length,2);
}

13、请通过冒泡排序法对整数数组实现升序排序。

private static void Mysort(int[] arrInt)
{
    for (int i = 0; i < arrInt.Length; i++)
    {
        for (int j = arrInt.Length - 1; j > i; j--)
        {
             if(arrInt[j-1] > arrInt[j])
             {
                  swap(ref arrInt[j-1],ref arrInt[j]);
             }
        }
    }
}

14、请输入一个十进制数字,计算出对应的二进制数字,以字符串方式输出。

private static string GetBinaryNumber(int n)
{
    List<string> list = new List<string>();
    while(n >= 2)
    {
         int shang = n / 2;//60 30 15 7 3 1 
         int yushu = n % 2;//000111
         list.Add(yushu.ToString());//000111
         n = shang;
     }
     list.Add(n.ToString());//0001111
     list.Reverse();//1111000
     return String.Join("", list.ToArray());
}

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

private static bool IsLeapYear(int iYear)
{
    if (iYear % 4 == 0 && iYear % 100 != 0 || iYear % 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*i);
    }
    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 rand = new Random();
int index = 0;
while(list.Count < 10)
{
    int num = rand.Next(1, 101);
    if(num % 2 == 0 && !list.Contains(num))
    {
         list.Add(num);
    }
    index++;
}
for (int i = 0; i < list.Count; i++)
{
    Console.WriteLine(list[i]);
}

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

//使用IndexOf(),该方法返回在整个字符串中,指定的字符或字符串第一次出现的索引位置,如果没有找到指定的字符或者字符串则返回-1
string msg = "患者:“大夫,我咳嗽得很重。”     大夫:“你多大年记?”     患者:“七十五岁。”     大夫:“二十岁咳嗽吗”患者:“不咳嗽。”     大夫:“四十岁时咳嗽吗?”     患者:“也不咳嗽。”     大夫:“那现在不咳嗽,还要等到什么时咳嗽?”";
string word = "咳嗽";
int index = 0;
int count = 0;
while((index = msg.IndexOf(word,index)) != -1)
{
    count++;
    Console.WriteLine("第{0}次出现【咳嗽】,出现索引是:{1}", count, index);
    index = index + word.Length;
}

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

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

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

//1>统计不重复的元素的个数
int[] arrInt = { 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 < arrInt.Length; i++)
{
    bool b = true;
    for (int j = 0; j < arrInt.Length; j++)
    {
        if (arrInt[i] == arrInt[j] && i != j)
        {
            b = false;
            break;
        }
    }
    if (b)
    {
        count++;
    }
}
Console.WriteLine("不重复的元素的个数是:{0}", count);
//2>去除重复
int[] arrInt = { 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(arrInt);
List<int> list = new List<int>();
for (int i = 0; i < arrInt.Length - 1; i++)
{
    if (arrInt[i] != arrInt[i + 1])
    {
        list.Add(arrInt[i]);
    }
}
list.Add(arrInt[arrInt.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);

23、将普通日期格式:“2011年6月4日” 转换成汉字日期格式:“二零一一年六月四日”。暂时不考虑10日、13日、23日等“带十”的问题。

private static string ConvertDate(string date)
{
    char[] chs = date.ToCharArray();
    for (int i = 0; i < date.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;
        }
    }
    return new string(chs);
}

猜你喜欢

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