OJ系统C语言练习第一天

第一题

<span class='yzk_title_71'>C语言OJ练习记录(一)</span>-一只小白
#include <stdio.h>
#include <math.h>

double Fac(double n);           //求阶乘函数

int main()
{
    double x;                   //需要输入的x
    scanf("%lf", &x);
    double a = 0;               //用来记录最后一项的值的变量
    double e = 0;               //用来记录结果的变量
    double i = 0;               //计数变量
    do{
        a = pow(x,i) / Fac(i);
        e = e + a;
        i++;
    }while(a >= 0.00000001);    //判断最后一项的精确值是否达到10的-8次方;
    printf("%.8lf", e);
    return 0;
}

double Fac(double n){
    int i;
    double sum = 1;
    for (i = 1; i < n + 1; i++)
    {
        sum = sum * i;
    }
    return sum;
}

第二题

<span class='yzk_title_71'>C语言OJ练习记录(一)</span>-一只小白
#include "stdio.h"
#include "math.h"

int main()
{
    int a,b,c;
    double p,q,s;
    scanf("%d%d%d",&a,&b,&c);
    if(a + b < c || a + c < b || b + c < a) printf("No");
    else
    {
    p = (a + b + c) / 2;
    q = p * (p-a) * (p-b) * (p-c);
    s = pow(q,0.5);
    printf("%.2lf", s);
    }
    return 0;
}

第三题

<span class='yzk_title_71'>C语言OJ练习记录(一)</span>-一只小白
#include "stdio.h"
#include "math.h"

int main()
{
    int s;
    scanf("%d", &s);
    int sec,min,hour,day;
    int m,h;
    if(s >= 86400){
        day = (s - (s % 86400)) / 86400;
        h = (s - (s % 3600)) / 3600;
        hour = h - (24 * day);
        m = (s - (s % 60)) / 60;
        min = m - (day * 24 * 60) - (hour * 60);
        sec = s % 60;
    }
    else if(s >= 3600){
        day = 0;
        hour = (s - (s % 3600)) / 3600;
        m = (s - (s % 60)) / 60;
        min = m - (hour * 60);
        sec = s % 60;
    }
    else if(s >= 60){
        day = 0;
        hour = 0;
        min = (s - (s % 60)) / 60;
        sec = s % 60;
    }
    else{
        day = 0;
        hour = 0;
        min = 0;
        sec = s;
    }
    printf("%02d %02d:%02d:%02d",day, hour, min, sec);
    return 0;
}

第四题

1.int abs(int i); 求整数的绝对值。
2.long labs(long n); 求长整型数的绝对值。
3.double fabs(double x); 求实数的绝对值。
4.double floor(double x); 求不大于x的最大整数,它相当于数学函数[x]。
5.double ceil(double x); 求不小于x的最小整数。
6.double sqrt(double x); 求x的平方根。
7.double log10(double x); 求x的常用对数。
8.double log(double x); 求x的自然对数。
9.double exp(double x); 求欧拉常数e的x次方。
10.double pow10(int p); 求10的p次方。
11.double pow(double x, double y); 求x的y次方。
12.double sin(double x); 正弦函数。
13.double cos(double x); 余弦函数。
14.double tan(double x); 正切函数。15.double asin(double x); 反正弦函数。
16.double acos(double x); 反余弦函数。
17.double atan(double x); 反正切函数。18.double atan2(double x); 反正切函数2。

第五题

<span class='yzk_title_71'>C语言OJ练习记录(一)</span>-一只小白
#include "stdio.h"
#include "math.h"

int main()
{
    double num, time;
    int i;
    scanf("%lf%lf", &num,&time);
    if(time > 36){
        for(i = 0;i < time;i++)
        {
            num = num + num * 0.012;
        }
        printf("%.2lf", num);
        return 0;
    }
    else if(time > 24){
        for(i = 0;i < time;i++)
        {
            num = num + num * 0.0111;
        }
        printf("%.2lf", num);
        return 0;
    }
    else if(time > 12){
        for(i = 0;i < time;i++)
        {
            num = num + num * 0.01;
        }
        printf("%.2lf", num);
        return 0;
    }
    else{
        for(i = 0;i < time;i++)
        {
            num = num + num * 0.009;
        }
        printf("%.2lf", num);
        return 0;
    }

    return 0;
}

第六题

<span class='yzk_title_71'>C语言OJ练习记录(一)</span>-一只小白
#include "stdio.h"
#include "math.h"

int main()
{
    double a,b,c,delta,x,x1,x2,x3,x4,xu1,xu2;
    scanf("%lf%lf%lf",&a,&b,&c);
    delta = b*b-4*a*c;
    if(a == 0){
        printf("No");
    }
    else if(delta >= 0){
        x1 = (-b + sqrt(delta)) / (2*a);
        x2 = (-b - sqrt(delta)) / (2*a);
        if(x1 > x2){
            x3 = x1;
            x4 = x2;
            printf("%.2lf %.2lf", x4,x3);
            return 0;
        }
        printf("%.2lf %.2lf", x1,x2);
    }
    else if(delta < 0){
        x1 = -b / (2*a);
        xu1 = sqrt(-delta) / (2*a);
        printf("%.2lf-%.2lfi %.2lf+%.2lfi", x1,xu1,x1,xu1);
    }
    return 0;
}

第七题

<span class='yzk_title_71'>C语言OJ练习记录(一)</span>-一只小白
#include "stdio.h"
#include "math.h"

int main()
{
    /*
    输入两个三位数
    求:他们之间(包括自己)能同时被3和5整出的数字之和
     */
    int a,b,c,d;
    while(scanf("%d%d", &a,&b)!=EOF){
        //保证永远c>d
        if(a >= b){
            c = a;
            d = b;
        }
        else{
            c = b;
            d = a;
        }
        int i = d;
        int sum = 0;
        while(i <= c){
            if(i % 5 == 0 && i % 3 == 0){
                sum = sum + i;
            }
            i++;
        }
        printf("%d\n", sum);
    }

}

第八题

<span class='yzk_title_71'>C语言OJ练习记录(一)</span>-一只小白
#include "stdio.h"
#include "math.h"

int main()
{
    int n,a,b;
    char x;
    scanf("%d", &n);
    int i;
    for(i=0;i<n;i++){
        //敲黑板,划重点
        //这个地方要在输入数据前吸收掉前面的回车,因为回车也是一个字符
        scanf("%*c%c%d%d",&x,&a,&b);
        if(x == '+'){
            printf("%d\n", a+b);
        }
        else if(x == '-'){
            printf("%d\n", a-b);
        }
        else if(x == '*'){
            printf("%d\n", a*b);
        }
        else if(x == '/'){
            printf("%.2lf\n", (double)a/(double)b);
        }
    }
    return 0;
}