输入:工资数,小时数(整数,空格分隔),
输出:工资/小时数(精确到小数点后2位),并根据四舍五入取整,然后将取整的数平方后计算一共有几位,后三位分别是什么。
程序的运行示例如下:
2345 2 (输入)
1172.50 (本行及以下为输出)
1173
7
9 2 9
***输入数据格式***: “%d %d”
***输出数据格式***: “%.2f\n”
“%d\n”
“%d\n”
“%d %d %d\n”
#include<stdio.h>
#include<math.h>
int w(n)
{
int i,sum;
i=10,sum=1;
while(n>=10)
{
n=n/i;
sum++;
}
return sum;
}
int main(void)
{
int money,hours,square;
scanf(“%d %d”,&money,&hours);
square=(int)((float)money/hours+0.5)*(int)((float)money/hours+0.5);
printf(“%.2f\n%d\n%d\n”,(float)money/hours,(int)((float)money/hours+0.5),w(square));
printf(“%d %d %d\n”,(square%1000)/100,(square%100)/10,square%10);
}
新手刚开始希望能将这一段写到最简单明晰。
输出:工资/小时数(精确到小数点后2位),并根据四舍五入取整,然后将取整的数平方后计算一共有几位,后三位分别是什么。
程序的运行示例如下:
2345 2 (输入)
1172.50 (本行及以下为输出)
1173
7
9 2 9
***输入数据格式***: “%d %d”
***输出数据格式***: “%.2f\n”
“%d\n”
“%d\n”
“%d %d %d\n”
#include<stdio.h>
#include<math.h>
int w(n)
{
int i,sum;
i=10,sum=1;
while(n>=10)
{
n=n/i;
sum++;
}
return sum;
}
int main(void)
{
int money,hours,square;
scanf(“%d %d”,&money,&hours);
square=(int)((float)money/hours+0.5)*(int)((float)money/hours+0.5);
printf(“%.2f\n%d\n%d\n”,(float)money/hours,(int)((float)money/hours+0.5),w(square));
printf(“%d %d %d\n”,(square%1000)/100,(square%100)/10,square%10);
}
新手刚开始希望能将这一段写到最简单明晰。
解决方案
10
#include<stdio.h>
#include<math.h>
int w(int n)
{
[size=18px] int sum=1;
while(n>=10)
{
n=n/10;
sum++;
}
return sum;
}
int main(void)
{
int money,hours,square;
scanf(“%d %d”,&money,&hours);
//square=(int)((float)money/hours+0.5)*(int)((float)money/hours+0.5);
square=(int)((float)money/hours+0.5);
square=square*square;
#include<math.h>
int w(int n)
{
[size=18px] int sum=1;
while(n>=10)
{
n=n/10;
sum++;
}
return sum;
}
int main(void)
{
int money,hours,square;
scanf(“%d %d”,&money,&hours);
//square=(int)((float)money/hours+0.5)*(int)((float)money/hours+0.5);
square=(int)((float)money/hours+0.5);
square=square*square;
printf(“%.2f\n%d\n%d\n”,(float)money/hours,(int)((float)money/hours+0.5),w(square));
printf(“%d %d %d\n”,(square%1000)/100,(square%100)/10,square%10);
}
不知道还能更简单?
[/size]
10
差不多可以了吧
20
int w(n)
改成:
int w(int n)
改成:
int w(int n)
10
仅供参考:
//Round(1.234,2) = 1.23 //Round(1.234,0) = 1.0 //Round(123.4,-1) = 120.0 double Round(double dVal, short iPlaces) { double dRetval; double dMod = 0.0000001; if (dVal<0.0) dMod=-0.0000001; dRetval=dVal; dRetval+=(5.0/pow(10.0,iPlaces+1.0)); dRetval*=pow(10.0,iPlaces); dRetval=floor(dRetval+dMod); dRetval/=pow(10.0,iPlaces); return(dRetval); } double round(double dVal, short iPlaces) //iPlaces>=0 { unsigned char s[20]; double dRetval; sprintf(s,"%.*lf",iPlaces,dVal); sscanf(s,"%lf",&dRetval); return (dRetval); }