第26讲-利用switch语句解决问题-练习

练习一:投票表决器

/**
 *  设计一个投票表决器,其功能是:
 *  输入Y、y,打印agree
 *  输入N、n,打印disagree
 *  输入其他,打印lose
 *
 * @Author 陈淦森
 * @Version 1.0.1
 * @Date 2016年2月18日
 */
int main()
{
    char c;
    printf("请您投票:");
    scanf("%c", &c);
    switch(c)
    {
    case 'Y':
    case 'y':
        printf("agree");
        break;
    case 'N':
    case 'n':
        printf("disagree");
        break;
    default:
        printf("lose");
    }
    return 0;
}
练习二:成绩等级

/**
 *  给出一百分制成绩,要求输出成绩等级’A’,’B’,’C’,’D’,’E’。90分以上为’A’,80-89分为’B’,70-79分为’C’,60-69分为’D’,60分以下为’E’。
 *
 * @Author 陈淦森
 * @Version 1.0.1
 * @Date 2016年2月18日
 */
int main()
{
    int score;
    printf("请输入学生的分数:");
    scanf("%d", &score);
    int degree = score / 10;
    switch(degree)
    {
    case 10:
    case 9:
        printf("A");
        break;
    case 8:
        printf("B");
        break;
    case 7:
        printf("C");
        break;
    case 6:
        printf("D");
        break;
    case 5:
    case 4:
    case 3:
    case 2:
    case 1:
    case 0:
        printf("E");
        break;
    default:
        printf("error");
    }
    return 0;
}

练习三:分段函数求值switch语句版

/**
 * 从键盘输入x的值(要求为整型),根据公式1计算并输出x和y的值。要求用switch语句完成。
 *
 * @Author 陈淦森
 * @Version 1.0.1
 * @Date 2016年2月19日
 */
int main()
{
    int x, z;
    float y;
    printf("请输入一个整型值:");
    scanf("%d", &x);
    z = (x < 2) + (x < 6) + (x < 10);
    switch(z)
    {
    case 3:
        y = x;
        break;
    case 2:
        y = x * x + 1;
        break;
    case 1:
        y = sqrt(x + 1);
        break;
    case 0:
        y = 1 / (x + 1);
        break;
    default:
        printf("error!");
    }
    printf("x=%d, y=%f", x, y);
    return 0;
}
练习四:本月有几天?

/**
 * 编程序,输入年份和月份,输出本月有多少天。合理选择分支语句完成设计任务。
 *
 * @Author 陈淦森
 * @Version 1.0.1
 * @Date 2016年2月19日
 */
int main()
{
    int year, month, days;
    printf("请输入年份和月份:");
    scanf("%d %d", &year, &month);
    switch(month)
    {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
        days = 31;
        break;
    case 2:
        if(year%4==0 && year%100!=0 ||year%400==0)
        {
            days = 29;
        }
        else
        {
            days =28;
        }
        break;
    case 4:
    case 6:
    case 9:
    case 11:
        days = 30;
        break;
    default:
        printf("error!");
    }
    printf("%d年%d月有%d天", year, month, days);
    return 0;
}
练习五:个人所得税计算器switch语句版

/**
 * 编写选择结构程序,输入个人月收入总额,计算出他本月应缴税款和税后收入(计算办法见附:关于个人所得税的有关背景知识)。
 *(1)用switch语句完成;
 *(2)可以在下面程序的基本框架基础上完成,如需其他变量自行增加
 *
 * @Author 陈淦森
 * @Version 1.0.1
 * @Date 2016年2月19日
 */
