2014-08-30 35 views
0
char choice, y, n; 
float percentage; 
int marks; 
printf("Do you want to know your percentage?(y/n):\n\n"); 
scanf(" %c", &choice); 
if (choice == 'y') { 
    printf("Enter Your 2nd Sem Marks:\n\n"); 
    scanf(" %d", &marks); 
    percentage = (marks/775) * 100; 
    printf("Your 2nd Sem Percentage is %.2f", percentage); 
} else 
    printf("Thankyou!!!!\n\n\n"); 

使用上述代码我不能计算百分比 - I得到输出0.00 ...c编程 - 不能得到期望的输出

例如,当我给输入作为536,而不是显示导致的69.16,这表明0.00 请帮我

+3

'775' - >'775.0' – BLUEPIXY 2014-08-30 15:28:46

+0

可能重复[C中的整数除法的行为是什么?](http://stackoverflow.com/questions/3602827/what-is-the-behavior-of -integer-division-in-c) – juanchopanza 2014-08-30 15:37:34

+1

你已经通过评论表明你的问题的两个答案已经奏效。还有一件事你应该做,那就是将其中一个答案标记为“已接受”。这是回答你的问题的人从回答时间中获益的方式之一。 – DavidO 2014-08-30 16:01:09

回答

5

由于marksint而且将永远是小于775,表达(marks/775),经过整数除法,永远产量为零。您应该在表达式中强制转换为浮点数,或者在表达式中使用浮点数,以保留除法的其余部分。

+0

非常感谢它的工作... – 2014-08-30 15:37:11

3

这是因为你在做这个

percentage = (marks/775) * 100; 

而应该做到这一点

percentage = ((float)marks/775) * 100; 

记住(marks/775)会给整数作为两个操作数均为整数。 Int他的情况下,536/775将根据整数除法为0

您应该改为执行浮动除法以获取百分比。

+0

非常感谢....它的工作 – 2014-08-30 15:37:41

+0

请接受这是否有帮助。 – OneMoreError 2014-08-30 15:38:39