编程纠错--help others--计算器--又是忘记消除缓存还有函数定义的问题

http://bbs.bccn.net/viewthread.php?tid=433229&page=1&extra=#pid2419992

 

/*显示一个菜单,提供加减乘除选项,选择后程序要求输入2个数,并执行选择的操作*/
#include <stdio.h>
char get_chioce ();//选择部分
void chuli_fir();//第一个数字的处理
void chuli_sec();//第二个数字的处理
//char get_first(void);
void jiafa();//加法
void jianfa();//减法
void chengfa();//乘法
void chufa();//除法
float first_n;//第一个数字
float second_n;//第二个数字

int main ()
{
    char chioce;   //改为char,要对应变量的类型
    chioce=get_chioce();//选择
    while( (chioce!= 'q'))
    {
        switch(chioce)
        {
            case 'a':jiafa();
                break;
            case 'b':jianfa();
                break;
            case 'c':chengfa();
                break;
            case 'd':chufa();
                break;
        }
        
    }//endof while( (chioce = get_chioce()) != 'q')
    printf("再见!\n");    
    return 0;
}//endof mian()


char get_chioce(void)
{
    char c;
    
    printf("请选择你的操作:\n");
    printf("a.加法\tb.减法\n");
    printf("c.乘法\td.除法\n");
    printf("q.退出\n");
    printf("请输入a、b、c、d或q:");

    scanf("%c", &c);
    <span style="BACKGROUND-COLOR: #ff0000">getchar();   //作用同楼上的一样,消除缓存,记住对于字符的输入问题,容易将换行键错误的当作字符变量
</span>    while( (c<'a' || c>'d') && c!='q')
    {
        printf("请输入有效的a、b、c、d或q:");
        scanf("%c", &c);
       <span style="BACKGROUND-COLOR: #ff0000">getchar(); //消除缓存
    }
</span>    return c;
}//endof get_chioec()


void chuli_fir()//第一个数字的处理
{
        
    printf("请输入第一个数字:");
    while(scanf("%f", &first_n) != 1)
    {
        printf("这不是一个数字,请输入一个数字,如2.5、-1.78E8或3:");
        break;
    }    
   
}//endof chuli_fir()


void chuli_sec()//第二个数字的处理
{   
    printf("请输入第二个数字:");
    while(scanf("%f", &second_n) != 1)
    {
        printf("这不是一个数字,请输入一个数字,如2.5、-1.78E8或3:");
    }  
}//endof chuli_sec()


/*char get_first(void)
{
    int ch;

    ch = getchar();
    while(getchar() != '\n')
        continue;

    return ch;
}//endof get_first()*/

void jiafa()//加法
{
    chuli_fir();
    chuli_sec();
    printf("%.2f+%.2f=%.2f\n", first_n, second_n,first_n+second_n);
}//endof jiafa()


void jianfa()//减法
{
    chuli_fir();
    chuli_sec();
    printf("%.2f-%.2f=%.2f\n", first_n, second_n, 
                            first_n-second_n);
}//endof jianfa()


void chengfa()//乘法
{
    chuli_fir();
    chuli_sec();
    printf("%.2f*%.2f=%.2f\n", first_n, second_n, 
                            first_n*second_n);
}//endof chengfa()


void chufa()//除法
{
    chuli_fir();
    chuli_sec();
    <span style="BACKGROUND-COLOR: #ff0000">while(second_n==0){ printf("请重新输入第二个数字:");scanf("%f", &second_n);}//稍做改动
</span>    printf("%.2f/%.2f=%.2f\n", first_n, second_n,  first_n/second_n);
}//endof chufa()


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值