C primer plus (第6版)编程练习8.11 8

#include <stdio.h>
#include <ctype.h>
int getfirst(void);
void menu(void);
void add(void);
void subtract(void);
void multiply(void);
void divide(void);
float getnum(void);

int main(void)
{
    char response;
    menu();
    while ((response = getfirst()) != 'q')
    {
	if (response == '\n') /* skip over newlines */
            continue;
        response = tolower(response); /* accept A as a, etc. */
        switch (response)
        {
            case 'a':add();
		     break;
            case 's':subtract();
                     break;
	    case 'm':multiply();
		     break;
	    case 'd':divide();
		     break;
	    default:printf("Please enter a, s, m, d, or q.\n");
                    menu();
                    break; // go to beginning of loop
	}
	menu();
     }
	printf("Bye.\n");
	return 0;
}
void menu(void)
{
    printf("********************************************************"
"*********\n");
    printf("Enter the operation of your choice:\n");
    printf("a. add\t\t s. subtract\n");
    printf("m. multiply\t d. divide\n");
    printf("q. quit\n");
    printf("********************************************************"
"*********\n");
}
int getfirst(void)
{
    int ch;
    ch = getchar();
    while (isspace(ch))
        ch = getchar();   /* skip over space */
    while (getchar() != '\n')
        continue;  /* skip over otherinput */
    return ch;
}
void add(void)
{
    float num1;
    float num2;
    printf("Enter first number: ");
    num1 = getnum();
    printf("Enter second number: ");
    num2 = getnum();
    printf("%.1f + %.1f = %.1f\n",num1,num2,num1 + num2);
}
void subtract(void)
{
    float num1;
    float num2;
    printf("Enter first number: ");
    num1 = getnum();
    printf("Enter second number: ");
    num2 = getnum();
    printf("%.1f - %.1f = %.1f\n",num1,num2,num1 - num2);
}
void multiply(void)
{
    float num1;
    float num2;
    printf("Enter first number: ");
    num1 = getnum();
    printf("Enter second number: ");
    num2 = getnum();
    printf("%.1f * %.1f = %.1f\n",num1,num2,num1 * num2);
}
void divide(void)
{
    float num1;
    float num2;
    printf("Enter first number: ");
    num1 = getnum();
    printf("Enter second number: ");
    while ((num2 = getnum()) == 0)
    {
        printf("Enter a number other than 0: ");
	continue;
     }
     printf("%.1f / %.1f = %.1f\n",num1,num2,num1 / num2);
}
float getnum(void)
{
     float num;
     char ch;
     while (scanf("%f",&num) != 1)
     {
	 while ((ch = getchar()) != '\n')
	     putchar(ch);
	 printf(" is not an number.\n");
	 printf("Please enter a number,such as 2.5,-1.78E8,or 3: ");
      }
      while ((getchar()) != '\n')
	  continue;
      return num;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值