标题:给定一浮点数和整数n, 编写一函数把浮点数进行四舍五入以保留n位小数
只看楼主
独行者123
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2008-5-1
 问题点数:0 回复次数:12 
给定一浮点数和整数n, 编写一函数把浮点数进行四舍五入以保留n位小数
不知道该如何入手啊,希望大家帮忙解答一下,拜托了
搜索更多相关主题的帖子: 小数 四舍五入 整数 点数 给定 
2008-05-13 21:23
hellbelial
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2008-4-29
得分:0 
不用写函数了。
程序代码:
#include <stdio.h>
int main()
{
    float f=1;
    int i=10;
    printf("%.5f\n",f);
    printf("%.2f\n",(float)i);
    return 0;
}


00.jpg (5.29 KB)
2008-05-13 21:33
独行者123
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2008-5-1
得分:0 
回复 2# 的帖子
不是啦,浮点数和n都是任意给的,而且已经要求要用函数了啊,不过还是谢了哦
2008-05-13 21:38
hellbelial
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2008-4-29
得分:0 
代码:
程序代码:
#include <stdio.h>
#include <math.h>

float Format(float f, int n)
{
    int i = (int)f;
    int p = pow(10.0f, n);
    float ft = (f - i) * p;
    if((ft-(int)ft)>0.4)ft += 1;
    return i+((int)ft)/(float)p;
}

int main()
{
    float f = 0;
    while(scanf("%f", &f) != EOF)
        printf("%f\n", Format(f,4));
    return 0;
}
2008-05-13 23:29
qinxinhai
Rank: 1
来 自:湖南长沙
等 级:新手上路
帖 子:237
专家分:0
注 册:2008-4-27
得分:0 

看不懂!

我秀我自己
2008-05-13 23:50
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
得分:0 
程序代码:
/******************************************************************

        为了使可以转换的数字位数更多,所以使用字符数组来作。
    如有不足之处,欢迎批评。谢谢。

******************************************************************/
#include<stdio.h>
#include<string.h>
#define X {char c;while(c=getchar()!='\n');}
#define N 1000
int ch(char a[],int n)
{
        char *p;
        int i,b;
        b=strlen(a);  /* 测出字符串长度 */
        for(i=0;i<b;++i)
                if(a[i]=='.')
                        break;  /* 找出小数点的位置 */
        if(b-i<n)    /* 当小数点后的位数小于要保留的位数时 */
        {
                printf("对不起,您输入的数字与所要保留的位数不符,请重新输入.\n");
                sleep(1);   /* ~~暂停屏幕1秒 */
                return 0;  /* 返回 0 ,要求重新输入 */
        }
        p=a+i+n+1;    /* 指针指向要保留的字符位数后一位 */
        if(*p>'4')
        {
                *(p-1)+=1;
                *p='\0'; /* 如果保留字符后的数字大于4,保留字符加1,并在后*/
        }                /* 面加上结束标记 */
        else    *p='\0'; /* 如果保留字符后的数字小于4,直接将它重新赋为结束标记*/
        return 1;       /* 如果四舍五入成功,返回 1 */
}
int main(void)
{
        char a[N];
        int n,b;
        do
        {
                system("cls");      /* 当输入出错后返回时,清屏 */
                printf("请输入想要保留的小数后位数:\n");
                scanf("%d",&n);
                X;          /* 清除键盘缓存 */
                printf("\n请输入您的数字:\n");
                gets(a);   /* 输入字符串*/
                b=ch(a,n); /* 调用函数四舍五入 */
        }
        while(!b);
        printf("\n四舍五入后的数字为:\n");
        puts(a);


        getch();
}
        
2008-05-14 01:33
独行者123
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2008-5-1
得分:0 
回复 6# 的帖子
能否写的简单点啊,貌似很多语句都看不太懂啊,我才刚开始学C 不久,指针还没接触啊

[[it] 本帖最后由 独行者123 于 2008-5-14 09:23 编辑 [/it]]
2008-05-14 09:22
netsolo
Rank: 1
等 级:新手上路
帖 子:122
专家分:0
注 册:2008-3-6
得分:0 
直接用printf函数就可以了

[bo]printf("%.*f\n", n, f);[/bo]

[[it] 本帖最后由 netsolo 于 2008-5-14 09:38 编辑 [/it]]
2008-05-14 09:29
独行者123
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2008-5-1
得分:0 
回复 8# 的帖子
什么意思啊,听不懂啊,能否写出程序啊,谢了啊,不要用指针啦,我还没开始交指针,刚上完函数
2008-05-14 09:37
netsolo
Rank: 1
等 级:新手上路
帖 子:122
专家分:0
注 册:2008-3-6
得分:0 
哪用到指针了???
printf函数格式字符串里的%后门的*表示这个位置的数字由后面参数指定
2008-05-14 09:40



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-214157-1-1.html




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

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