安噢 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日

悬赏问题

  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line