欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

floor,ceil,round

程序员文章站 2022-06-03 08:41:04
...

向下取整,向上取整,四舍五入

#include<stdio.h>
#define SIZE 5

void MyFloor(float *p);
void MyCeil(float *p);
void MyRound(float *p);

int main()
{
    printf("1  向下取整, 2  向上取整, 3  四舍五入:\n");
    int temp;
    scanf("%d",&temp);
    if(temp!=1 && temp!=2 && temp!=3){
        return 1;
    }
    float a[SIZE];
    int i;
    printf("输入五个数组元素:\n");
    for(i=0;i<SIZE;i++){
    	printf("ERROR!");
        scanf("%f",a+i);
    }
    switch(temp)
    {
        case 1: MyFloor(a); break;
        case 2: MyCeil(a); break;
        case 3: MyRound(a); break;
        default: break;
    }
    for(i=0;i<SIZE;i++){
        printf("%-4g",*(a+i));
    }
    return 0;
}

void MyFloor(float *p)
{
    float *q=p;
    while(q<p+SIZE){
        if(*q>=0){
            *q=(int)(*q);
        }
        else{
            int tep=(int)(*q);
            if(*q==(float)tep){
                *q=tep;
            }
            else{
                *q=tep-1;
            }
        }
        q++;
    }
}

void MyCeil(float *p)
{
    float *q=p;
    while(q<p+SIZE){
        if(*q>=0){
            int tep=(int)(*q);
            if(*q==(float)tep){
                *q=tep;
            }
            else{
                *q=tep+1;
            }
        }
        else{
            *q=(int)(*q);
        }
        q++;
    }
}

void MyRound(float *p)
{
    float *q=p;
    while(q<p+SIZE){
        if(*q>=0){
            *q=(int)(*q+0.5);
        }
        else{
            int sign=-1;
            *q=*q*sign;
            *q=(int)(*q+0.5)*sign;
        }
        q++;
    }
}

运行结果:

floor,ceil,round

相关标签: 笔记 c语言