首页 > 代码库 > first day~
first day~
it‘s been a long time without practicing~ almost everything about the C programming language.
learn today: 1/ read the problem carefully.
2/no blank between two input (scanf(“%d %d", &a, &b);
prac: 2001(http://acm.hdu.edu.cn/showproblem.php?pid=2001)
计算两点间的距离
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 95055 Accepted Submission(s): 36510
Problem Description
输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离。
Input
输入数据有多组,每组占一行,由4个实数组成,分别表示x1,y1,x2,y2,数据之间用空格隔开。
Output
对于每组输入数据,输出一行,结果保留两位小数。
Sample Input
0 0 0 1 0 1 1 0
Sample Output
1.00 1.41
Author
lcy
Source
C语言程序设计练习(一)
Recommend
JGShining | We have carefully selected several similar problems for you: 2003 2002 2004 2000 2005
first try: output limit exceeded
#include<stdio.h>#include<math.h>int main(){ int x1, y1, x2, y2; double result; while(scanf("%d %d %d %d", &x1, &y1, &x2, &y2)!=EOF){ result = sqrt((y2-y1)*(y2-y1)+(x2-x1)*(x2-x1)); printf("%.2f\n", result); } return 0;}
why?:题目的输入格式中明确说明了每组测例的输入是4个实数,而不是4个整数。scanf("%d", &n);这样的写法,在输入中有非数字和空格的字符出现时,读入会失败,但不报错,也不会跳过失败处的字符。所以楼主的程序在遇到第一个小数点的时候就一直重复输入最后一次正确读入的测例的结果了,最终造成输入超限。
second try: accepted
#include<stdio.h>#include<math.h>int main(){ double x1, y1, x2, y2, result; while(scanf("%lf%lf%lf%lf", &x1, &y1, &x2, &y2)!=EOF){ result = sqrt((y2-y1)*(y2-y1)+(x2-x1)*(x2-x1)); printf("%.2lf\n", result); } return 0;}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。