惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Help Net Security
博客园 - Franky
GbyAI
GbyAI
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
爱范儿
爱范儿
IT之家
IT之家
酷 壳 – CoolShell
酷 壳 – CoolShell
aimingoo的专栏
aimingoo的专栏
博客园_首页
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Recent Announcements
Recent Announcements
Scott Helme
Scott Helme
有赞技术团队
有赞技术团队
M
MIT News - Artificial intelligence
C
CERT Recently Published Vulnerability Notes
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Jina AI
Jina AI
F
Fortinet All Blogs
N
Netflix TechBlog - Medium
L
LangChain Blog
L
LINUX DO - 最新话题
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
H
Hacker News: Front Page
MyScale Blog
MyScale Blog
P
Palo Alto Networks Blog
G
Google Developers Blog
Google DeepMind News
Google DeepMind News
AI
AI
T
Troy Hunt's Blog
Microsoft Azure Blog
Microsoft Azure Blog
阮一峰的网络日志
阮一峰的网络日志
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Vercel News
Vercel News
Microsoft Security Blog
Microsoft Security Blog
罗磊的独立博客
S
Secure Thoughts
大猫的无限游戏
大猫的无限游戏
博客园 - 叶小钗
人人都是产品经理
人人都是产品经理
Blog — PlanetScale
Blog — PlanetScale
博客园 - 司徒正美
Apple Machine Learning Research
Apple Machine Learning Research
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
S
Security @ Cisco Blogs
Cloudbric
Cloudbric
E
Exploit-DB.com RSS Feed
Attack and Defense Labs
Attack and Defense Labs

博客园 - kaikai

visual studio生成后调试启动又提示部分项目需要生成问题总结 让vc2010的项目在vc2012也能直接使用,而不必修改PlatformToolSet TFS:添加已经在项目中但不在TFS中的文件 宅电脑桌 动作游戏自定义技能探讨 TFS如何跨分支合并未签入的文件 友元接口-限制你的友元类数量 g++上c++模板与padding交互产生的陷阱 卡马克的求平方根函数代码的陷阱 [zt]调试的时候,无法设置数据断点(为灰色) [zt]关闭VS自带的提示 vs偶尔出现链接时间过长的情况的临时处理方法 vs链接小知识,/LTCG 这是一场正义的战争,伟大而又激烈! 浮点数默认精度在windows/linux上的差异 数独求解程序 阿朱~你走好 短代码.EOF串 短代码.第几天
短代码.求2点之距离
kaikai · 2007-07-14 · via 博客园 - kaikai

问题:
输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离。

输入数据有多组,每组占一行,由4个实数组成,分别表示x1,y1,x2,y2,数据之间用空格隔开。

对于每组输入数据,输出一行,结果保留两位小数。
比如,输入:

0 0 0 1
0
 1 1 
0

那么输出:

1.00
1.41

题目很简单,甚至有点无聊了。

#include <math.h>
int main()
{
   
float
 a,b,c,d;
   
while(scanf("%f%f%f%f",&a,&b,&c,&d
)==4)
    {
        printf(
"%.2f\n",sqrt((a-c)*(a-c)+(b-d)*(b
-d)));
    }
    return 0;
}

好吧,第一个看上去已经挺短的了。好吧,换编译器,用c的编译器,gcc,vc也可以(存.c文件)。这样可以利用一些c的'好处',至少对缩短代码来说是好处。

#include <math.h>
main()
{
   
float
 a,b,c,d;
   
while(scanf("%f%f%f%f",&a,&b,&c,&d
)==4)
        printf(
"%.2f\n",sqrt((a-c)*(a-c)+(b-d)*(b
-d)));
}

默认函数返回类型为int,返回值?我管它是多少呢,短就行了。去掉不必要的空白。

#include<math.h>
main(){float a,b,c,d;while(scanf("%f%f%f%f",&a,&b,&c,&d)==4)printf("%.2f\n",sqrt((a-c)*(a-c)+(b-d)*(b-d)));}

125
可惜,怎么还得留着math.h,否则sqrt未定义的情况c语言认为它是一个返回int的函数,于是链接时没能链接到我们想要的函数。
继续缩短,那段差的平方很扎眼,那么多括号。scanf的返回值比3大和等于4也差不多了,总不至于要求4个输入,却得到5个吧。也改了

#include<math.h>
main(){float a,b,c,d;while(scanf("%f%f%f%f",&a,&b,&c,&d)>3)a-=c,b-=d,printf("%.2f\n",sqrt(a*a+b*b));}

118
while和for的长度其实是一样的,虽然for比while少2个字母,但for语句要多2个分号。算是打平,不过其实不然。注意当循环体有多句的时候,把最后一句放到for的末尾,还可以节约一个逗号- -

#include<math.h>
main(){float a,b,c,d;for(;scanf("%f%f%f%f",&a,&b,&c,&d)>3;printf("%.2f\n",sqrt(a*a+b*b)))a-=c,b-=d;}

117
那个包含文件真讨厌,而且非得换行。要是能去掉它就好了。既然我只是为了要sqrt,为什么不自己声明一下呢。

double sqrt();main(){float a,b,c,d;for(;scanf("%f%f%f%f",&a,&b,&c,&d)>3;printf("%.2f\n",sqrt(a*a+b*b)))a-=c,b-=d;}

114
嗯,看来确实短了一些。double和float能通用吗?也许不能吧,要不试试?

float sqrt();main(){float a,b,c,d;for(;scanf("%f%f%f%f",&a,&b,&c,&d)>3;printf("%.2f\n",sqrt(a*a+b*b)))a-=c,b-=d;}

113
居然可以,输出结果正确。奇怪啊...反编译一下。哦。原来作为参数,float也被转为double类型压栈。这个可能不太保险,天知道是不是所有机器都压double呢- -。不过好在这里能凑合,那x86的估计也都能。
啊呀,我傻啊,为什么有2个float在代码里!怎么不把它们合并了?

main(){float sqrt(),a,b,c,d;for(;scanf("%f%f%f%f",&a,&b,&c,&d)>3;printf("%.2f\n",sqrt(a*a+b*b)))a-=c,b-=d;}

107
农夫三拳想出了一个方法,他提示到“-1的二进制”。哦!对了,当scanf遇到输入结束时返回EOF,那就是-1。-1的二进制为全1,也就是说反码为0。好吧,感谢农夫三拳让我再缩短一个字节,让>3见鬼去吧~

main(){float sqrt(),a,b,c,d;for(;~scanf("%f%f%f%f",&a,&b,&c,&d);printf("%.2f\n",sqrt(a*a+b*b)))a-=c,b-=d;}

106
结束...
如果您有更bt的想法能缩短代码,请别忘了告诉我~