| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1361 人关注过本帖
标题:scanf运行被跳过
只看楼主 加入收藏
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:0 
的确跳过了  scanf("(%d,%d)",&x1,&y1);  问题好像出在圆括号上(我不知道为什么?),两个scanf中都去掉圆括号就正常了。如下:
scanf("%d,%d",&x,&y);
scanf("%d,%d",&x1,&y1);
2014-03-27 09:10
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:0 
这里主要是涉及到内存缓冲区,添加一个清除缓冲区的函数之后,就可以输入了
程序代码:
#include "stdio.h"
#include "math.h"
int main()
{
    int x,y,r,x1,y1,temp1,temp2;
    double j;
    double h;
    printf("请输入圆的坐标:如(x,y)\n");
    scanf("(%d,%d)",&x,&y);
    printf("请输入圆的半径:r\n");
    scanf("%d",&r);
    fflush(stdin);//清除缓冲区数据函数
    printf("请输入点的坐标:如(x1,y1)\n");
    scanf("(%d,%d)",&x1,&y1);
    if(x>x1) temp1=x-x1;
    else temp1=x1-x;
    if (y>y1) temp2=y-y1;
    else temp2=y1-y;
    j=temp1*temp1+temp2*temp2;
     h=sqrt(j);
    if(h>r) printf("点不在圆上!");
    else printf("点在圆上!"); 
     return 0;   
}
收到的鲜花
  • _c_c2014-03-27 12:29 送鲜花  1朵   附言:我很赞同

思考赐予新生,时间在于定义
2014-03-27 11:00
_c_c
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2014-3-26
收藏
得分:0 
回复 7楼 蚕头燕尾
不错,在前面加上一句fflush(stdin);就能运行了!这是为什么出现这样的错误?
2014-03-27 12:22
_c_c
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2014-3-26
收藏
得分:0 
多谢,老师、大哥们!
2014-03-27 12:23
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
int main()
{
    int x,y,r,x1,y1,temp1,temp2,j;
    double h;
    printf("请输入圆的坐标:如(x,y)\n");
    scanf("(%d,%d)",&x,&y);
    printf("请输入圆的半径:r");
    scanf("%d",&r);
    printf("请输入点的坐标:如(x1,y1)\n");
    scanf("(%d,%d)",&x1,&y1);
    if(x>x1) temp1=x-x1;
    else temp1==x1-x;
    if (y>y1) temp2=y-y1;
    else temp2=y1-y;
    j=temp1*temp1+temp2*temp2;
     h=sqrt(j);
    if(h>r) printf("点不在圆上!");
    else printf("点在圆上!");
     return 0;   
}

很奇怪你寫到描紅的那一句時自己都不知道能不能達到目的,就往下寫了那麽多?

授人以渔,不授人以鱼。
2014-03-27 12:32
_c_c
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2014-3-26
收藏
得分:0 
造成这种情况是回车符的问题?
2014-03-27 12:35
_c_c
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2014-3-26
收藏
得分:0 
回复 15楼 TonyDeng
不能达到目的吗?逻辑应该没错误吧?运行下,感觉没问题啊?C刚学入门
2014-03-27 12:39
四维俊
Rank: 2
等 级:论坛游民
帖 子:21
专家分:46
注 册:2013-11-21
收藏
得分:0 
据我推测。可能是你在输入第一个scnaf 的时候按下了回车键"\n",由于这个"\n"被认为是字符而一直存在于scanf的缓存中不能被跳过,所以你后面的所有scanf都不能被执行。最简单的方法是在每次执行完scanf后使用 fflush(stdin);清除缓存试试。
2014-03-27 12:41
一叶飘飘
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2014-2-23
收藏
得分:0 
printf的输入格式不对。  去掉()和,就行了。

#include <stdio.h>
#include<math.h>


    int main()
 {
     int x,y,r,x1,y1,temp1,temp2,j;
     double h;
     printf("请输入圆心的坐标:如(x,y)\n");
     scanf("%d%d",&x,&y);
     printf("请输入圆的半径:r\n");
     scanf("%d",&r);
     printf("请输入点的坐标:如(x1,y1)\n");
     scanf("%d%d",&x1,&y1);
     if(x>x1) temp1=x-x1;
     else temp1=x1-x;
     if (y>y1) temp2=y-y1;
     else temp2=y1-y;
     j=temp1*temp1+temp2*temp2;
      h=sqrt(j);
     if(h>r||h<r) printf("点不在圆上!");
     else printf("点在圆上!");
      return 0;   
 }
2014-03-27 12:44
_c_c
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2014-3-26
收藏
得分:0 
回复 19楼 一叶飘飘
入门都说是输入坐标了,没括号怎么能书面化?
2014-03-27 12:52
快速回复:scanf运行被跳过
数据加载中...
 
   



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

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