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

//试验方法确定int型整数的最大最小值
#include<stdio.h>
#include <math.h>
int main()
{
    int a = 0;
    while( a < (a+1) )
    { 
        ++a;
    }
    printf("%d
", a);//最大值
    a = 0;
    while( abs(a) < abs(a) + 1 )
    {
        --a;
    }
    printf("%d
", a);//最小值
    return 0;
}

 方法二:一旦溢出变成负数,那么停止循环,i++也不会执行了,然后输出这个负数和比这个最小值“还小”的值,其实就是刚才溢出前的最大值

#include <stdio.h>  
int  
main(void)  
{  
    int i;  
  
    for (i = 1; i > 0; i++) NULL;  
    printf("%d %d
", 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
",(double)abs(i));// 错的,只能用于int等整形
    printf("%.2lf
",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;
}

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

原文地址:https://www.cnblogs.com/lingc/p/3427305.html