C语言 使用其他表格中的区域值填充表格

yduiuuwa  于 2022-12-03  发布在  其他
关注(0)|答案(1)|浏览(139)

我有一个一维的度表:
双表度[10]={0.2,3.4,4.3,1.2,4.6,4.5,3.8,1.5,3.4,3.7};
度数始终在区间[0,5]内。
我想计算度数属于区间[0,1)、[1,2)、[2,3)、[3,4)、[4,5]的温度计的个数,并将这些值存储在一个大小为5的整数数组中,其中单元格0属于区间[0,1)的度数,单元格1属于区间[1,2)的度数,依此类推。
我想使用floor函数而不是if命令序列。
下面的程序:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(){

  
double tabledegrees[10]={0.2,3.4,4.3,1.2,5.6,4.5,3.8,1.5,3.4,3.7};
double tabledegreesfloored[10];

for (int i=0;i<10;i++){
    tabledegreesfloored[i] = floor(tabledegrees[i]);
   }

for (int j=0;j<10;j++){
    printf("%.f \n", tabledegreesfloored[j]);
   }
}

退货:
0 3 4 1 5 4 3 1 3 3
如何做到这一点?

2guxujil

2guxujil1#

创建一个温度计数组,并在计数时使用间隔索引数组:

#include <math.h>
#include <stdio.h>

#define LEN(a) sizeof(a) / sizeof(*a)

int main() {
    double tabledegrees[10]={0.2,3.4,4.3,1.2,5.6,4.5,3.8,1.5,3.4,3.7};
    size_t thermometers[5] = {0};
    for (size_t i=0; i < LEN(tabledegrees); i++) {
        if(tabledegrees[i] < 0 || tabledegrees[i] >= LEN(thermometers)) {
            printf("skip data out of range %lf\n", tabledegrees[i]);
            continue;
        }
        thermometers[(int) floor(tabledegrees[i])]++;
    }
    for (size_t i=0; i < LEN(thermometers); i++)
        printf("%zu: %zu\n", i, thermometers[i]);
}

下面是示例输出:

skip data out of range 5.600000
0: 1
1: 2
2: 0
3: 4
4: 2

相关问题