c语言之根据根据输入确定的整数n使得输出也要精确到小数n位
2014-07-10 00:45
567 查看
之前我一直很纠结这个问题,就是比如说输入三个整数a,b,c,输出a/b的小数形式,c为精确的小数位数。这不能用%.4f这样的东西来表示,这样表示的是4位有效数字。曾经查过用%g好像有这个效果,的是美中不足的是用了%g的话会使得后面的0舍弃,我最初是将a/b得到的小数乘以10的c次方,在取整再除以10的c次方去掉尾部的0,的是这样做会使得如果得到的小数不够的话,比如1.0/2.0要是此时c=3,结果只能得到0.5,与所需要的结果还是有差距的。所以这个有的方法有缺陷。
有错误地代码:
#include<stdio.h>
int main()
{
int count = 0;
while (scanf("%d%d%d",&a,&b,&c) != EOF && (a != 0 || b != 0 || c!=0))
{
count++;
if (b == 0)
{
printf("Inf answer\n");
}
else
{
printf("%g\n", (floor((double(a) / double(b))*double(pow(10, c)))) / pow(10, c));
}
}
return 0;
}
后来看到printf有个巧妙的用法:
int a, b, c;
while (scanf("%d%d%d", &a, &b, &c) != EOF && (a != 0 || b != 0 || c != 0))
{
if (b!=0)
printf("%.*lf\n", c, (double)a / b);//printf("%*.*s\n", m, n, ch);
//前边的*定义的是总的宽度,后边的定义的是输出的个数。分别对应外面的参数m和n 。
//这种方法的好处是可以在语句之外对参数m和n赋值,从而控制输出格式。
else
printf("Error Input\n");
}
有错误地代码:
#include<stdio.h>
int main()
{
int count = 0;
while (scanf("%d%d%d",&a,&b,&c) != EOF && (a != 0 || b != 0 || c!=0))
{
count++;
if (b == 0)
{
printf("Inf answer\n");
}
else
{
printf("%g\n", (floor((double(a) / double(b))*double(pow(10, c)))) / pow(10, c));
}
}
return 0;
}
后来看到printf有个巧妙的用法:
int a, b, c;
while (scanf("%d%d%d", &a, &b, &c) != EOF && (a != 0 || b != 0 || c != 0))
{
if (b!=0)
printf("%.*lf\n", c, (double)a / b);//printf("%*.*s\n", m, n, ch);
//前边的*定义的是总的宽度,后边的定义的是输出的个数。分别对应外面的参数m和n 。
//这种方法的好处是可以在语句之外对参数m和n赋值,从而控制输出格式。
else
printf("Error Input\n");
}
相关文章推荐
- <C语言>如何一步一步根据简单的代码联想到更多的功能?(实现输入一个整数,输出比它小包括它本身的所有素数。)
- 编写函数,其功能是:将一个数字字符串转换为一个整数(不得调用C语言中提供的将字符串转换成整数的函数。)要求在主函数中输入该字符串并输出转换后的整数的值。
- 输入一个整数,输出所有可能的整数序列,使得序列中的整数之和等于输入的整数
- 【c语言】 输入4个整数,要求按由小到大的顺序输出
- C语言输入一个整数,输出其二进制位中1的个数
- C语言_根据用户输入确定新建的数组大小
- C++初学者之根据输入的任何一个正整数,输出可能被表示的连续正整数
- 输入一个float,分别输出它的整数部分和小数部分
- 输入两个整数,然后让用户选择1或者2,选1是调用max函数,输出二者中大数,选2时调用min函数输出二者中的小数(指向函数的指针变量)
- 根据输入文件名确定输出文件名
- C语言实验——输入一个整数的小写金额值,转化为大写金额值并输出
- 根据输入整数的大小给出不同输出
- C语言_输入三个整数x,y,z,请把这三个数由小到大输出。
- 【C语言】使用递归的整数输出(高位到低位)/输出一个菱形(能够确定行数)
- 【c语言】从键盘输入一个小于1000的正数,输出它的平方根(若平方根不是整数,则输出它的整数部分)
- 输入a,b,c3个整数,按从大到小顺序输出(C语言)
- 输入一个浮点数,并输出该数的整数部分和小数部分
- c语言:输入4个整数,要求按从小到大的顺序输出。
- 输入一组大于等于0的整数,根据从大到小的顺序排序后输出;如果排序后有连续数时,只输出连续输的最大和最小数。
- C语言:用递归实现将输入的整数按逆序输出。如输入12345,则输出54321。