c语言double类型输出问题及字符输入问题

#include<stdio.h>
void main(){
double x;
char str[10],ch;
/*以下为输入一个double类型的数*/
scanf("%f",&x);
printf("%f\n",x);
/*问题1:以上结果为什么输出了一个随机数??*/
/*以下为输入一个字符串*/
scanf("%s",str);
/*以下为输入一单个字符*/
/*问题2:为什么没有相应的输入中断???*/
scanf("%c",&ch);
printf("%c\n",ch);
/*问题3:以上输出结果为什么单个字符没有被赋值???*/
printf("%s\n",str);

}
问题在以上程序注释中
编译环境是VC++6.0

double要用%lf

你输入字符串时,肯定按了回车,而回车实际上输入了2个字符,第1个被用来确认scanf结束,还有一个仍然保留在了缓冲区内,被scanf("%c",&ch);读到了,这个字符是个控制字符,所以不可见.

在任何读取字符的语句之前,你最好用fflush(stdin);来清空一下缓冲区.
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-07-31
#include<stdio.h>

void main(){
double x;
char str[10],ch;
/*以下为输入一个double类型的数*/
scanf("%lf",&x);
printf("%lf\n",x);
/*%f改成%lf OK*/
/*以下为输入一个字符串*/
scanf("%s",str);
/*以下为输入一单个字符*/
/*scanf遇到空格或者回车自动结束*/
getchar();/*加一个用来存储回车键就OK或者fflush(stdin); 也可以*/
scanf("%c",&ch);
/*因为回车键也是一个字符。所以你在输完字符的时候回车的时候。他会把他当成字符存储到ch。你看一下你的是两行空格加两行\n是四行空格。*/
printf("%c\n",ch);
/*问题3:以上输出结果为什么单个字符没有被赋值???*/
printf("%s\n",str);

}
不懂可以hi我

c语言double类型输出问题及字符输入问题
double要用%lf 你输入字符串时,肯定按了回车,而回车实际上输入了2个字符,第1个被用来确认scanf结束,还有一个仍然保留在了缓冲区内,被scanf("%c",&ch);读到了,这个字符是个控制字符,所以不可见.在任何读取字符的语句之前,你最好用fflush(stdin);来清空一下缓冲区....

关于C语言中double型输出的问题
double存储数据格式为:1位的符号位+11位的指数位+52位尾数 因此,错位存储的数据,解释输出来就差别非常大了。

C语言double 输入输出的问题,如图的程序,输入数值进去总是输出00000...
scanf这个语句表达double类型的数据不正确 double这个类型有一点特殊,在scanf和printf里面的表达方式是不一样的。在scanf里面需要用%lf表达,在printf里面需要用%f表达。修改后的代码如下:include<stdio.h>int main(){double a;scanf("%lf",&a);printf("%f",a);getchar();getchar();return 0;}...

C语言double型数据输出有问题,请高手指点。
出现类型不匹配问题,double型的为%lf 而float为%f 所以才出现问题。include<stdio.h> int main(){ double x;scanf("%f",&x);printf("x=%f\\n",x);} }

C语言,double类型的变量使用scanf()函数赋值后再使用printf()输出,为什 ...
c语言中double输入输出,都用 %lf 进行格式化,是否写成了 %f, 这个是float类型。include <stdio.h>int main(){ double d = 0; printf("intput a double:"); scanf("%lf", &d); printf("d = %lf\\n", d); return 0;} 2. 字符定义如下 字符对应数据类型含义 d \/ ...

C语言double类型数据怎么输出啊?
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;sh...

c语言程序 哪里出错了呢 始终运行不出结果
在C语言编程中,若程序始终无法输出结果,可能是因为输入数据的类型与程序调用的数据类型不一致。以scanf函数为例,当使用 scanf("%lf%lf%lf",&a,&b,&c);进行输入时,确实将输入的数字以float类型存储至内存中。然而,程序在读取这些内存时,可能期望以double类型进行解析。这种类型不匹配会导致解析...

C语言输入使用double型时,输出总是出错?
C语言中scanf输入一般是不控制精度的,只有printf输出才会控制精度 一般输入输出的占位符浮点型(float)用“%f”,双精度型(double)用“%lf”!注意double的“%lf”中的“l”是字母“L”的小写,不是数字“1”!“%1f”“%2f”“%.2f”之类的在输入中是不规范的语法,一般只在输出中使用,表示...

c语言,double类型的数组为什么不可以用数组名对数组进行整体输入输出...
C语言中,用printf()输出数据时,只有字符串类型数据才可以通过数组名(数组首地址)将其中的数据完整的输出出来。因为,字符串有一个规定,必须以\\0结尾,这样,程序,只需要判断是不是遇到\\0而决定是否结束输出。可是,对于其它类型的数组,因为没有标识可供机器判定输出结束,所以,只提供数组首地址,...

C语言 关于float 和 double 输入时 如果是float必须用%f double必须用...
输入时float 用 %f, double 用 %lf, 这是约定(规定)。数据可以用定点格式,也可以 E 格式。输出float 用 %f, double 可以用 %lf, 也可以用 %f, 这将按默认 定点格式输出。没给 场宽和小数位数 时 按 默认位数输出。若给了 场宽和小数位数 时 按 给定的 输出,若给的宽度不足时...

相似回答