算法竞赛入门经典 第一章 上机练习
//试验方法确定int型整数的最大最小值
#include<stdio.h>
#include <math.h>
int main()
{
int a = 0;
while( a < (a+1) )
{
++a;
}
printf("%d\n", a);//最大值
a = 0;
while( abs(a) < abs(a) + 1 )
{
--a;
}
printf("%d\n", a);//最小值
return 0;
}
方法二:一旦溢出变成负数,那么停止循环,i++也不会执行了,然后输出这个负数和比这个最小值“还小”的值,其实就是刚才溢出前的最大值
#include <stdio.h>
int
main(void)
{
int i;
for (i = 1; i > 0; i++) NULL;
printf("%d %d\n", i, i-1);
return 0;
}
double型浮点数能精确到多少位小数?
#include <stdio.h>
int
main(void)
{
printf("%f", 10.0/3.0);//3.3333333333333334813630699500208720564842224121093750000000000000000000000000000000000000000000000000
printf("%f", 20.0/3.0);
return 0;
}
1-1 平均数
#include <stdio.h>
int main()
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
printf("%.3f",(a+b+c)/3.0);
return 0;
}
1-2温度
#include <stdio.h>
int main()
{
// double f=0.0,c=0.0;//这样为什么会有问题?
float f,c;
scanf("%f",&f);
c = 5.0*(f-32)/9.0;
printf("%.3f",c);
return 0;
}
改正后没有问题 基础知识不扎实
#include <stdio.h>
int main()
{
double f = 0.0,c=0.0;
scanf("%lf",&f);
c = 5.0*(f-32)/9.0;
printf("%.3lf",c);
return 0;
}
1-3 连续和
#include <stdio.h> int main() { int n=0; scanf("%d",&n); int sum=0; sum = (1+n)*n/2; printf("%d",sum); return 0; }
1-4正弦和余弦
#include <stdio.h> #include <math.h> int main() { int n = 0; double r_sin = 0.0,r_cos = 0.0; scanf("%d",&n); n = (n/180)*3.14159265; r_sin = sin(n); r_cos = cos(n); printf("%.3lf,%.3lf",r_sin,r_cos); return 0; }
1-5距离
#include <stdio.h> #include <math.h> int main() { double x1,y1,x2,y2; scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2); double d_distance = sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); printf("%.3lf",d_distance); return 0; }
1-6偶数
#include <stdio.h> int main() { int n,flag; scanf("%d",&n); flag = (n%2==0)?1:0; if (flag) { printf("yes"); } else { printf("no"); } return 0; }
1-7打折
#include <stdio.h> int main() { int n; double pay; const one = 95; scanf("%d",&n); if (n*one >= 300) { pay = n*one*0.85; } else { pay = n*one; } printf("%.2lf",pay); return 0; }
1-8绝对值
#include <stdio.h> #include <math.h>//错的 abs()不在这里 #include <stdlib.h> #define Abs(x) (x>=0?x:(-x)) int main() { double i; scanf("%lf",&i); // printf("%.2lf\n",(double)abs(i));// 错的,只能用于int等整形 printf("%.2lf\n",Abs(i)); return 0; }
1-9三角形
#include <stdio.h> int main() { int i,j,k; scanf("%d%d%d",&i,&j,&k); if ((i+j>=k)&&(i+k>=j)&&(j+k>=i)) { if (i*i+j*j==k*k||i*i+k*k==j*j||j*j+k*k==i*i) { printf("yes"); } else { printf("no"); } } else { printf("not a triangle"); } return 0; }
1-10 闰年
#include <stdio.h> //闰年:能被4整除且不能被100整除 是闰年 //能直接被400整除也是闰年 int main() { int year; scanf("%d",&year); if ((year%4==0 && year%100!=0) || year%400==0) { printf("闰年"); } else { printf("不是"); } return 0; }
虽然简单,自己敲一遍才是自己的。