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

//试验方法确定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;

}

虽然简单,自己敲一遍才是自己的。

你可能感兴趣的:(算法)