c#程序设计第四版290页左右课后答案

代码部分

2-3

卡布列克运算

using System;
using System.Text;
class name
{
    static bool isnum(string s)
    {
        try
        {

            int n = Convert.ToInt32(s);
        }
        catch
        {
            return false;
        }
        return true;
    }
    static void Main(string[] args)
    {
        Console.Write("请输入一个4位整数");
        string s = Console.ReadLine();
        if (isnum(s))
        {
            int num = Convert.ToInt32(s);
            
            int max, min, i, j, temp;
           while (num != 6174 && num != 0)
            {
                i = 0;
               /* while (num != 0)
                {
                    each[i++] = num % 10;
                    num = num / 10;
                }*/
            char[] charArray = num.ToString().ToCharArray();
            int[] each =new int[charArray.Length];
            for(int k = 0; k < charArray.Length; k++)
            {
                each[k] = int.Parse(charArray[k].ToString());
                
            }
                for (i = 0; i < 3; i++)
                {
                    for (j = 0; j < 3 - i; j++)
                    {
                        if (each[j] > each[j + 1])
                        {
                            temp = each[j];
                            each[j] = each[j + 1];
                            each[j + 1] = temp;
                        }
                    }
                }
                min = each[0] * 1000 + each[1] * 100 + each[2] * 10 + each[3];
                max = each[3] * 1000 + each[2] * 100 + each[1] * 10 + each[0];
                num = max - min;
                Console.WriteLine("{0}-{1}={2}", max, min, num);
            }
        }
        Console.ReadKey();
    }
}

3-3

输入后使用掩码显示

using System;
using System.Collections.Generic;
using System.Text;

namespace SY3_3
{
    class Program
    {
        class Card
        {
            public long cardNo;
            decimal balance;
            int currentNum;
            static int number;
            decimal[] currentMoney;
            public Card()
            {
                currentMoney = new decimal[number];

            }

            public Card(long No, decimal Balance)
            {
                cardNo = No;
                balance = Balance;
                currentMoney = new decimal[number];
            }

            public void store(decimal Money, out int status)
            {
                if (currentNum == number)
                {
                    status = 0;
                    return;//本卡已达当日允许的业务次数
                }
                if (balance + Money < 0)
                {
                    status = -1;
                    return;
                }

                currentMoney[currentNum] = Money;
                balance += Money;
                currentNum++;
                status = 1;
            }

            public void show()
            {
                Console.WriteLine("卡号:{0},当前余额:{1},当日发生业务的次数:{2}", cardNo, balance, currentNum);
                for (int i = 0; i < currentNum; i++)
                    Console.WriteLine("当时存款/取款的情况:{0}", currentMoney[i]);
            }

            static public int Number
            {
                set
                {
                    number = value;
                }
            }

            public long CardNo
            {
                get
                {
                    return cardNo;
                }
            }

        }

        public class Test3_3
        {
            static void Main(string[] args)
            {
                Test3_3 T = new Test3_3();
                Card[] person;
                int Num, status, k;
                long CardNo;
                decimal Balance, Money;
                Console.Write("请输入允许当日存款或取款的总次数:");
                string sline = Console.ReadLine();
                Card.Number = int.Parse(sline);
                Console.Write("请输入某银行发出的储蓄卡总数:");
                sline = Console.ReadLine();
                Num = int.Parse(sline);
                person = new Card[Num];
                for (int i = 0; i < Num; i++)
                {
                    Console.Write("请输入卡号:");
                    sline = Console.ReadLine();
                    CardNo = long.Parse(sline);
                    Console.Write("请输入{0}账户余额:", CardNo);
                    sline = Console.ReadLine();
                    Balance = decimal.Parse(sline);
                    person[i] = new Card(CardNo, Balance);
                }

                while (true)//进行存取款 业务处理
                {
                    Console.WriteLine("现在正进行存款取款的业务处理,如果输入的卡号<0,则结束业务处理");
                    Console.Write("请输入卡号:");
                    sline = Console.ReadLine();
                    CardNo = long.Parse(sline);
                    if (CardNo < 0)
                        break;
                    k = T.Locate(person, CardNo);
                    if (k == -1)
                    {
                        Console.WriteLine("对不起,不存在{0}号的存储卡", CardNo);
                        continue;
                    }
                    Console.WriteLine("请输入卡金额(正值代表存款,负值代表取款):");
                    sline = Console.ReadLine();
                    Money = decimal.Parse(sline);
                    person[k].store(Money, out status);
                    switch (status)
                    {
                        case -1:
                            Console.WriteLine("存款余额不足,不能完成本次的取款业务");
                            break;
                        case 0:
                            Console.WriteLine("本卡已达当日允许的业务次数");
                            break;
                        case 1:
                            Console.WriteLine("成功处理完当前业务");
                            person[k].show();
                            break;
                    }

                }

            }

            int Locate(Card[] person, long CardNo)
            {
                int i;
                for (i = 0; i < person.Length; i++)
                    if (person[i].cardNo == CardNo)
                        return i;
                return -1;
            }
        }
    }
}
    }
}

4-2 水果类

using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;

namespace 试验4__2
{
    public class Frult
    {
        public virtual string Name
        {
            get { return ("Frult"); }
        }
    }
    public class Apple : Frult
    {
        public override string Name
        {
            get
            {
                return ("Apple");
            }
        }
}
public class Orange : Frult
    {
        public override string Name
        {
            get { return ("Orange"); }
        }
    }
    public class Banana : Frult
    {
        public override string Name
        {
            get
            {
                return ("Banana");
            }
        }
    }
    public class FrultBasket : IEnumerable
    {
        static int Max = 10;
        Frult[] basket = new Frult[Max];
        int count = 0;
        internal Frult this[int index]
        {
            get { return (basket[index]); }
            set { basket[index] = value; }
        }
        internal int Count
        {
            get { return (count); }
        }
        public void Add(Frult frult)
        {
            if (count > Max)
            {
                Console.WriteLine("超出水果筐容量!");
            }
            basket[count++] = frult;
        }
        public IEnumerator GetEnumerator()
        {
            return (new FrultBasketEnumerator(this));
        }
    }
    public class FrultBasketEnumerator : IEnumerator
    {
        FrultBasket frultBasket;
        int index;
        public void Reset()
        {
            index = -1;
        }
        public object Current
        {
            get { return (frultBasket[index]); }
        }
        public bool MoveNext()
        {
            if (++index >= frultBasket.Count)
                return false;
            else
                return true;
        }
        internal FrultBasketEnumerator(FrultBasket frultBasket)
        {
            this.frultBasket = frultBasket;
            Reset();
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            FrultBasket frultBasket = new FrultBasket();
            Console.WriteLine("Adding a Banana");
            frultBasket.Add(new Banana());
            Console.WriteLine("Adding a Apple");
            frultBasket.Add(new Apple());
            Console.WriteLine("");
            Console.WriteLine("The basket is holding!");
            foreach (Frult frult in frultBasket)
            {
                Console.WriteLine("a(n)" + frult.Name);
            }
            Console.Read();
        }
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值