| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 846 人关注过本帖
标题:这个程序在get nights()模块输入非整数,程序还是会继续运行,请问是什么 ...
取消只看楼主 加入收藏
Eahonxu
Rank: 1
等 级:新手上路
帖 子:113
专家分:0
注 册:2016-7-13
结帖率:96.15%
收藏
已结贴  问题点数:15 回复次数:3 
这个程序在get nights()模块输入非整数,程序还是会继续运行,请问是什么问题?
#include <stdio.h>
#define QUIT 5
#define HOTEL1 80.00
#define HOTEL2 125.00
#define HOTEL3 155.00
#define HOTEL4 200.00
#define DISCOUNT 0.95
#define STARS "***************************"

int menu();
int getnights();
void showprice(double, int);
int main()
{
    int nights;
    double hotel_rate;
    int code;
   
    while((code = menu()) != QUIT)
    {
        switch(code)
        {
            case 1: hotel_rate = HOTEL1;
                break;
            case 2: hotel_rate = HOTEL2;
                break;
            case 3: hotel_rate = HOTEL3;
                break;
            case 4: hotel_rate = HOTEL4;
                break;
            default: hotel_rate = 0.0;
                printf("Oops!\n");
                break;
        }
        nights = getnights();
        showprice(hotel_rate, nights);
    }
    printf("Thank you and goodbye. ");
    return 0;
}

int menu()
{
    int code, status;
   
    printf("\n%s%s\n", STARS, STARS);
    printf("Enter the number of the desired hotel: \n");
    printf("1) Fairfield Arms    2) Hotel Olympic\n");
    printf("3) Chertworthy Plaza 4) The Stockton\n");
    printf("5) quit\n");
    printf("%s%s\n", STARS, STARS);
    while((status = scanf("%d", &code)) != 1 ||
          (code < 1 || code > 5))
    {
        if(status != 1)
            scanf("%*s");
        printf("Enter an integer from 1 to 5, please.\n");
    }
    return code;
}

int getnights()
{
    int nights;
   
    printf("How mant nights are needed?  ");
    while(scanf("%d", &nights) != 1)
    {
        scanf("%*s");
        printf("Please enter an integer, such as 2.\n");
    }
    return nights;
}

void showprice(double rate, int nights)
{
    int n;
    double total = 0.0;
    double factor = 1.0;
    for(n = 1; n <= nights; n++, factor *= DISCOUNT)
        total += rate * factor;
    printf("The total cost will be $%0.2f. \n", total);
   
}

输入4.1 结果是
4.1
How mant nights are needed?  Please enter an integer, such as 2.
因为这个模块上的while语句里已经限定了输入值必须是整数才会输出how many nights are needed?但不知怎么的输入浮点数之后循环和外部同时进行,百思不得其解。求教
搜索更多相关主题的帖子: include double 
2016-08-07 16:21
Eahonxu
Rank: 1
等 级:新手上路
帖 子:113
专家分:0
注 册:2016-7-13
收藏
得分:0 
int getnights()
{
    int nights;
   
    printf("How mant nights are needed?  ");
    while(scanf("%d", &nights) != 1)
    {
        scanf("%*s");
        printf("Please enter an integer, such as 2.\n");
    }
    return nights;
}
就是这一段
2016-08-07 16:22
Eahonxu
Rank: 1
等 级:新手上路
帖 子:113
专家分:0
注 册:2016-7-13
收藏
得分:0 
回复 3楼 linlulu001
我试过了可还是不行啊,输入4.1还是跟原来一样的问题
2016-08-08 11:42
Eahonxu
Rank: 1
等 级:新手上路
帖 子:113
专家分:0
注 册:2016-7-13
收藏
得分:0 
回复 6楼 linlulu001
肯定又是我的软件问题--哎 xcode出了不少硬伤了
2016-08-08 16:46
快速回复:这个程序在get nights()模块输入非整数,程序还是会继续运行,请问是 ...
数据加载中...
 
   



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

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