哪位高手帮忙看看这个C语言程序哪里错了!运行的结果不对啊!

#include<stdio.h>
void main()
{int c,s;
float p,w,d,f;
printf("please enter price,weight,distance:");
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;
}
f=p*w*s*(1-d/100.0);
printf("freight=%10.2f\n",f);
}

输入语句scanf("%f,%f,%d",&p,&w,&s);
你写的输入格式是 %f,%f,%d 所以你输入的时候,数据只能是逗号,否则就错误。
一般情况输入语句改为scanf("%f%f%d",&p,&w,&s); 这样输入的时候就可以用空格隔开。追问

我刚刚把逗号去掉了,这样就可以了,可是加上逗号的话我输入数据的时候也加有逗号为什么输出的结果不对啊?

追答

应该还是你输入的时候格式不对吧,加上逗号也应该能输入的,你看看谭浩强哪本数讲的输入语句。

追问

我看的是谭浩强的C语言这本书,这是里面的一个例子,我是原封不动的输入的,可是还是不对。。。这个是截图!

追答

输入错误,你的是在中文状态下输的,换成英文状态的逗号, 呵呵,记得要采纳啊。

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-04-25
呵呵,用WIN_TC帮你编译了一下,没有什么错误啊!只是我觉得这个程序的循环中,C的值只有到11,那12的呐?即当if(s>=3000)c=12;成立的时候,d的值该等于多少呢?
第2个回答  2012-04-27
switch 语句里面漏了个case 12,所以每次把距离设为3000以上就会报错
或者你加个default也行追问

输入1,1,1结果却是输出了一个很大的数。。。

追答

我复制了你的程序运行,输入1,1,1好像没有问题啊~~~

关于C语言编写程序的一个疑问 高手帮忙看看我的程序哪错了
看了你的代码觉得,你在C语言的语法规则上还有待提高啊,在此举出你所给出的代码的若干错误。首先,你的代码不完整。第9、11、13行要定义三个100行的二维字符数组,如果仅仅是类似char adj[100][12]={"开心的"}的定义;这样adj[1]到adj[99]这99个词都会是空值(ASCII码为0),若用printf()函...

请高手帮忙看看我这个程序哪里错了?
根据错误提示,问题出现在第1017行,所以,你应该查看一下这行是否有什么问题。我估计是类型不匹配,你再看看是否和我估计的一样。在1017行中,检查变量类型是否与预期相符至关重要。如果存在不匹配,程序可能会无法正常运行,导致错误提示。请仔细审查此行,确保所有变量的类型与所执行的操作兼容。另一种...

C语言!帮忙看下我写的这个程序错在哪里了,谢谢!用的是二次插值法.
其他的地方没有错,area函数定义的变量p的地方有错:include "stdio.h"include "math.h"include "conio.h"void main(){ float *area(float a1,float p,float a[3]);float f(float x);float ar,fr;float a2,a3;float f1,f2,f3;float a1=10,p=0.01,e=0.00001;float pa[3];area(a1...

C语言简单程序!这个程序高手帮忙看看吧 能运行但是结果不对 输入1的...
C语言当中运算符 ^ 是按位的异或运算,并不表示求幂运算!如果你想表示一个很小的数最简单的办法就是直接写0.000001 或者使用pow函数,pow(底数,指数)

c语言编写海伦公式,我的为什么没错误,运行出来却不对呢。
控制台进行输入过程中的逗号应该和scanf中格式化字符串中的逗号一致,都是英文的标点 你输入了中文的逗号

c语言高手过来帮帮忙啊!!!多给分啊~
把main函数里的switch语句后加个(c)就可以正常编译运行了。程序的作用是选择要转换为阴历还是阳历,例如选择阴历好后输入一组年月日(格式例1981.11.30,在1980到2015年之间),之后程序将为你转换为阴历(1981.11.5)帮你注释了两个函数,另外两个函数的思想相同,总的来说这个程序的逻辑不是很好,不用心看的话很难理解...

哪位c语言高手帮忙看看我这个程序 为什么水平波浪线无法显示?
应该是 initgraph(&driver,&mode,""); 出错,你没有写明 BGI 的路径。再就是,用 VGA 吧,不要用 EGA。

C语言高手帮忙啊!急!!!
;while(p!=NULL){ printf("%d,",p->data);p=p->next;} } void main(){ linklist *L;L=CREAT();LENGTH(L);OUT(L);} 该程序在turboc2.0上运行成功。顺便说一下:其实我这学期刚学《数据结构》,我想你也应该在学这门课吧,不知道可否交个朋友,以后好互相讨教。QQ:729430705 ...

C语言实现的合并两个单链表的程序,高手帮忙看下错在哪儿了呢?
\/*错的地方还不少,主要有以下几点 1.使用malloc函数没有包含其头文件。2.s_union最后缺个“}”。3. printf_s函数里面printf("%c",p->ch;p=p->next;);应改为printf("%c",p->ch);p=p->next;4.某些地方s对象的成员x写成了其他字符串。以上是语法错误,还存在编译不报错的逻辑错误,...

我弄了一个C语言的小程序 ,三个数比较大小,我编的程序 执行不了,请...
4、键盘输入与屏幕显示的字符不一致。此种故障可能是由于电路板上产生短路现象造成的,其表现是按这一键却显示为同一列的其他字符,此时可用万用表或示波器进行测量,确定故障点后进行修复。5、按下一个键产生一串多种字符,或按键时字符乱跳,这种现象是由逻辑电路故障造成的。先选中某一列字符,若是不...

相似回答