关于C Primer Plus 第8章 编程练习第8题

编写一个程序,  显示一个提供加法、减法、乘法、除法的菜单。获得用户选择的选项后,程序提示用户输入两个数字,然后执行用户刚才选择的操作。该程序只接受菜单提供的选项。程序使用float类型的变量储存用户输入的数字,如果用户输入失败,则允许再次输入。进行除法运算时,如果用户输入0作为第2个数(除数),程序应提示用户重新输入一个新值。

#include <stdio.h>

int get_choice(void);
float get_float(void);
int get_first(void);
float add(float a,float b);
float subtract(float a,float b);
float multiply(float a,float b);
float divide(float a,float b);

int main()
{
    int choice;
    float first,second;
    while((choice=get_choice())!='e')
    {
        printf("Enter first num:");
        first=get_float();
        printf("Enter second num:");
        second=get_float();

        while(choice=='d'&&second==0)
        {
            printf("Enter a number other than 0:");
            second = get_float();
        }
        switch(choice)
        {
            case 'a':printf("%f+%f=%f\n",first,second,add(first,second));
                    break;
            case 'b':printf("%f-%f=%f\n",first,second,subtract(first,second));
                    break;
            case 'c':printf("%f*%f=%f\n",first,second,multiply(first,second));
                    break;
            case 'd':printf("%f/%f=%f\n",first,second,divide(first,second));
                    
        }

    }

    printf("bye,bye");
    return 0;
}
int get_choice(void)
{
    int ch;
    printf("Enter the operation of your choice:\n");
    printf("%-20s%-20s\n","a. add","b. subtract");
    printf("%-20s%-20s\n","c. multiply","d. divide");
    printf("e. quit\n");
    ch=get_first();
    while (ch<'a'||ch>'e')
    {
        printf("Please respond with a,b,c,d,e\n");//重复输出
        ch=get_first();
    }
    return ch;
}

int get_first(void)
{
    int ch;
    ch=getchar();
    while(getchar()!='\n')
        continue;
    return ch;
}
float get_float(void)
{
    float input;
    char ch;

    while(scanf("%f",&input)!=1)
    {
        while ((ch=getchar())!='\n')
            putchar(ch);
        printf(" is not a number,such as 1.0,12E3 or 1.5\n");//处理错误输出
    }
     while(getchar()!='\n')
            continue;
    return input;
}
float add(float a,float b)
{
   return a+b;
}
float subtract(float a,float b)
{
    return a-b;
}
float multiply(float a,float b)
{
    return a*b;
}
float divide(float a,float b)
{
   return a/b;
}

阅读更多
想对作者说点什么? 我来说一句

C Primer Plus第6版编程习题答案

2016年11月03日 288KB 下载

没有更多推荐了,返回首页

不良信息举报

关于C Primer Plus 第8章 编程练习第8题

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