| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1091 人关注过本帖
标题:为什么最后的一个scanf不能被执行
只看楼主 加入收藏
kennyzhang
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2006-7-24
收藏
 问题点数:0 回复次数:7 
为什么最后的一个scanf不能被执行
#include<stdio.h>
#include<dos.h>
main()
{
float k1,k2,k3;
char a1,b2='Y';
int d;

clrscr();
printf("******************** Welcome to this learning system ***************************");


do
{
printf("please enter k1,a1,k2:");
scanf("%f,%c,%f",&k1,&a1,&k2);
printf("please enter your answer:");
scanf("%f",&k3);
//***************************************************************************************************

switch(a1)
{
case '+':if(k3==(k1+k2)) d=1;
else
d=0;
break;
case '-':if(k3==(k1-k2)) d=1;
else
d=0;
break;
case '*':if(k3==(k1*k2)) d=1;
else
d=0;
break;
case '/':if(k2==0)
{
printf("input error!\n");
d=0;
break;
}
else
{
if(k3==(k1/k2)) d=1;
else
d=0;
}
break;

default: printf("input error!\n");

}

if(d)

{
printf("You are great!");
}
else
{
printf("please try again!");
}

printf("do you want to go on? (Y on N)\n");

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~下面的都不能执行了 为什么?????
scanf("%c",&b2);
}while((b2=='Y')||(b2=='y'));

}

程序可以执行到printf("do you want to go on? (Y on N)\n");

后面的scanf("%c",&b2);不能执行
搜索更多相关主题的帖子: scanf printf please 
2006-09-08 10:35
神经塔
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:1987
专家分:4
注 册:2006-7-1
收藏
得分:0 
printf("do you want to go on? (Y on N)\n");

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~下面的都不能执行了 为什么?????
scanf("%c",&b2);
需要加上:fflush(stdin);
}while((b2=='Y')||(b2=='y'));

}

[shadow=255,red,2]待到秋来九月八,我花开时百花杀。冲天香阵透长安,满城尽是黄金甲。 [/shadow]
2006-09-08 10:53
kennyzhang
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2006-7-24
收藏
得分:0 
不可以呀 程序运行到 printf("do you want to go on? (Y on N)\n") 就自动关闭了 我在Turbo c3.0下写的

/--------------------------------------------------------------------- 世界与我同步。
2006-09-08 10:59
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
主要是你提示语句中的换行被scanf()接收了,前面加上getchar();试试

倚天照海花无数,流水高山心自知。
2006-09-08 11:06
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

#include<stdio.h>
#include<dos.h>
main()
{
float k1,k2,k3;
char a1,b2='Y';
int d;

clrscr();
printf("******************** Welcome to this learning system ***************************");


do
{
printf("please enter k1,a1,k2:");
scanf("%f%c%f",&k1,&a1,&k2);
printf("please enter your answer:");
scanf("%f",&k3);
//***************************************************************************************************

switch(a1)
{
case '+':if(k3==(k1+k2)) d=1;
else
d=0;
break;
case '-':if(k3==(k1-k2)) d=1;
else
d=0;
break;
case '*':if(k3==(k1*k2)) d=1;
else
d=0;
break;
case '/':if(k2==0)
{
printf("input error!\n");
d=0;
break;
}
else
{
if(k3==(k1/k2)) d=1;
else
d=0;
}
break;

default: printf("input error!\n");

}

if(d)

{
printf("You are great!");
}
else
{
printf("please try again!");
}

printf("do you want to go on? (Y on N)\n");

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~下面的都不能执行了 为什么?????
getchar();
scanf("%c",&b2);
}while((b2=='Y')||(b2=='y'));

}


倚天照海花无数,流水高山心自知。
2006-09-08 11:15
kennyzhang
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2006-7-24
收藏
得分:0 
谢谢 楼上的 好了
对了 nuciewth 你收徒弟吗?


/--------------------------------------------------------------------- 世界与我同步。
2006-09-08 12:04
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用kennyzhang在2006-9-8 12:04:08的发言:
谢谢 楼上的 好了
对了 nuciewth 你收徒弟吗?

我也学的不好,只是学的久点.我还没有出师
只要是论坛里的每一个我有能力回答的问题,我尽力回答.
有问题找大家,我们一定会帮你解决的.


倚天照海花无数,流水高山心自知。
2006-09-08 12:22
ww84020209
Rank: 1
等 级:新手上路
帖 子:190
专家分:0
注 册:2006-8-21
收藏
得分:0 
[QUOTE]printf("do you want to go on? (Y on N)\n");
主要是你提示语句中的换行被scanf()接收了,前面加上getchar();[/QUOTE]

改是改对了,但是分析的原因不对.并不是提示语句中的换行被scanf()接受,你把那个换行去掉看看.它照样不行.
原因是scanf("%f",&k3);
输入数据后,会在缓冲区中留下一个回车.而被scanf("%c",&b2);接收了.
看下边这个例子,你运行一下就知道了:
#include "stdio.h"
int main()
{
char a,b;
printf("Input a:");
scanf("%c",&a);
printf("Input b:");
scanf("%c",&b);
printf("a=%d,b=%d\n",a,b);
return 0;
}

2006-09-08 14:22
快速回复:为什么最后的一个scanf不能被执行
数据加载中...
 
   



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

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