C#对象和类--习题(1)

1)一个景区根据游人的年龄收取不同价格的门票,请编写游人类,根据年龄段决定能够购买门票价格并输出
在这里插入图片描述

 class XiTi
 {
    
    
  string name;
  int age;
  void Xiti1()
   {
    
    
  for (; ; )//死循环,类似的while(true){}
   {
    
    
    Console.WriteLine("请输入姓名:");
    name = Console.ReadLine();
    if (name == "n")
     {
    
    
      Console.WriteLine("退出程序");
      break;
     }
    else
      {
    
    
        Console.WriteLine("请输入年龄:");
        age = int.Parse(Console.ReadLine());
        if (age >= 18)
        {
    
    
         Console.WriteLine(name + "的年龄为:" + age + ",门票价格为20元");
        }
        else
        {
    
    
         Console.WriteLine(name + "的年龄为:" + age + ",门票免费");
        }
       }               
   }
 static void Main(string[] args)
  {
    
    
   XiTi xt = new Xiti();
   xt.Xiti1();
 }
}

2)写一个函数,接收a,b,c,计算ax²+bx+c=0的根
在这里插入图片描述

class XiTi
{
    
    
 void root(float a, float b, float c)
 {
    
    
  Console.WriteLine(a + "x²+" + "(" + b + ")" + "x+" + "(" + c + ")" + "=0的根为");
  float deta = (b * b - 4 * a * c);
  if 
  {
    
    
  Console.WriteLine("该三个数组成的一元二次方程无解。");
  }
   else
    {
    
    
     float x1 = ((-b) + (float)(Math.Sqrt(deta))) / (2 * a);
     float x2 = ((-b) - (float)(Math.Sqrt(deta))) / (2 * a);              
     Console.WriteLine("x1=" + x1);
     Console.WriteLine("x2=" + x2);
    }
 }
 static void Main(string[] args)
  {
    
    
  XiTi xt = new Xiti();
  Console.Write("a=");
  int a = int.Parse(Console.ReadLine());
  Console.Write("b=");
  int b = int.Parse(Console.ReadLine());
  Console.Write("c=");
  int c = int.Parse(Console.ReadLine());
  xt.root(a, b, c);
 }
}

3)简单实现银行存款取款功能
在这里插入图片描述
写该习题时,说不出的心酸,先解决了简单的存款,取款,退出功能,测试时发现可以欠钱,然后修改后,连续两次取超过存款的钱后,怎么取钱都不会扣钱了。慢慢琢磨,我才发现了while的强大之处了。

//业务选择导航
class Xiti
{
    
    
 void Choice()
 {
    
    
   Console.WriteLine("1.存款  2.取款  0.退出");
   Console.Write("请选择要办理的业务:");
   int a = int.Parse(Console.ReadLine());
   yewu(a);
  }
//存款,取款,退出功能
void yewu(int n)
 {
    
    
 switch (n)
  {
    
    
   case 1:
     Console.Write("请输入存款金额:");
     int save = int.Parse(Console.ReadLine());
     Console.WriteLine("存款成功");
     sum += save;
     Console.WriteLine();
     Console.WriteLine("***当前余额为:" + sum + "元***\n");
     Choice();
     break;
   case 2:
     Console.Write("请输入取款金额:");
     int draw = int.Parse(Console.ReadLine());                    
     while (sum <= draw)                                   
      {
    
    
       Console.WriteLine("余额不足,重新操作。");
       Console.WriteLine("\n***当前余额为:" + sum + "元***\n");
       Console.Write("请输入取款金额:");
       draw = int.Parse(Console.ReadLine());                      
       }                                       
        sum -= draw;
        Console.WriteLine("取款成功");                                                                          
        Console.WriteLine("\n***当前余额为:" + sum + "元\n");
        Choice();
        break;
    case 0:
      Console.WriteLine("程序结束");
      Environment.Exit(0);
      break;
   }
}
static void Main(string[] args)
  {
    
    
  XiTi xt = new Xiti();
  Console.WriteLine("1.存款  2.取款  0.退出");
  Console.Write("请选择要办理的业务:");
  int a = int.Parse(Console.ReadLine());
  xt.yewu(a);
  }
}

4)简单实现我行我素购物管理(练习导航的切换)
在这里插入图片描述

Class Xiti
{
    
    
void LoginMenu()
  {
    
    
    Console.WriteLine("欢迎使用我行我素购物管理系统");
    Console.WriteLine("1.登录系统");
    Console.WriteLine("2.退出");       
    Console.WriteLine("*******************************");                                       
    Console.Write("请选择,输入数字:");
    int a = int.Parse(Console.ReadLine());
    switch (a)
     {
    
    
      case 1:
         MainMenu();
         break;
      case 2:
         Environment.Exit(0);
         Console.WriteLine("程序结束");
         break;
      }
  }        
  void MainMenu()
  {
    
    
   Console.WriteLine("我行我素购物管理系统主菜单");
   Console.WriteLine("1.客户信息管理");
   Console.WriteLine("2.真情回顾");
   Console.WriteLine("*******************************");  
   Console.Write("请选择,输入数字或按0返回上一级菜单:");
   int a = int.Parse(Console.ReadLine());
   switch (a)
      {
    
    
         case 0: LoginMenu();break;
         case 1: Console.WriteLine("该功能暂未开放"); break;
         case 2: ZhengQing();break;
      }            
   }
   void ZhengQing()
   {
    
    
    Console.WriteLine("我行我素购物管理系统 > 真情回顾");
    Console.WriteLine("1.幸运大放送");
    Console.WriteLine("2.幸运抽奖");
    Console.WriteLine("3.生日问候");
    Console.WriteLine("*******************************");  
    Console.Write("请选择,输入数字或按0返回上一级菜单:");
   int a = int.Parse(Console.ReadLine());
   switch (a)
    {
    
    
     case 0: MainMenu();break;
     case 1: Console.WriteLine("执行幸运大放送");break;
     case 2:
     case 3: Console.WriteLine("该功能暂未开放!"); break;
     default: Console.WriteLine("输入有误");break;
    }
  }
static void Main(string[] args)
 {
    
    
  XiTi xt = new Xiti();
  xt.LoginMenu();
 }
}

这个章节的习题比较多,当要写长代码时,发现自己很大的不足。
代码冗余,以至于重复编写,很多可以写进方法里面,然后直接调用
虽然是简单的功能实现,但也应该需要清楚流程需求

趁着今天放假,把上个礼拜做的习题重新复习一遍,并写下来,也希望读者可以给更好的意见。

猜你喜欢

转载自blog.csdn.net/weixin_44706943/article/details/125830091