qq_26435647 2016-03-08 02:54 采纳率: 50%
浏览 1206
已采纳

这段程序问题在哪里,编译后的结果让我很费解

#include
#include
int main()
{
float x,y,z,k;
char s,q;
printf("请输入加油量:\n");
scanf("%f",&x);
printf("请输入服务类型:\n");
printf("a.自己加\n");
printf("b.自助加\n");
scanf("%c",&s);
switch(s)
{
case 'a':
z=0.95;
break;
case 'b':
z=0.9;
break;
default:
printf("error");
}
printf("请输入汽油品种:\n");
scanf("%c",&q);
switch(q)
{
case 'a':
y=3.25;
break;
case 'b':
y=3.00;
break;
case 'c':
y=2.75;
}
k=x*y*z;
printf("所购汽油价格:%f\n",k);

Sleep(10000);
return 0;

}

  • 写回答

4条回答 默认 最新

  • u52983610 2016-03-08 03:19
    关注

    这样就好了,scanf读取的是缓存区的字符,你上一个scanf输入的最后会有\n,就直接被下一个scanf读取了

    
    #include <stdio.h>
    int main()
    {
    float x,y,z,k;
    char s,q;
    printf("请输入加油量:\n");
    scanf("%f",&x);
    fflush(stdin);
    printf("请输入服务类型:\n");
    printf("a.自己加\n");
    printf("b.自助加\n");
    scanf("%c",&s);
    fflush(stdin);
    switch(s)
    {
    case 'a':
        z=0.95;
        break;
    case 'b':
        z=0.9;
        break;
    default:
        printf("error");
    }
    printf("请输入汽油品种:\n");
    scanf("%c",&q);
    switch(q)
    {
    case 'a':
    y=3.25;
    break;
    case 'b':
    y=3.00;
    break;
    case 'c':
    y=2.75;
    }
    k=x*y*z;
    printf("所购汽油价格:%f\n",k);
    return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码