您的位置:首页 > 其它

算法竞赛入门经典 第一章 上机练习

2013-11-16 23:07 387 查看
//试验方法确定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;
}


虽然简单,自己敲一遍才是自己的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: