lesson26 用switch语句解决问题

任务一:【投票表决器】设计一个投票表决器,其功能是:

输入Y、y,打印agree

输入N、n,打印disagree

输入其他,打印lose

代码

/*
*Copyright @2017,CSDN学院
*All rights reserved.
*文件名称:main.c
*作    者:袁生
*完成日期:2017年10月23日
*版 本 号:v1.0
*问题描述:设计一个投票表决器,其功能是:输入Y、y,打印agree,
*输入N、n,打印disagree,输入其他,打印lose
*/
#include <stdio.h>
int main()
{
    char c;
    scanf("%c",&c);
    switch(c)
    {
    case 'Y':         //执行持续到break才跳出switch
    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’。

代码

/*
*Copyright @2017,CSDN学院
*All rights reserved.
*文件名称:main.c
*作    者:袁生
*完成日期:2017年10月23日
*版 本 号:v1.0
*问题描述:给出一百分制成绩,要求输出成绩等级’A’,’B’,’C’,’D’,’E’。
*90分以上为’A’,80-89分为’B’,70-79分为’C’,60-69分为’D’,60分以下为’E
*/
#include <stdio.h>

int main()
{
    int score,grade;
    scanf("%d",&score);
    grade=(score>=0)+(score<60)+(score<70)+(score<80)+(score<90)+(score<=100);
    switch (grade)
    {
    case 0:
    case 1:
        printf("data error");   //输入分数不在[0~100]内输出错误信息
        break;
    case 2:
        printf("%c",'A');       //90分及以上输出'A'
        break;
    case 3:
        printf("%c",'B');       //80~89输出'B'
        break;
    case 4:
        printf("%c",'C');       //70~79输出'C'
        break;
    case 5:
        printf("%c",'D');       //60~69输出'D'
        break;
    case 6:
        printf("%c",'E');       //60分以下输出'E'
    }
    return 0;
}

心得

switch语句解决连续区间分段问题时,主要难点是完成连续向不连续的转换,可以将分段区域转化成一个一个的整数来解决问题。


任务三:【本月有几天?】输入年份和月份,输出本月有多少天

代码

/*
*Copyright @2017,CSDN学院
*All rights reserved.
*文件名称:main.c
*作    者:袁生
*完成日期:2017年10月23日
*版 本 号:v1.0
*问题描述:输入年份和月份,输出本月有多少天
*/
#include <stdio.h>
int main()
{
    int month,year;
    scanf("%d %d",&year,&month);
    switch (month)
    {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
        printf("本月31天");
        break;
    case 4:
    case 6:
    case 9:
    case 11:
        printf("本月30天");
        break;
    case 2:
        if(year%400==0||(year%100!=0&&year%4==0))
            printf("本月29天");
        else
            printf("本月28天");
    }
    return 0;
}

心得

二月存在变数,放到最后写清晰明了,闰年判断:能整除4并且不能整除100,或者直接能整除400就是闰年。


任务四:【定期存款利息计算器】输入存款金额并选择存款种类,计算出利息(不计利息税)和本息合计。要求使用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%。

代码

/*
*Copyright @2017,CSDN学院
*All rights reserved.
*文件名称:main.c
*作    者:袁生
*完成日期:2017年10月23日
*版 本 号:v1.0
*问题描述:输入存款金额并选择存款种类,计算出利息(不计利息税)和本息合计
*/
#include <stdio.h>
int main()
{
    int type,day;
    float interest,principal;
    printf("欢迎使用利息计算器!\n");
    printf("请输入存款金额: ");
    scanf("%f",&principal);
    printf("======存款期限======\n");
    printf("1. 活期存款\n2. 3个月\n3. 6个月\n4. 一年\n");
    printf("5. 二年\n6. 三年\n7. 五年\n");
    printf("请输入存款期限代号: ");
    scanf("%d",&type);
    switch (type)
    {
    case 1:
        printf("请输入存款天数:");
        scanf("%d",&day);
        interest=principal*0.005*day/365;   //活期存款年利率0.5%
        break;
    case 2:
        interest=principal*0.031*0.25;      //定期存三个月年利率3.10%
        break;
    case 3:
        interest=principal*0.033*0.5;       //定期存六个月年利率3.30%
        break;
    case 4:
        interest=principal*0.035*1.0;       //定期存一年 年利率3.50%
        break;
    case 5:
        interest=principal*0.044*2.0;       //定期存两年 年利率4.40%
        break;
    case 6:
        interest=principal*0.050*3.0;       //定期存三年 年利率5.00%
        break;
    case 7:
        interest=principal*0.055*5.0;       //定期存五年 年利率5.50%
        break;
    default:
        printf("选择存款类型错误!\n");
        printf("感谢您的使用,欢迎下次光临!\n");
        return 0;
    }
    printf("到期利息为:%f 元,本息合计 %.2f 元。\n",interest,interest+principal);
    printf("感谢您的使用,欢迎下次光临!\n");
    return 0;
}

运行结果





猜你喜欢

转载自blog.csdn.net/epsilono1/article/details/78324568
今日推荐