首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >四舍五入到整数

四舍五入到整数
EN

Stack Overflow用户
提问于 2016-08-22 09:04:46
回答 2查看 132关注 0票数 1

这个项目是为了获得所有实验室练习的平均水平。我想把我的小数7.7778除以整数。我尝试了ceilf和roundf(),它不起作用,我的代码有问题吗?任何帮助都将不胜感激,谢谢!

我的代码

代码语言:javascript
复制
#include<stdio.h>
#include<conio.h>
#include <math.h>
int main()
{
    int numberof_laboratory,lab_exercises,total_numberof_laboratory,average,roundoff;
    char answer;
    do
    {
        printf("\nEnter number of laboratory:");
        scanf("%d",&numberof_laboratory);
        for(int i=1;i<=numberof_laboratory;++i)
        {
            printf("\nEnter laboratory exercise %d:",i);
            scanf("%d",&lab_exercises);
            total_numberof_laboratory += lab_exercises;
            average = total_numberof_laboratory / 3;
            roundoff = ceilf(average * 100) / 100;
        }
        printf("The average laboratory exercise grade is %d",roundoff);
        printf("\nDo you want to continue(Y/N)?");
        scanf(" %c", &answer);
    }
    while(answer != 'N' && answer != 'n');
    printf("Goodbye!");
}

示例

输入实验室编号:3

实验室练习1: 10

实验练习2: 7

实验习题1: 6

平均实验室练习成绩为:7 //应该是8。

EN

回答 2

Stack Overflow用户

发布于 2016-08-22 09:08:17

你的roundoff = ceilf(average * 100) / 100;错了

average被声明为int

您应按以下方式声明:

代码语言:javascript
复制
float average;
...
average = total_numberof_laboratory / 3.0f; // thanks to Ed Heal
roundoff = roundf(average);

看来你想做以下几件事:

代码语言:javascript
复制
#include <stdio.h>
#include <math.h>
int main()
{
    int numberof_laboratory, lab_exercises, total_numberof_laboratory, roundoff;
    float average; /* see here */
    char answer;
    do
    {
        printf("\nEnter number of laboratory:");
        scanf("%d",&numberof_laboratory);
        total_numberof_laboratory = 0; /* see here important */
        for(int i=1;i<=numberof_laboratory;++i)
        {
            printf("\nEnter laboratory exercise %d:",i);
            scanf("%d",&lab_exercises);
            total_numberof_laboratory += lab_exercises;
        }
        average = total_numberof_laboratory / (float)numberof_laboratory; /* see here */
        roundoff = roundf(average); /* see here */
        printf("The average laboratory exercise grade is %d",roundoff);
        printf("\nDo you want to continue(Y/N)?");
        scanf(" %c", &answer);
    }
    while(answer != 'N' && answer != 'n');
    printf("Goodbye!");
}

gcc中编译为

代码语言:javascript
复制
gcc -o main main.c -lm  -Wall -pedantic
票数 3
EN

Stack Overflow用户

发布于 2016-08-22 11:11:26

您应该使用以下代码来找到所需的平均值-

代码语言:javascript
复制
#include<stdio.h>
#include<conio.h>
#include <math.h>
int main()
{
int i,numberof_laboratory, lab_exercises, total_numberof_laboratory=0,roundoff;
float average;
char answer;
do
{
    printf("\nEnter number of laboratory:");
    scanf("%d",&numberof_laboratory);
    for(i=1;i<=numberof_laboratory;++i)
    {
        printf("\nEnter laboratory exercise %d:",i);
        scanf("%d",&lab_exercises);
        total_numberof_laboratory += lab_exercises;
    }
    average = (float)total_numberof_laboratory /numberof_laboratory ;
    roundoff = ceil(average);
    printf("The average laboratory exercise grade is %d",roundoff);
    printf("\nDo you want to continue(Y/N)?");
    scanf(" %c", &answer);
}
while(answer != 'N' && answer != 'n');
printf("Goodbye!");
}

你应该把它看清楚,并注意到所做的改变。

  1. 如果total_numberof_laboratory计数lab_exercises的总数,则必须用0值初始化它。
  2. average应在计算和后计算。
  3. 应该声明average浮点
  4. 平均值是由average = (float)total_numberof_laboratory /numberof_laboratory ;计算的,而average = (float)total_numberof_laboratory / 3 ;做不到
  5. 最后,只有ceil就足够了,不需要ceilf

乐意帮忙;-]

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39075352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档