C语言的一道题,每组数据输出一个最多保留两位小数的数,详细见下面。
Description每年的ACM新生赛都要买好多好多的气球,小Q今年又被派去买气球了。小Q去买气球的时候,老板只告诉了小Q一共要付多少钱,而小Q只知道需要买多少个气球。...
Description
每年的ACM新生赛都要买好多好多的气球,小Q今年又被派去买气球了。小Q去买气球的时候,老板只告诉了小Q一共要付多少钱,而小Q只知道需要买多少个气球。请你告诉他每个气球要多少钱.
Input
输入数据有多组,每组占一行。
一个最多保留两位小数的浮点数m和一个整数n。分别代表要付的总钱数和气球数
0<m<10000,0<n<100
Output
每组数据输出一个最多保留两位小数的数。代表每个气球的价格。小数部分不输出末尾的0。若小数部分全为0则输出整数。
Sample Input
1 3
Sample Output
0.33
HINT
Source
下面是我的代码,请问它哪里错了吗?
#include <stdio.h>
int main()
{
int n, a;
double sum, price, k;
while(scanf("%lf %d", &sum, &n) != EOF)
{
price = sum / n;
k = price - (int)price;
if (k == 0||int(k * 100) == 0)
printf("%.0lf\n",price);
else if(int(k * 100) % 10 != 0)
printf("%.2lf\n",price);
else if(int(k * 100) % 10 == 0&&int(k * 100) != 0)
printf("%.1lf\n",price);
}
return 0;
} 展开
每年的ACM新生赛都要买好多好多的气球,小Q今年又被派去买气球了。小Q去买气球的时候,老板只告诉了小Q一共要付多少钱,而小Q只知道需要买多少个气球。请你告诉他每个气球要多少钱.
Input
输入数据有多组,每组占一行。
一个最多保留两位小数的浮点数m和一个整数n。分别代表要付的总钱数和气球数
0<m<10000,0<n<100
Output
每组数据输出一个最多保留两位小数的数。代表每个气球的价格。小数部分不输出末尾的0。若小数部分全为0则输出整数。
Sample Input
1 3
Sample Output
0.33
HINT
Source
下面是我的代码,请问它哪里错了吗?
#include <stdio.h>
int main()
{
int n, a;
double sum, price, k;
while(scanf("%lf %d", &sum, &n) != EOF)
{
price = sum / n;
k = price - (int)price;
if (k == 0||int(k * 100) == 0)
printf("%.0lf\n",price);
else if(int(k * 100) % 10 != 0)
printf("%.2lf\n",price);
else if(int(k * 100) % 10 == 0&&int(k * 100) != 0)
printf("%.1lf\n",price);
}
return 0;
} 展开
1个回答
展开全部
错了,n也得是double型的。不然的话price = sum / n;类型不对,在强制转换之前,是整型,不会出现小数。
追问
改完还是错,会不会是有其他情况还没考虑?
追答
#include
int main()
{
double sum, price, k,n;
while(scanf("%lf %lf", &sum, &n) != EOF)
{
price = sum / n;
printf("%.2lf\n",price);
}
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询