有说明float a;则scanf(“%d”,&a);是正确的c语句吗
编译是正确的,运行是错误的
float类型输入,比如用%f,不能用%d
对于定义了一个float类型的变量a,想通过scanf函数从控制台获取输入并将其赋值给a的问题,正确的scanf语句应该为scanf("%f", &a)。
分析: 1.根据参考资料中的段落0,scanf默认使用空格作为分隔输入的标志,因此用%d格式符是无法正确读取float类型的变量a,而应该使用%f格式符。 2.根据参考资料中的段落7,scanf函数每执行一次就会从键盘缓冲区读出一个ASCII值,也就是说如果在此之前有任何键盘输入,都有可能影响到scanf语句的执行结果,导致程序出错。因此,正确的scanf语句应该在其前面加上清空输入缓冲区的语句如fflush(stdin)。 3.根据参考资料中的段落6,正确使用scanf函数需要注意格式符与变量类型的匹配关系,格式符与变量类型不匹配会让程序出错。
因此,正确的scanf语句应该为scanf("%f", &a)加上fflush(stdin),如下所示:
#include <stdio.h>
int main() {
float a;
printf("请输入一个浮点数:");
fflush(stdin);
scanf("%f", &a);
printf("浮点型a=%f\n", a);
return 0;
}