C语言里要对输出的结果用科学计数法表示保留三位有效数字应该怎么写啊?

作者&投稿:类耐 (若有异议请与网页底部的电邮联系)
c语言printf输出有效数字问题(科学计数法)~

double a = 1.2e5
char buf[100]
sprintf(buf, "%e", a);/*先sprintf %e 输出到字符数组,然后再去对字符数组里的字符串做适当的调整*/
.......剩下的代码就是看你字符串 处理 功力了

1.30*10的7次方或者1.30*7E,这两种写法是一个意思。前者是数学的写法,后者是计算机上的写法(如EXcel)

-------保留三位有效数字,怎么会是1.304*10^7,这样的答案也会被采纳,真搞不懂,呵呵!1.304
明明是4位有效数字啊。是不是楼主的题目出错了,应该是小数点后保留三位有效数字吧。

sorry.由于没有在计算机旁,没有及时看到你的求助,你问:C语言里要对输出的结果用科学计数法表示保留三位有效数字应该怎么写?
我觉得应该是
printf("%.3e",变量名);
而不是
printf("%3e",变量名);
==================
MSDN 中有关printf打印格式串:
%[flags] [width] [.precision] [{h | l | I64 | L}]type
的描述,其中对[.precision]是这么说的:
The third optional field of the format specification is the precision specification.
(大义:格式规约中第三个选项段是关于小数的规则。)
==================
对于打印e, E类型的数据时,[.precision]选项的作用是:
The precision specifies the number of digits to be printed after the decimal point. The last printed digit is rounded.
(大义:该精度指定了打印小数点后的位数,之后的位数会被四舍五入)
Default precision is 6; if precision is 0 or the period (.) appears without a number following it, no decimal point is printed.
(大义:缺省情况下,该精度为6,如果精度值为0或者小数点后没有紧跟着数字,则不会打印小数部分)
==================
例:
#include <stdio.h>
int main()
{
float b = 100000.55555f;
printf("%3e\n",b);
printf("%.3e\n",b);
return 0;
}
输出结果为:
1.000006e+005
1.000e+005

polly@nowthen:~/test$ cat liu.c
#include <stdio.h>

int main()
{
    float result = 31415.92653;

    printf("result = %0.3e
", result); <------ %0.3e即可

    return 0;
}
polly@nowthen:~/test$ gcc -Wall liu.c -o liu
polly@nowthen:~/test$ ./liu
result = 3.142e+04 <------是否是你想要的结果?其中e+04代表10的4次方。


printf("%3e",你的变量名);

printf("%.3e",你的变量名);

printf("%.3e",12.345);


C语言里如何输入一段文字,输出结果,自动将“张三”两个字替换成“李四...
include <stdio.h> include <string.h> define N 5 int subcmp(char *s,char *s1){int i;for(i=0;i<N-1;i++)if(s[i]!=s1[i])return 0;return 1;} main(){char s[200],s1[N]="张三",s2[N]="李四";int i,j;printf("输入源字符串:");gets(s);printf("处理前...

急急急!!c语言里的结构体对一个元素排序怎么让其他元素一起按排序后...
j].math){ k=stu[i];stu[i]=stu[j];stu[j]=k;} for(i=0;i<5;i++)\/\/输出排序后的5个学生的学号、语文、数学、英语成绩 { printf("请输入第%d个学生的信息:",i+1);printf("%d,%d,%d,%d\\n",&stu[i].number,&stu[i].chinese,&stu[i].math,&stu[i].endlish);} } ...

非常简单的C语言程序输出结果为74想不通求解
你从每次循环跟踪下来走一遍就明白了:for(x=10;x>3;x--){ if(x%3) x--;--x;--x;printf("%d",x);} 1、第一次,x=10,x%3 =1为真,所以x--,--x;--x,这样连续减3次,x就成了7 2、第二次,for里面的x--,x变成6,判断x%3 等于0,为假,所以只执行后面的--x;-...

C语言中输出时怎样控制小数点后的位数,请举例说明保留1、2、3、4...
我们在输出语句上加如0.就行了,比如printf("%0.2f",a); 就是保留2位.上代码 include <stdio.h> int main(){ double a = 1.11111111;printf("%0.Mf",a); \/\/将M改为你想保留的几位小数 return 0;} 再上结果图:

如何用c语言编写程序,输出正数个数?
到9结束,共进行10次循环。5、if(a[i]>0) m++ 中表示的是,从循环里找出正数,每次找出的正数进行存储在m里。注意这时if里的数组要注意定义为大于0,目的是为了找出10个整数里的正数。6、最后一点要注意输出结果的那个代码要用到10-m-n,使其算出最后一个要求负数的个数,就完成了。

printf(“%d%d\\n”)后面为什么要加\\n啊,不加对输出结果有影响吗
"\\n":C语言中的换行符是"\\n",就是输入完一行内容后,光标转到下一行的起始位置 。不加“\\n”对输出的字符,字符串,数字等没有影响,但是输出矩阵的时候要加“\\n”。例如:printf("first line\\n");printf("second line\\n");换行符(line break)是指一种计算机语言表达方式,它的作用是让...

c语言问题,关于printf语句的输出
本例中:第11行以四种格式输出整型变量a的值,其中“%5d ”要求输出宽度为5,而a值为15,只有两位故补三个空格。第14行以四种格式输出实型量b的值。其中“%f”和“%lf ”格式的输出相同,说明“l”符对“f”类型无影响。“%5.4lf”指定输出宽度为5,精度为4,由于实际长度超过5,故应该按...

C语言 我写了好几个函数,每个函数都要打印一个输出结果,先调用的函数...
比如:int fun1(){ ...} int fun2(int a) { ...} int fun3(int b) { ...} int main() { int a,b;a = fun1();printf("fun1 = %d", a);b = fun2(a);printf("fun 2 = %d", b);printf("fun3 = %d", fun3(b));} 这样不就行了 ...

c语言求平均数问题,只要输入数据后,输出的结果就不对,请各位高人帮一下...
scanf("%d%d%d",&x1,&x2,&x3,&x4,&x5);输入的时候 scanf是遇到空格就确认输入了 你里面没有空格 如果你输入5个数字 比如12 13 14 15 16 17 这5个 输入的时候就应该输入121314151617 这样程序会自动判定x1到x5的值 所以输出的平均数是不对的 应该改成scanf("%d %d %d %d %d",&x1,&x2...

c语言输出问题,37题,求大神详细解答一下*的作用,以及最后输出结果是怎么...
“%d”表示按十进制整型输出;“%ld”表示按十进制长整型输出;“%c”表示按字符型输出等。注:使用printf函数时还要注意一个问题,那就是输出表列中的求值顺序。不同的编译系统不一定相同,可以从左到右,也可从右到左 5 对于*的作用,因为在“”因此*没有具体的作用,因为不属于格式控制字符串...

霍州市13412096572: 求大神告诉小弟,c语言中的科学记数法何意,怎么用,小弟新手,跪谢> - < -
长沙征华士: E-7指的是乘以10的-7次方如6E-3 就是6*10^(-3)3E3 就是3*10^3

霍州市13412096572: C语言中, main( ) { float x= - 345.123 printf(" -
长沙征华士: printf("%10.2e\n",x); 其中%10.2e表示科学计数法表示输出,你的-345.123 用科学计数法就是-3.5e+02也就是-3.5*10^2

霍州市13412096572: c语言 从键盘上输入一个浮点数,把他以科学计数法的形式输出,要求宽度不小于20,三位小数 -
长沙征华士: 共用体是类部成员共同使用同一内存区域,你在该区域存储的是整形的变量97,然后该区域在通过浮点数存储的方法来读出浮点数,结果得到了0.

霍州市13412096572: 关于C语言,下面几个输出格式的输出结果是怎么得出来的啊?谢谢 -
长沙征华士: printf("%13.8e\n",f);表示用科学计数法表示,8位小数,不足补0,输出字符串宽度是13位,不足 前面用空格.printf("%g\n",f);表示用浮点数表示,省略小数后面的0.printf("%g\n",23.456789);表示用浮点数表示,省略小数后面的0,保留6位有效数字.

霍州市13412096572: C语言 科学计数法 -
长沙征华士: do { a1[i++]=getchar(); }while (a1[i]!='.'); 这儿的判断不对,因为此时a1[i]还没有值.

霍州市13412096572: 科学计数法!C语言程序!!求救 -
长沙征华士: #includefloat f(float x) {return (exp(-x)); } void main() { float d,x0,x1,eps=0; printf("input x0 eps:"); scanf("%f%f",&x0,&eps); do { x1 = f(x0); if (fabs(x1-x0)eps); }

霍州市13412096572: 求C语言高手帮忙改下程序,关于科学计数法的 -
长沙征华士: 第一个问题,你自定义函数的方法非常混乱,下面是我改的希望你仔细看看哪些地方动了位置,你的算法没错.#include "stdio.h"#include "conio.h" float sub(float n); void main() { float n,m; scanf ("%f",&n); m = sub(n); printf ("sum=%f\n"...

霍州市13412096572: 求助大神,关于c语言科学计数法 -
长沙征华士: 因为printf("%-6.2e\n",x);中的-6.2表示你的输出小数点后面有两位,有效输出是6位,把6.2改为6.4或者6.5……你想要让输出的浮点数小数点后面保留几位,就在点" . "后面写几,6.4保留4位,6.5保留5位,……依次类推!

霍州市13412096572: 关于C语言中的科学计数法问题. -
长沙征华士: 对,只能是常量表达式. 为了机子的运行着想,如果变量可以的话,那就危险了.容易造成系统奔溃

霍州市13412096572: c语言从键盘上输入一个科学计数法的数 -
长沙征华士: 在内部只要使用高斯消元法即可解出这个二元一次方程组 重点在于如何给i和d赋值对吧 使用scanf函数在标记变量的时候使用%e就可以一指数形式输入数据了 scanf("i=%e d=%e",&i,&d);

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网