这个项目是为了获得所有实验室练习的平均水平。我想把我的小数7.7778除以整数。我尝试了ceilf和roundf(),它不起作用,我的代码有问题吗?任何帮助都将不胜感激,谢谢!
我的代码
#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。
发布于 2016-08-22 09:08:17
你的roundoff = ceilf(average * 100) / 100;错了
average被声明为int。
您应按以下方式声明:
float average;
...
average = total_numberof_laboratory / 3.0f; // thanks to Ed Heal
roundoff = roundf(average);看来你想做以下几件事:
#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中编译为
gcc -o main main.c -lm -Wall -pedantic发布于 2016-08-22 11:11:26
您应该使用以下代码来找到所需的平均值-
#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!");
}你应该把它看清楚,并注意到所做的改变。
total_numberof_laboratory计数lab_exercises的总数,则必须用0值初始化它。average应在计算和后计算。average浮点average = (float)total_numberof_laboratory /numberof_laboratory ;计算的,而average = (float)total_numberof_laboratory / 3 ;做不到ceil就足够了,不需要ceilf乐意帮忙;-]
https://stackoverflow.com/questions/39075352
复制相似问题