| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 341 人关注过本帖
标题:这道简单的题我看了好久,做出来不知道哪里错了,求好心人
只看楼主 加入收藏
zkcok
Rank: 1
等 级:新手上路
帖 子:3
专家分:7
注 册:2014-12-7
收藏
 问题点数:0 回复次数:0 
这道简单的题我看了好久,做出来不知道哪里错了,求好心人
四舍五入
Time Limit: 1000 ms   Case Time Limit: 1000 ms   Memory Limit: 64 MB
Total Submission: 741   Submission Accepted: 82
Description
四舍五入是程序设计中很头疼的精度误差问题。
现在有一种新的四舍五入规定。
对于一个实数的取整,分为以下几种情况:
1、整数部分的最后一位不是9,小数部分小于0.5,那么取整之后保留整数部分不作处理
2、整数部分的最后一位不是9,小数部分不小于0.5,那么取整之后,整数部分需要加1。
3、整数部分的最后一位是9,那么进位将会是一位很麻烦的事情,所以规定保留整数部分不处理。
给出一个实数,输出取整之后的情况。

Input
一个整数 T,表示有 T 组测试数据。(1<=T<=100)
每组数据输入格式如下:
给出一个非负实数,也可能是个整数,数的长度<=1000。

Output
对于每组数据,输出取整之后的结果,不要输出前导0.
如不要输出000034,应该输出34

Sample Input
Original    Transformed
3[EOL]
1.234[EOL]
1.823[EOL]
9.643[EOL]
[EOF]

Sample Output
Original    Transformed
1[EOL]
2[EOL]
9[EOL]
[EOF]


#include<stdio.h>
#include<string.h>
int main()
{
    int t,i,j,count1,count2,num1,num2;
    char m[1001];
    scanf("%d",&t);
    for(j=0;j<t;j++)
    {
        scanf("%s",m);
        num1=0,num2=0;
        for(i=0;m[i]!='\0';i++)
        {
            if(m[i]=='.')
            {
                count1=i;
                num1++;
                break;
            }
        }
        for(i=0;m[i]!='\0';i++)
        {
            if(m[i]!='0')
            {
                count2=i;
                num2++;
                break;
            }
        }
        if(num1==0)
        {
            if(num2==0)printf("0\n");
            else
            {
                count1=strlen(m);
                for(i=count2;i<count1;i++)
                {
                    printf("%c",m[i]);
                }
                printf("\n");
            }
        }
        else
        {
            if(m[count1-1]=='9')
            {
               for(i=count2;i<count1;i++)
                 printf("%c",m[i]);
                 printf("\n");
            }
            else
            {
               if(m[count1+1]<'5')
               {
                 if(m[count1-1]=='0')printf("0\n");
                 else
                 {
                       for(i=count2;i<count1;i++)
                      printf("%c",m[i]);
                      printf("\n");
                    }
               }
               else
               {
                   for(i=count2;i<count1-1;i++)
                     printf("%c",m[i]);
                   printf("%c\n",m[count1-1]+1);
               }
            }
        }
    }
    return 0;
}


搜索更多相关主题的帖子: Memory 程序设计 
2014-12-07 16:29
快速回复:这道简单的题我看了好久,做出来不知道哪里错了,求好心人
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036171 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved