鱼C论坛

 找回密码
 立即注册
查看: 4849|回复: 11

求大神指点下!!!关于c的

[复制链接]
发表于 2013-8-14 16:15:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
int main(void)
{
float a,b;
int status;
printf("请输入两个浮点数:");
    while(scanf("%f%f",&a,&b)==2);
{
   printf("%.4f\n",(a-b)/(a*b));
   printf("请输入两个浮点数:");
}
return 0;
}
为什么这个程序输入5.6,2.3可以运行,但再输入的时候直接退出程序。如果用5.6 2.3输入的话程序没有进行下去。两次输入的区别就是两个数字之间用逗号还是空格。为什么这程序不能循环输入?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-8-14 16:53:31 | 显示全部楼层
关于scanf()我也很多不懂
但你这里首先一个问题就是while语句后多了个分号
你的第一种输入情况:"5.6,2.3"在while有分号的情况下可以运行,也就说明你这个输入是错误的,因为可以运行说明已经跳出while循环了,即scanf()的返回不是2了。
第二种输入其实是准确的,因为在while有分号情况下,它跳不出来while里。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-14 17:09:19 | 显示全部楼层
  1. #include <stdio.h>
  2. int main(void)
  3. {
  4. float a,b;
  5. int status;
  6. printf("请输入两个浮点数:");
  7.     while(scanf("%f%f",&a,&b)==2)//;去掉加了;表示如果合法输入就什么都不做 你的判断就等于没判段了
  8. {
  9.    printf("%.4f\n",(a-b)/(a*b));//应为这样所以当你输入后 首先什么都没干完成while循环然后执行
  10.    printf("请输入两个浮点数:");//这两句printf
  11. }
  12. return 0;//执行完printf 就执行return 退出了啊
  13. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-14 17:26:08 | 显示全部楼层
上面人说的很对,,,你while后面加个分号,,,写代码的时候细心下吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-14 17:36:53 | 显示全部楼层
用scanf(输入数值格式是‘数值 数值’。中间要有一个空格 而不是','   如果要输入5.6,2.3.应该这么写 scanf("%f,%f",&a,&b);    %f之间加个','就可以了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-14 22:25:02 From FishC Mobile | 显示全部楼层
谢谢大家!的确是我多了个分号!但是我输入整数的时候,为什么还可以运行啊。这时候返回值应该不是2吧。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-14 22:31:07 | 显示全部楼层

谢谢大家!的确是我多了个分号!但是我输入整数的时候,为什么还可以运行啊。这时候返回值应该不是2吧。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-14 22:31:48 | 显示全部楼层

谢谢大家!的确是我多了个分号!但是我输入整数的时候,为什么还可以运行啊。这时候返回值应该不是2吧。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-14 22:41:45 | 显示全部楼层
文章 发表于 2013-8-14 22:31
谢谢大家!的确是我多了个分号!但是我输入整数的时候,为什么还可以运行啊。这时候返回值应该不是2吧。

应为不管你的while 成不成立都是 不执行任何代码啊 我已经写了解释了啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-15 00:30:18 From FishC Mobile | 显示全部楼层
牡丹花下死做鬼 发表于 2013-8-14 22:41
应为不管你的while 成不成立都是 不执行任何代码啊 我已经写了解释了啊

我把分号去了啊  已经改了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-15 08:44:07 | 显示全部楼层
文章 发表于 2013-8-15 00:30
我把分号去了啊  已经改了

你输入1 C就会认为是1.0 就是这样
应为你是%f输入
如果你是%d输入 输入9.9 C就会以为是9
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-15 08:56:15 | 显示全部楼层
把分号去了就对了啊,我都输入过了,,,你定义的是float,所以输入的就是float型,你输入的2就是float(难道2不是float型吗,float也可以没有小数点吧),,,,你定义整形,如果输入2.1,会变成2
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-17 06:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表