C#学习的第四天9.28

146 阅读3分钟

一、复习

1、输入n,输出n层的正三角加倒三角(菱形)

   int n = Convert.ToInt32(Console.ReadLine());
    for (int i = 1; i <= n; i++)
    {
  //正三角形的输出
        for (int k = 1; k <= n - i; k++)//空格个数等于层数减行号
        {
            Console.Write(" ");
        }
        for (int j = 1; j <= 2 * i - 1; j++)//星星数是2n-1
        {
            Console.Write("*");
        }
        Console.WriteLine();
    }
    //倒三角的输出
       //n-1层,第一层星星是n-1层的星星
       for(int k= 1; k <= n-1; k++)//控制倒三角的层数,k是当前层号
        {
            //循环每一层的空格数是,当前的层值
            for (int j= 1; j <= k; j++)
            {
                Console.Write(" ");
            }
          //循环每一层的星星数是,2(n-层数)-1
       for(int y= 1; y <= 2*(n-k)-1; y++)
        {
            Console.Write("*");
        }
        Console.WriteLine();
     }

2、输出九九乘法表

     //正着输出
     for(int i = 1; i <=9; i++)
     {
         for(int j = 1; j <=i; j++)
         {
             Console.Write(j + "*" + i + "=" + i * j + " ");
         }
         Console.WriteLine();
     }
    //反着输出
    for(int i = 9; i >=1; i--)//第一个乘数从9-1(相当于行数)
    {
     for (int j = 1; j<=i; j++)//第二个乘数,从1-9(相当于列数)
     {
         Console.Write(i+"*"+j+"="+i * j+" ");
     }
     Console.WriteLine();
    }

3、用一百文买一百只鸡,公鸡母鸡小鸡都要有,公鸡3文一只,母鸡5文一只,小鸡2文一只,请问公鸡(x)母鸡(y)小鸡(z)要买多少只,刚好凑够100文,请把所有满足条件的情况罗列出来

    int x, y, z;100=3X+5Y+2Z,X+Y+Z<=100,输出xyz的值
   for(int x = 1; x<=100/3; x++)//100文全部买公鸡最多买100/3==33只
    {
        for(int y = 1; y<=20; y++)//100文全部买母鸡最多买100/5==20只
        {
            for (int z = 1;z<=50 ; z++)
            {
                if (3 * x + 5 * y + 2 * z == 100 && x + y + z <=100)
                {
                    Console.WriteLine("公鸡的数量是{0} 母鸡的数量是{1} 母鸡的数量是{2}", x,y,z);
                }
            }
        }
    }

3.2、百文百鸡升级版(随机输入鸡的价钱)

    Console.WriteLine("请输入公鸡的价钱");
    int a = Convert.ToInt32(Console.ReadLine());
    Console.WriteLine("请输入母鸡的价钱");
    int b = Convert.ToInt32(Console.ReadLine());
    Console.WriteLine("请输入小鸡的价钱");
    int c = Convert.ToInt32(Console.ReadLine());
    for (int x = 1; x <= 100 / a; x++)//100文全部买公鸡最多买100/3==33只
    {
        for (int y = 1; y <= 100/b; y++)//100文全部买母鸡最多买100/5==20只
        {
            for (int z = 1; z <=100/c; z++)
            {
                if (a * x + b * y + c * z == 100 && x + y + z <= 100)
                {
                    Console.WriteLine("公鸡的数量是{0} 母鸡的数量是{1} 母鸡的数量是{2}", x, y, z);
                }
            }
        }
    }

4、输入两个整数num1,num2,输出这两个整数的最大公约数,

    //最大公约数,能够同时被这两个数整除的最大数
    //小大
    Console.WriteLine("请输入两个整数");
    int x = Convert.ToInt32(Console.ReadLine());
    int y = Convert.ToInt32(Console.ReadLine());
    int c;
    if (x > y)
    {
        c = x;
        x = y;
        y = c;

    }
    if (y % x == 0)
    {
        Console.WriteLine("最大公约数是{0}", x);
    }
    else
    {
        for (int i = x; i > 0; i--)//i是从最小数开始减到1,遍历i的值满足x和y都能整除的,从大到小遍历,因为是最大公约数,所以找到第一个就直接break跳出循环;
        {
            if (y % i == 0 && x % i == 0)
            {
                Console.WriteLine("{0}和{1}的最大公约数是{2}", x, y, i);
                break;
            }

        }

    }