int main()
{
    double dSalary, dTax=0, dNetIncome=0;
    printf("请输入您本月的收入总额(元):");
    scanf("%lf", &dSalary);
    // 下面求解应缴个人所得税dTax和税后收入dNetIncome
    double dStartVal = dSalary - 3500;
    if (dStartVal > 0)
    {
        int t = (dStartVal <= 1500) + (dStartVal <= 4500) + (dStartVal <= 9000) + (dStartVal <= 35000) + (dStartVal <= 55000) + (dStartVal <= 80000);
        switch(t)
        {
        case 6:
            dTax = dStartVal * 0.03;
            break;
        case 5:
            dTax = dStartVal * 0.1 - 105;
            break;
        case 4:
            dTax = dStartVal * 0.2 - 555;
            break;
        case 3:
            dTax = dStartVal * 0.25 - 1005;
            break;
        case 2:
            dTax = dStartVal * 0.3 - 2755;
            break;
        case 1:
            dTax = dStartVal * 0.35 - 5505;
            break;
        case 0:
            dTax = dStartVal * 0.45 - 13505;
            break;
        }
    }
    dNetIncome = dSalary - dTax;
    printf("您本月应缴个人所得税 %.2lf 元,税后收入是 %.2lf 元。\n", dTax, dNetIncome);
    printf("依法纳税,共享繁荣。谢谢使用!\n");
    return 0;
}

练习六:定期存款利息计算器

/**
 * 输入存款金额并选择存款种类,计算出利息(不计利息税)和本息合计。要求使用switch语句,根据选择的存款种类,确定利率和存期后计算。
 * 提示:利息=金额×年利率×存期(单位:年,3个月为0.25年,6个月为0.5年)。
 * 例如:1000元存6个月,利息=1000×0.033×0.5=16.5元
 * 利率使用2011年7月7日公布的年利率:3个月  3.10%,6个月 3.30%,一年 3.50%,二年 4.40%,三年 5.00%,五年 5.50%。
 *
 * @Author 陈淦森
 * @Version 1.0.1
 * @Date 2016年2月20日
 */
int main()
{
    double dPrincipal, dInterest = 0, dTotal = 0;
    printf("请输入存款金额:");
    scanf("%lf", &dPrincipal);
    printf("======存款期限======\n");
    printf("1. 活期存款\n");
    printf("2. 3个月\n");
    printf("3. 6个月\n");
    printf("4. 一年\n");
    printf("5. 二年\n");
    printf("6. 三年\n");
    printf("7. 五年\n");
    printf("请输入存款期限的代号:");
    int type;
    scanf("%d", &type);
    switch(type)
    {
    case 1:
        printf("请输入存款天数:");
        float days;
        scanf("%f", &days);
        dInterest = dPrincipal * 0.003 * (days / 365);
        break;
    case 2:
        dInterest = dPrincipal * 0.031 * 0.25;
        break;
    case 3:
        dInterest = dPrincipal * 0.033 * 0.5;
        break;
    case 4:
        dInterest = dPrincipal * 0.035 * 1;
        break;
    case 5:
        dInterest = dPrincipal * 0.044 * 2;
        break;
    case 6:
        dInterest = dPrincipal * 0.05 * 3;
        break;
    case 7:
        dInterest = dPrincipal * 0.055 * 5;
        break;
    default:
        printf("选择存款类型错误!\n");
        return -1;
    }
    dTotal = dPrincipal + dInterest;
    printf("到期利息为:%.2lf 元,本息合计共 %.2lf 元。\n", dInterest, dTotal);
    printf("感谢您的使用,欢迎下次光临!\n");
    return 0;
}
练习七:构造菜单

/**
 * 在应用程序中,很多都将各种功能设计了“菜单”供用户选择,本项目做些体验。
 *
 * @Author 陈淦森
 * @Version 1.0.1
 * @Date 2016年2月20日
 */
int main()
{
    int type;
    printf("====今天晚饭吃什么?====\n");
    printf("1. 山西刀削面\n");
    printf("2. 兰州拉面\n");
    printf("3. 西安羊肉泡馍\n");
    printf("4. 烟台焖子\n");
    printf("5. 西北风\n");
    printf("请选择一项:");
    scanf("%d", &type);
    switch(type)
    {
    case 1:
        printf("山西刀削面!西红柿肉汁两样调和都加上!\n");
        break;
    case 2:
        printf("兰州拉面,多加点牛肉啥!拉成韭叶子的!\n");
        break;
    case 3:
        printf("西安羊肉泡馍,吃老孙家的!\n");
        break;
    case 4:
        printf("烟台焖子,好七!\n");
        break;
    case 5:
        printf("喝西北风的娃伤不起……\n");
        break;
    default:
        printf("你选错了!\n");
    }
    return 0;
}








你可能感兴趣的:(C语言及程序设计初步)