不要只相信你的眼睛

Sep 04, 2013 06:42:14 PM

//源代码

 

 

#include <stdio.h>
int main()
{
    int a,b,c,d; 
    a = 30; 
    b = 20; 
    d = a + b; 
    //在这里输入你的代码计算20 + 30,分号是英文状态下输入
    printf("%d", a+b);
    printf("%d",c);
    //printf("A+B:%d\n", a+b);
    //printf("C:%d\n",c); 
    //printf("D:%d\n",d); 
    return 0;
}

运行结果:500

好久没用C语言了,所以没加“\n”就出现了这个结果,还以为是编译器的问题,后来突然想到了,看来不能太相信自己的眼睛,还是要...

变态的ACM题

Sep 19, 2012 08:10:33 PM

http://acm.nyist.net/JudgeOnline/problem.php?pid=477

链接地址是南阳理工学院的一道语言入门题,我在作出如下判断后进行提交

if(c == (a + b)){
printf("Yes\n");
}
else{
printf("No\n");
}
结果是错误的
 
此题关键是实数在计算机内存储形式问题,如:1在计算机内部形式是0.99999·····

所以会产生小数点后精度的一点点偏差,导致程序出错!
 
正确的结果是:
#include <stdio.h>
int main(){
	int num = 0;
	double a = 0, b = 0, c = 0;
	scanf("%d", &num);
	
	while(num--){
		scanf("%lf %lf %lf", &a, &b, &c);
		if((a <= 10000.0) && (a >= -10000.0) 
           && (b <= 10000.0) && (b >= -10000.0)
           && (c <= 20000.0) && (c >= -20000.0))
		{
			if(((a + b) - c <= 0.00001) && ((a + b) - c >= -0.00001)){
				printf("Yes\n");
			}
			else{
				printf("No\n");
			}
		}
	}	
	return 0;
}