标题:一道字符输入/输出的问题
取消只看楼主
lzadddxxx
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-10-29
结帖率:100%
已结贴  问题点数:20 回复次数:2 
一道字符输入/输出的问题

本人目前在自学C primerplus,这是一道来自本书的练习题
以下是我的代码
程序代码:
#include<stdio.h>
#include<ctype.h>
char get_choice();
double get_number();
char get_first_char();


void main()
{
    char ch;
    double first,second,ans;
    while((ch=get_choice())!='q')
    {
        printf("Enter first number:");
        first=get_number();
        printf("Enter second number:");
        while((second=get_number())==0&&ch=='d')
            printf("Enter a number other than 0:");
        switch(ch)
        {
            case 'a':ans=first+second;
                    printf("%.1f + %.1f = %.1f\n",first,second,ans);
                    break;
            case 's':ans=first-second;
                    printf("%.1f - %.1f = %.1f\n",first,second,ans);
                    break;
            case 'm':ans=first*second;
                    printf("%.1f * %.1f = %.1f\n",first,second,ans);
                    break;
            case 'd':ans=first/second;
                    printf("%.1f / %.1f = %.1f\n",first,second,ans);
                    break;
            default :printf("Systme error!");
                    break;
        }
    }
    printf("Bye.");
    //putchar(menu());
}
char get_choice()
{
    char 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_char();
    while(ch!='a'&&ch!='s'&&ch!='m'&&ch!='d'&&ch!='q')
    {
        printf("Please respond with a, s, m, d, or q.\n");
        ch=get_first_char();
    }

    return ch;
}

char get_first_char()
{
    char ch;

    while(isspace(ch=getchar()))
    {
        if(ch=='\n')
            printf("No alpha received,please try again.\n");
    }
    while(getchar()!='\n')
        continue;
    return ch;
}

double get_number()
{
    double n;
    char ch;

    while(scanf("%f",&n)!=1)
    {
        while((ch=getchar())!='\n')
          putchar(ch);
        printf(" is not an number.\n");
        printf("Please enter a number, such as 2.5, -1,7E8, or 3:");
    }
    return n;
}


运行到读入数据的函数时发现无法读入浮点数,自己找不到问题出在哪,发帖希望大家指点一下。
谢谢!
搜索更多相关主题的帖子: 练习题 second 
2016-03-08 00:25
lzadddxxx
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-10-29
得分:0 
感谢,将所有的double换为float后,问题已解决。
不过还是有小小的疑问:
1.double型浮点数应该用%f读取,为什么此处不能读入?
2.假如我要在此例使用更长的浮点精度应该如何实现?
2016-03-08 10:36
lzadddxxx
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-10-29
得分:0 
真是个再简单不过的错误,谢谢各位解答
2016-03-10 11:24



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-462243-1-1.html




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

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