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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);来清空一下缓冲区.
参考技术A #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 输入输出的问题,如图的程序,输入数值进去总是输出00000,求解!

#include<stdio.h>int main() double a; scanf("%f",&a); printf("%f",a); getchar(); getchar(); return 0;

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;

效果如下:

追问

谢谢大神 我也是刚刚才查到。

参考技术A double的转义字符为%lf而不是%f。

以上是关于c语言double类型输出问题及字符输入问题的主要内容,如果未能解决你的问题,请参考以下文章

C语言中想输出double和long double型分别用啥控制字符?

c语言long double 怎么输入,输出阿?

请问C语言中 如何把double类型的数转化为字符串 char

C语言输入使用double型时,输出总是出错?

关于C语言中double型输出的问题

C语言float类型储存和printf输出问题