4.2最小公倍数

    输入两个整数num1,num2,输出这两个整数的最小公倍数,
    //最小公倍数,能够同时除两个数
    //小大
     Console.WriteLine("请输入两个整数");
     int x = Convert.ToInt32(Console.ReadLine());
     int y = Convert.ToInt32(Console.ReadLine());
     int c;
     if (x > y)
     {
         c = x;
         x = y;
         y = c;

     }
         if (y % x == 0)
         {
        Console.WriteLine("{0}和{1}的最小公倍数是{2}", x, y, y);

         }
        else
        {
                for (int i = y; ; i += y)
                 {
                    if (i % x == 0)
                    {
                Console.WriteLine("{0}和{1}的最小公倍数是{2}", x, y, i);
                        break;
                    }

                 }
        }

二、随机数方法,数组,字符串等

1、随机数例题

    Random r = new Random();
    //生成一个随机数,里面有一个方法Next(a,b),从a到b-1(不包括b)
     //随机输出一个1-10(不包括10)的数
     Random r = new Random();
     int n = r.Next(1, 10);
     Console.WriteLine(n);

2、系统生成一个随机数(1-100),让玩家猜数字,猜的比随机数小,输出猜小了,猜的比随机数大,输出猜大了,猜中的话输出猜中了并且结束游戏

    Random r = new Random();//定义一个对象
     int n = r.Next(1, 101);
     Console.WriteLine(n);

     while(true)
     {
         Console.WriteLine("请输入您猜的数字");
         int a = Convert.ToInt32(Console.ReadLine());
         if (a < n)
         {
             Console.WriteLine("小了");
         }
         else if (a > n)
         {
             Console.WriteLine("大了");
         }
         else
         {
              Console.WriteLine("结束");
                         break;
         }

     }

3、数组

例1、录入一个学生系统信息,要录取10个学生的年龄,平常就要创建10个变量

    //使用一个大的盒子来存一组数据,数组,引用类型,和普通的数据类型在内存在存的位置不一样不一样,存在堆中

例2、定义一个数组,包括内容

    int[] year = {1,2,3,4,5,6,7};//数组用的是大括号,
    Console.WriteLine(year.Length);//计算数组的长度
    //第二种定义数组的方式,限定长度,空数组,int默认里面全是0;
   int[] id;//初始化声明
    id = new int [10];//生产一个数组,长度为10
    //读取数组中的值,通过下标读取,从0开始
    Console.WriteLine(id[0]);
    int id[0]=1;//更改数组元素的值

例3、

    int[] dd;//初始化声明
    dd = new int[2] {1,2};//生产一个数组,长度为10
    //读取数组中的值,通过下标读取,从0开始,
    Console.WriteLine(dd);

4、for循环遍历数组

    for(int i = 0; i < year.Length; i++)
    {
        Console.Write (year[i]);
    }

5、foreach遍历数组

     foreach (int temp in year)//遍历数组,将值赋给temp
    {
        Console.Write(temp);
    }

4、关于字符串的方法

(1)、将字符串中的字母转大小写toupper/tolower

         string name = " 小明,同学,abcd ";
         Console.WriteLine(name.ToUpper());//小写变大写
         Console.WriteLine(name.ToLower());//大写变小写

(2)、将字符串中的左右两边的空格去掉Trim

         Console.WriteLine(name.Trim());

(3)、去掉左边的空格TrimStart

         Console.WriteLine(name.TrimStart());

(4)、去掉右边的空格TrimEnd

         Console.WriteLine(name.TrimEnd());

(5)、将字符串当成数组,也可以进行遍历,但是不能修改里面的值

         for(int i = 0; i < name.Length; i++)
         {
             Console.WriteLine(name[i]);
         }

(6)、字符串分割

         string[] school;
         school = name.Split(",");
         foreach(string temp in school)
         {
             Console.WriteLine(temp);
         }