本人写的代码希望帮忙精简一下

C语言 码拜 3年前 (2017-04-14) 473次浏览
输入:工资数,小时数(整数,空格分隔),
输出:工资/小时数(精确到小数点后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;

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)

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);
}

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明本人写的代码希望帮忙精简一下
喜欢 (0)
[1034331897@qq.com]
分享 (0)