当前位置: 代码迷 >> C语言 >> 究竟谁是高手中的高手
  详细解决方案

究竟谁是高手中的高手

热度:138   发布时间:2007-12-31 22:26:22.0
究竟谁是高手中的高手
程序如下:调试时提示数据的类型转换有问题,可能会遗失数据,请各位高人帮找下BUG点,小第才疏学浅2小时了实在找不到问题点,请各位大侠们指点一二.3Q啦!
#include "stdio.h"
void main()
{
  int c,s;
  float p,w,d,f;
  sprintf("请输入货的单价,重量,距离:");
  scanf("%f,%f,%d",&p,&w,&s);
  if(s>=3000) c=12;
  else c=s/250;
  switch(c)
  {
      case 0:d=0;break;
      case 1:d=2;break;
      case 2:
      case 3:d=5;break;
      case 4:
      case 5:
      case 6:
      case 7:d=8;break;
      case 8:
      case 9:
      case 10:
    case 11:d=10;break;
    case 12:d=15;break;
  }
  f=p*w*s*(1-d/100.0);
  printf("价格是:%10.2f\n",f);
}
搜索更多相关的解决方案: case  BUG  break  

----------------解决方案--------------------------------------------------------
你怎么发重贴了..你发的先前发的那张我不是回答你了么?
----------------解决方案--------------------------------------------------------
定义为float也不行啊,编译也通不过.真迷糊了.
----------------解决方案--------------------------------------------------------
、、、、、、、、、、、、、、就这个问题吗?
#include "stdio.h"
void main()
{
  int c,s;
  float p,w,d,f;
  printf("请输入货的单价,重量,距离:");
  scanf("%f,%f,%d",&p,&w,&s);/////////////输入的时候 注意格式如 5,5,10
  if(s>=3000) c=12;
  else c=s/250;
  switch(c)
  {
      case 0:d=0;break;
      case 1:d=2;break;
      case 2:
      case 3:d=5;break;
      case 4:
      case 5:
      case 6:
      case 7:d=8;break;
      case 8:
      case 9:
      case 10:
    case 11:d=10;break;
    case 12:d=15;break;
  }
  f=p*w*s*(1-d/100.0);
  printf("价格是:%10.2f\n",f);
}
----------------解决方案--------------------------------------------------------
这程序没什么问题了吧
----------------解决方案--------------------------------------------------------
不行啊,不知道是不是编译系统的问题,唉今天又睡不着了.
----------------解决方案--------------------------------------------------------
#include <stdio.h>
void main(void)
{
  float c,s;
  float p,w,d,f;
  printf("请输入货的单价,重量,距离:");
  scanf("%f,%f,%f",&p,&w,&s);/////////////输入的时候 注意格式如 5,5,10
  if(s>=3000)
  {
        c=12;
  }
  else
  {
        c=s/250;
  }
  switch((int)c)
  {
      case 0:
        d=0;break;
      case 1:
        d=2;break;
      case 3:
        d=5;break;
      case 7:
        d=8;break;
    case 11:
        d=10;break;
    case 12:
        d=15;break;
  }
  f=p*w*s*(1-d/100.0);
  printf("价格是:%10.2f\n",f);
  getchar();
  getchar();
  return 0;
}
----------------解决方案--------------------------------------------------------
f=p*w*s*(1-d/100.0);
左边是float右边是double,所以有这个warning,over.
----------------解决方案--------------------------------------------------------
谢谢楼上的大哥,刚才我可能是输入字符有问题,我重新输入了一次就可以通过编译了如下:
#include <stdio.h>
void main()
{ int c,s;
  float p,w,d,f;
  printf("请输入货的单价,重量,距离:");
  scanf("%f,%f,%d",&p,&w,&s);
  if(s>=3000) c=12;
  else c=s/250;
   switch(c)
  {
      case 0: d=0;break;
      case 1: d=2;break;
      case 3: d=5;break;
      case 7: d=8;break;
      case 11: d=10;break;
      case 12: d=15;break;
  }
  f=p*w*s*(1-d/100.0);
  printf("价格是:%10.2f\n",f);
}
----------------解决方案--------------------------------------------------------
  相关解决方案