using System;
using System.Collections.Generic;
using System.Text;namespace Test1_19
{
    class Program
    {
        static void Main(string[] args)
        {
            Int32 amount, cost, level;
            Console.WriteLine("请输入购买教科书的数量:\n");
            amount = Int32.Parse(Console.ReadLine());
            cost = amount * 25;
            level = Math.Log10(amount);
            switch(level)
            {
                case (level>1&&level<10):
                    cost *=0.9;
                    break;
                   
                case (level>100&&level<1000):
                    cost*=0.85;
                    break;
                case (level>1000):
                    cost*=0.8;
                    break;
                default :cost=cost;
                    break;
            }
            Console.WriteLine("费用:\n,{0}",cost);
        }
    }
}

解决方案 »

  1.   


                    if (level > 1 && level < 10) cost *= 0.9; 
                    else if (level > 100 && level < 1000) cost *= 0.85; 
                    else if (level > 1000) cost*=0.8; 
      

  2.   

    这种就不要用switch了,换成 if ... else if ... else
    if(level>1 && level <10)
        cost *= 0.9;
    else if (level >100 && level <1000)
        cost *= 0.85;
    else if(level > 1000)
        cost *= 0.8;
    其实像这种的用一个XML文件存储level范围和对应的cost会比较好
      

  3.   

    看来大家能把我的这个大意看懂了,这个我很高兴,呵呵
    但是这个是我做的一道书上的题目,要求是 根据level的值使用switch语句进行编程
    还有就是
    level = Math.Log10(amount);
    这句话是错的,提示说是无法进行转换成double类型的!
      

  4.   

    level = (int)Math.Log10((double)amount); 
      

  5.   

     那么switch这部分的编程怎么改写那》?
      

  6.   

    作业贴。            cost  = amount * 25; 
                level = (int)Math.Log10(amount); 
                switch(level) 
                { 
                    case 0: 
                        break; 
                    case 1: 
                        cost *= 0.9; 
                        break; 
                    case 2:
                        cost *= 0.85; 
                        break; 
                    default:
                        cost *= 0.8; 
                        break; 
                } 
      

  7.   

                cost  = amount * 25; 
                level = (int)Math.Log10(amount); 
                switch(level) 
                { 
                    case 0:          // 表示:   1 ≤ amount < 10
                        break; 
                    case 1:          // 表示:  10 ≤ amount < 100
                        cost *= 0.9; 
                        break; 
                    case 2:          // 表示: 100 ≤ amount < 1000
                        cost *= 0.85; 
                        break; 
                    default:          // 表示: 其他情形,也就是 amount ≥ 1000 或 amount < 1
                        cost *= 0.8; 
                        break; 
                } 
      

  8.   


    重点说一下,这个不是作业贴是我自学的无语!!!
    我把题目大概写一下吧
    就是 书的单价为25元,超过10本打9折,超过100本打85折,超过1000本打8折
    取amount以10为底的对数,转换为整数并赋值给变量level;
    根据level的值,使用switch分支语句,对原始费用进行折价。
    输出cost的值。
    大概就是这样了---------------------------------恩,这个可以,根据书上给的测试数据也通过了,但是我不明白为什么超过100,1000本的时候,怎么得知level的等级那?这里不清楚,谢谢提示~!