| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2351 人关注过本帖
标题:油费计算,程序编译没错误,但是输出的答案是错误,不理解哪里算法错了?请 ...
只看楼主 加入收藏
agoni68
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2019-12-10
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
油费计算,程序编译没错误,但是输出的答案是错误,不理解哪里算法错了?请帮忙
现在90号汽油6.95元/升、93号汽油7.44元/升、97号汽油7.93元/升。为吸引顾客,某自动加油站推出了“自助服务”和“协助服务”两个服务等级,分别可得到5%和3%的折扣。
本题要求编写程序,根据输入顾客的加油量a,汽油品种b(90、93或97)和服务类型c(m - 自助,e - 协助),计算并输出应付款。
输入格式:
输入在一行中给出两个整数和一个字符,分别表示顾客的加油量a,汽油品种b(90、93或97)和服务类型c(m - 自助,e - 协助)。
输出格式:
在一行中输出应付款额,保留小数点后2位。
程序代码:
#include<stdio.h>
int main()
{
    int a,b;
    float temp;
    char ch;
    scanf("%d%d%f",&a,&b,&ch);
    switch(b)
    {
        case 90:    temp=6.95;    break;
        case 93:    temp=7.44;    break;
        case 97:    temp=7.93;    break;
    }
    if(ch=='m')
    {
        printf("%.2f",a*temp*0.95);
    }
    else
    {
        printf("%.2f",a*temp*0.97);
        return 0;
    }
}

例如:输入:40 97 m    正确答案是:301.34,    实际结果输出:307.68
单步调试:
程序代码:
if(ch=='m')
    {
        printf("%.2f",a*temp*0.95);
    }
    else
    {
        printf("%.2f",a*temp*0.97);

调试信息:ch=0'\000',这里不懂为什么?
搜索更多相关主题的帖子: 计算 错误 服务 输出 temp 
2019-12-22 22:10
零号小白菜
Rank: 1
等 级:新手上路
帖 子:18
专家分:8
注 册:2019-11-10
收藏
得分:8 
char ch;
 scanf("%d%d%f",&a,&b,&ch);
应该改为
char ch;
    scanf("%d %d %x",&a,&b,&ch);
调试信息:ch=0'\000' 应该是ch为字符型变量,他把你输入的空格当成了该字符变量的值。
2019-12-22 22:36
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:2 
程序代码:
#include <stdio.h>

int main( void )
{
    unsigned a, b; char c;
    scanf( "%u%u %c", &a, &b, &c );

    double unitprice;
    switch( b )
    {
    case 90: unitprice=6.95; break;
    case 93: unitprice=7.44; break;
    case 97: unitprice=7.93; break;
    default: return 1;
    }

    double discount;
    switch( c )
    {
    case 'm': discount=0.05; break;
    case 'e': discount=0.03; break;
    default: return 1;
    }

    printf( "%.2f\n", a*unitprice*(1-discount) );
    return 0;
}
2019-12-23 08:50
agoni68
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2019-12-10
收藏
得分:0 
改进:
scanf("%d%d%c",&a,&b,&ch);

但是为什么我的程序还是行不通?
调试信息:ch=32''
输出结果还是:307.68
2019-12-23 17:33
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:10 
回复 4楼 agoni68
scanf("%d%d%c",&a,&b,&ch);
scanf("%d%d %c",&a,&b,&ch);
你仔细看看这两句有什么不同?
2019-12-23 21:07
agoni68
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2019-12-10
收藏
得分:0 
懂了,我知道我的问题在那了
2019-12-24 09:30
jinxiao66
Rank: 2
等 级:论坛游民
帖 子:11
专家分:16
注 册:2019-12-22
收藏
得分:0 
通过这个例子,今天又学习到scanf()的应用的注意事项。为楼主和版主点赞!
2019-12-24 11:35
快速回复:油费计算,程序编译没错误,但是输出的答案是错误,不理解哪里算法错了 ...
数据加载中...
 
   



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

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