lesson26 用switch语句解决问题

来源:互联网 发布:sql字符串中的单引号 编辑:程序博客网 时间:2024/06/06 19:20
任务一:【投票表决器】设计一个投票表决器,其功能是:

输入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;}

运行结果





原创粉丝点击