| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1192 人关注过本帖
标题:关于加减乘除的C程序求助
只看楼主 加入收藏
jiangjun11
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2019-5-19
收藏
 问题点数:0 回复次数:1 
关于加减乘除的C程序求助
这个程序首先要求用户选择加/减/乘/除,如图片所示,输入d后,仍然显示要求输入a或s或m或d,相关的是char get_choice()函数,请看下问题出在哪里?

#include <stdio.h>
char get_choice(); /*读取加减乘除选项*/
char get_first(); /*只读取第一个字符*/
float get_num(); /*读取要计算的数字*/

int main()
{
    int choice;
    float num_1,num_2;
        
    while((choice=get_choice()) != 'q') /*期望输入字符a,s,m,d*/
    {
        printf("Enter first number:\n");
        num_1 = get_num();                /*输入第一个数字*/
        printf("Enter second number:\n");
        num_2 = get_num();                /*输入第二个数字*/
        switch(choice)
        {
            case 'a':    printf("%.2f + %.2f = %.2f.\n",num_1+num_2);/*如果输入字符a,做加法*/
                        break;
            case 's':    printf("%.2f - %.2f = %.2f.\n",num_1-num_2);/*如果输入字符s,做减法*/
                        break;
            case 'm':    printf("%.2f * %.2f = %.2f.\n",num_1*num_2);/*如果输入字符m,做乘法*/
                        break;
            case 'd':    if(num_2 == 0)                                /*做除法,如果分母等于0,要求重新输入*/
                            {
                                printf("Please enter a number other than 0:");
                                while((num_2 = get_num()) == 0)        /*一直输入,直到分母不等于0*/
                                    continue;
                                printf("%.2f / %.2f = %.2f.\n",num_1/num_2);
                                break;
                            }
                        else
                             printf("%.2f / %.2f = %.2f.\n",num_1/num_2);
                             break;
             default:    printf("Error!\n");
                         break;
        }
        printf("Bye!.\n");
    }
   
}

char get_choice()
{
    int ch;
   
    printf("Enter the operation of your choice:\n");
    printf("a. add            s. subtract\n");
    printf("m. multiply        d. divide\n");
    printf("q. quit\n");
    ch = get_first();
    while((ch != 'a' || ch != 's' || ch != 'm' || ch != 'd') && ch != 'q') /*如果输入的字符不等于a或s或m或d,并且不是q,那么要求重新输入*/
    {
        printf("Please respond with a,s,m,d or q.\n");
        ch = get_first();
    }
    return ch;
}

char get_first()
{
    int ch;
   
    ch = getchar();
    while(getchar() != '\n')  
        continue;            /*只读取第一个字符,跳过后续字符包括回车行*/
    return ch;
}

float get_num()
{
    float num;
    char ch;
   
    while((scanf("%f",&num)) != 1)    /*如果输入的不是数字*/
    {
        while((ch=getchar()) != '\n')
            putchar(ch);
        printf(" is not number.\n");
        printf("Please input a number:\n");
    }
    return num;
}

图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 输入 字符 while printf break 
2019-05-19 23:10
HUMMER军
Rank: 2
等 级:论坛游民
威 望:1
帖 子:7
专家分:19
注 册:2019-5-5
收藏
得分:0 
大哥 就这么喜欢用getchar嘛。。。
你输入字符用getchar我能理解,输入数字你也用getchar???
程序代码:
#include <stdio.h>
char get_choice(); /*读取加减乘除选项*/ 

float get_num(); /*读取要计算的数字*/ 

int main()
{
  char choice;
  float num_1,num_2;
      
  while((choice=get_choice()) != 'q') /*期望输入字符a,s,m,d*/ 
  {
    printf("Enter first number:\n");
    scanf("%f",&num_1);
    getchar();
    printf("Enter second number:\n");
    scanf("%f",&num_2); 
    getchar();
    switch(choice)
    {
      case 'a':
        printf("%.2f + %.2f = %.2f.\n",num_1,num_2,num_1+num_2);/*如果输入字符a,做加法*/ 
        break;
      case 's':    
        printf("%.2f - %.2f = %.2f.\n",num_1,num_2,num_1-num_2);/*如果输入字符s,做减法*/ 
        break;
      case 'm':    
        printf("%.2f * %.2f = %.2f.\n",num_1,num_2,num_1*num_2);/*如果输入字符m,做乘法*/ 
        break;
      case 'd':    
        if(num_2 == 0)                                /*做除法,如果分母等于0,要求重新输入*/ 
          {
            printf("Please enter a number other than 0:");
            while((num_2 = get_num()) == 0)        /*一直输入,直到分母不等于0*/ 
                continue;
            printf("%.2f / %.2f = %.2f.\n",num_1,num_2,num_1/num_2);
            break;
          }
        else 
          printf("%.2f / %.2f = %.2f.\n",num_1,num_2,num_1/num_2);
          break;
        default:    
          printf("Error! Bad input! Please input 'a' or 's' or 's' or 's' or 'q'!!!\n");
          break;
    }  
  }
  printf("Bye!.\n");
  return 0;
}

char get_choice()
{
  int ch;
  
  printf("Enter the operation of your choice:\n");
  printf("a. add            s. subtract\n");
  printf("m. multiply        d. divide\n");
  printf("q. quit\n");
  ch = getchar();
  getchar();

  return ch;
}



float get_num()
{
  float num;
  char ch;
  
  while((scanf("%f",&num)) != 1)    /*如果输入的不是数字*/ 
  {
    while((ch=getchar()) != '\n')
        putchar(ch);
    printf(" is not number.\n");
    printf("Please input a number:\n");
  }
  return num;
}


稍微改了一下 没有判断输入不是要求的五个字符,这里你自己修改一下吧。。。。

no code you say j8
no pics you say egg
2019-05-20 05:16
快速回复:关于加减乘除的C程序求助
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018662 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved