C语言,double类型的变量使用scanf()函数赋值后再使用printf()输出,为什么和输入的值不同?

作者&投稿:哈胀 (若有异议请与网页底部的电邮联系)
C语言中scanf函数的使用输入double型的使用方法,如何连续输入并且用printf连续输出?我这个怎么错了?~

在输入数据的时候用空格隔开两个数据,不要用逗号,如果要用逗号,请在格式符中用逗号,即改成scanf("%lf,%lf",&a,&b);

#include //加上头文件
#define N 6
#include
#include
typedef struct
{
int x[N],y[N];
}graph;

void main()
{
int i=1;
graph *ga;
ga = ((graph *)malloc(sizeof(graph))); //给它分配一个 graph 大小的空间
scanf("%d %d",&(ga->x[i]),&(ga->y[i]));
printf("%d %d
",ga->x[i],ga->y[i]);
}

没有错误,那 是警告,local variable 'ga' used without having been initialized 是说你没有给 ga初始化,如果你没有给指针分配空间的话,输入的值就不知道放在那里了,所以输入的时候,就给提示你XX.exe 已经停止工作了……

  1. c语言中double输入输出,都用 %lf 进行格式化,是否写成了 %f, 这个是float类型。

#include <stdio.h>

int main()
{
    double d = 0;
    printf("intput a double:");
    scanf("%lf", &d);
    printf("d = %lf
", d);
    return 0;
}

2. 字符定义如下

字符 对应数据类型 含义

d / i int 接受整数值并将它表示为有符号的十进制整数,i是老式写法

o unsigned int 无符号8进制整数(不输出前缀0)

u unsigned int 无符号10进制整数

x / X unsigned int 无符号16进制整数,x对应的是abcdef,X对应的是ABCDEF(不输出前缀0x)

f(lf) float(double) 单精度浮点数用f,双精度浮点数用lf(尤其scanf不能混用)

e / E double 科学计数法表示的数,此处"e"的大小写代表在输出时用的“e”的大小写

g / G double 使用以上两种中最短的形式,大小写的使用同%e和%E

c char 字符型。可以把输入的数字按照ASCII码相应转换为对应的字符

s / S char * / wchar_t * 字符串。输出字符串中的字符直至字符串中的空字符(字符串以'\0‘结尾,这个'\0'即空字符)

p void * 以16进制形式输出指针

n int * 到此字符之前为止,一共输出的字符个数,不输出文本

% 无输入 不进行转换,输出字符‘%’(百分号)本身

m 无 打印errno值对应的出错内容,(例: printf("%m
"); )



精度不够  截断了吧


改成这样


#include <stdio.h>
void main( )
{  double x;
   scanf("%lf", &x);
   printf("%lf
", x);
 }

%f是输入float型时用的



float是4个字节,而double是8个字节,如果你要写入double你就必须写入8个字节,4个字节的写入使得另外4个字节就是随机数字,可以用long float来替代double因为他也是8个字节。

#include<stdio.h>
void main()
{
double x;
scanf("%lf", &x);
printf("%lf\n", x);
}
双精度double要用%lf,不信,你试一试。祝你愉快!

因为double不能用%f来控制输入和输出,应该用%ld来控制输入和输出。

#include <stdio.h>
void main( )
{ double x;
scanf("%ld", &x);
printf("%ld\n", x);
}


c语言中, double类型是什么类型?
C语言中, double类型是双精度浮点型。浮点数也称小数或实数。例如,0.0、75.0、4.023、0.27、-937.198 都是合法的小数。C语言中采用float和double关键字来定义小数,float称为单精度浮点型,double称为双精度浮点型,long double更长的双精度浮点型。补充资料:double (双精度浮点型)类型是C语言...

double是计算机语言的什么类型?
声明double 类型的变量:double puotient。初始化double 类型的变量:puotient = 5.621456873;double puotinet = 5.62。概括:C语言中,双精度浮点(double)型,占8 个字节(64位)内存空间。其数值范围为-1.7E308~1.7E+308,双精度完全保证的有效数字是15位,16位只是部分数值有保证,而单精度保证...

c中double是什么意思(c语言中double是什么意思)
c语言中double对应的指代符 c语言是%if对应double,%f对应float。scanf():“%lf”用于double类型,“%f”用于float类型printf():“%f”既可用于double类型,也可用于float类型,意思是指“保留6位小数”。f和%lf分别是float类型和double类型用于格式化输入输出时对应的格式符号。其中:float,单精度浮点...

double在c语言中的意思是什么?
double是C语言的一个关键字,代表双精度浮点型,占8个字节内存空间,其数值范围为“1.7E-308~1.7E+308”,双精度完全保证的有效数字是15位,16位只是部分数值有保证。C语言中,float和double都属于浮点数。区别在于:double所表示的范围,整数部分范围大于float,小数部分,精度也高于float。举个例子:...

c语言中double的意思
您是想问C语言中“double”的意思是什么吗?其意思如下:C语言中的“double”是一种数据类型,它代表着双精度浮点数。在计算机科学中,浮点数是一种用于表示实数的数据类型,而双精度浮点数则是一种更高精度的浮点数类型。double类型使用64位存储空间,相比于float类型的32位存储空间,double类型可以表示...

c语言中, double、 float、% f、% lf有什么区别
1.双精度浮点型数据用%lf输出。因为double是8个字节的,float是4个字节的,%f 的格式就是4个字节的,而 %lf 就是8个字节的。 例如:printf("%lf\\n",x);2.short 占用内存空间2个字节,短整型数据用%d输出 例如:printf("%d\\n",a);例:include <stdio.h> int main(){double x;short...

c语言中int和double的区别在哪里?
在c++中,int和double有以下几个区别:1、类型区别:int是定义的整型数据,如int a 则a的值只能是整型,比如a=3。double双精度浮点数,就是有小数点的数。2、在计算中的存储方式:int在32位计算机中占4个字节,这4个字节的在内存中存放的顺序为低字节存在低地址,高字节存在高地址。double是64位...

c语言中double的意思
双精度浮点数。double类型的变量可以存储较大范围和精度的实数值,通常占用8个字节的存储空间。double类型的变量可以表示的最大值约为1.8×10^308,最小值约为2.2×10^-308,精度可以达到15到16位有效数字,比float类型的精度更高。double类型的变量可以进行加减乘除等基本的数学运算,也可以进行科学...

c语言的double 和int的区别,%d和%f的区别
int:整型,即我们通常意义下的整数变量,例如1、2、3、4、5等。double:双精度实型数,即我们通常意义下的小数,例如1.25、1.37、5.0等。d:这是C语言中scanf用于输入整数的格式,输入整数的格式是scanf("%d",&a)。f:这是C语言中scanf用于输入小数的格式,输入整数的格式是scanf("%lf",&a...

c语言中double代表什么
在C语言中,`double`是一种数据类型,用于表示双精度浮点数。它通常用于需要更高精度和更广泛范围的数值计算。`double`类型的变量可以存储非常大的或非常小的数字,并且可以提供比单精度浮点数(`float`)更高的精度。在实际应用中,`double`类型通常用于需要高精度的数学运算,如科学计算、图形渲染等。

召陵区19810623942: 在C语言中 什么时候用double型变量 -
永雅小柴: 当需要存储含小数点的小数时就可以用double数据类型,存储小数也可以用floor数据类型,不过它的存储范围没有double数据类型的存储范围大,尽管计算机里存储小数从绝对意义来讲都是一个近似值,但因为double的存储范围比floor的存储范围大,可以说用double来表示一个小数相对更准确一些.

召陵区19810623942: C语言double的用法? -
永雅小柴: double是一种数据类型 具有比float更高的精度 在32位机中以8个字节储存. 用法:同int float 一样,用于声明变量或定义函数的返回值类型,或可用于类型强制转换. 例: double a;//变量声明 double sqrt_(double b);//定义函数返回至类型及形参类型 c=(double)3;//将“3”强制转换为double类型并赋给变量c

召陵区19810623942: C语言中什么时候要用double定义变量 -
永雅小柴: float和double均为浮点型数据类型,二者均用于小数表示中,仅在所能表示数的范围上和精度上有所不同:float所能表示数的范围为-2^128 ~ +2^128,能保证6~7位精确的有效数字 double所能表示数的范围为-2^1024 ~ +2^1024,能保证15~16位有效数字 因此,如果变量的绝对值不是很大,且需要的精度不是很高,可以选用float类型,反之则选用double类型.

召陵区19810623942: 写一个方法,求3个double类型变量的最大值,并返回(用C语言编程) -
永雅小柴: float maxfuc(float a,float b,float c) { float max=0; max=a; if(max<b) max=b; if(max<c) max=c; return max; } 你得自己写个main函数调用它啊

召陵区19810623942: C语言里的DOUBLE函数怎么解释,怎么设置变量? -
永雅小柴: double是双精度类型变量,就是精确度更高,可以存储的小数位数更多 如果想让a,b随意填,可改成如下程序: #include "stdio.h" void main() {int a,b,sum; cin>>a>>b; sum=a+b; printf("sum is %d\n"); }

召陵区19810623942: c语言中double类型怎么用??? -
永雅小柴: #include void main() { double a; scanf("%lf",&a); printf("%lf\n",a); }

召陵区19810623942: C里面double的通配符是什么? -
永雅小柴: 在C语言中,double的通配符为%lf 比如定义double a = 1.481491329841; 可以用printf("%lf", a);实现打印 默认打印6位小数,可以通过printf("%.xlf",a);来控制小数位数. 其中x为常数,代表打印的小数位数.例如printf("%.8lf",a); 除此外,还可以用printf("%e", a);实现以科学计数法来输出a.如果不想自行选择科学计数法还是正常小数输出,可以由系统自行选择最短情况,只能控制,只需要printf("%g", a);

召陵区19810623942: C语音中,double型变量是什么? 具体如何运算? -
永雅小柴: 浮点数保存的字节格式如下: 地址 +0 +1 +2 +3 内容 SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM 这里 S 代表符号位,1是负,0是正 E 偏移127的幂,二进制阶码=(EEEEEEEE)-127. M 24位的尾数保存在23位中,只存储23...

召陵区19810623942: C语言中double类型数据的输出与接收 -
永雅小柴: #include<stdio.h>头文件...你输入输出头文件都没. scanf("%lf",&a);因为你是双精度.

召陵区19810623942: C语言中如果想使用float或者double这样的变量在开头需要include什么样的库函数? -
永雅小柴: 只是声明,不需要头文件. 但通常使用中,需要从键盘输入数据或把计算结果输出到屏幕,这时,你需要 输入输出函数头文件 #include <stdio.h> 注意拼写和标点符号,不要写错,也不能用中文字符和标点符号. ------------ 例如,编译下面程序,应能通过编译,可以运行(当然没有输入输出,直到程序结束) main(){ double d; float f; } 如果编译有错,那么你的编译器或编译器安装没做好. ------

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