安噢 2023-02-22 11:44 采纳率: 75%
浏览 27
已结题

控制台输入输出相关问题

本地编译器黑框输入输出
我在网上做题,在本地测试的时候需要黑框输入输出,但数据通常是按行给出,比如说两行两个输出,但我把数据粘贴在黑框里点击回车,只会出现一个输出,第二个输出害得要再手动输入一组数据,有没有什么办法可以同时输出所有的结果呢?

比如说我下面的代码,输入
0 0 0 1
0 1 1 0
只会输出第一个结果也就是1.00

#include <cstdio>
#include <cmath>

int main(void){
    double x1,x2,y1,y2;
    while((scanf("%lf %lf %lf %lf\n",&x1,&y1,&x2,&y2)) != EOF){
        if(x1 == x2){
            if(y1 >= y2)printf("%.2f",y1 - y2);
            else printf("%.2f",y2 - y1);
        }
        else if(y1 == y2){
            if(x1 >= x2)printf("%.2f",x1 - x2);
            else printf("%.2f",x2 - x1);
        }
        else{
            printf("%.2f",sqrt(pow(x1 - x2,2.0) + pow(y1 - y2,2.0)));
        }
    }
    return 0;
}


  • 写回答

4条回答 默认 最新

  • a5156520 2023-02-22 13:34
    关注

    去掉第6行scanf()里面的换行符即可,因为如果加了个换行符,需要多输入一次数据,缓冲区才会留下一个换行符,然后这个换行符才被前一个scanf()匹配到,这就是为什么多输入一次的原因(这是我的理解,供参考),所以,去掉这个换行符即可;

    但是如果你是说,一次输入多组数据后,再统一显示结果的话,有一个办法就是根据要输入的最大数据项数,来定义数组存储多组数据,输入完成后再统一计算数组里的数据,并显示结果。

    另外为了显示更清晰,在每个打印结果后面加个换行符。

    修改如下:

    参考链接:

    #include <cstdio>
    #include <cmath>
     
    int main(void){
        double x1,x2,y1,y2;
        while((scanf("%lf %lf %lf %lf",&x1,&y1,&x2,&y2)) != EOF){ //去掉scanf()里面的换行符 
            if(x1 == x2){
                // 为了显示更清晰,每个打印结果后面加个换行符 
                if(y1 >= y2)printf("%.2f\n",y1 - y2);
                else printf("%.2f\n",y2 - y1);
            }
            else if(y1 == y2){
                if(x1 >= x2)printf("%.2f\n",x1 - x2);
                else printf("%.2f\n",x2 - x1);
            }
            else{
                printf("%.2f\n",sqrt(pow(x1 - x2,2.0) + pow(y1 - y2,2.0)));
            }
        }
        return 0;
    }
     
     
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 3月2日
  • 已采纳回答 2月22日
  • 创建了问题 2月22日

悬赏问题

  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法