You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言scanf读取float值后printf输出仅为0.00000问题求助

C语言scanf读取float后printf输出0.000000的问题解决

你的输出异常由printf的格式符与参数不匹配导致,和scanf本身无关,具体有两处错误:

  • float变量输出错误:printf("%f", &grade)中%f格式符要求传入float类型的值,你传入的&grade是grade变量的内存地址(指针类型),类型不匹配触发未定义行为,最终输出0.000000。正确写法是删除取地址符&,改为printf("%f", grade)。
  • 字符变量输出错误:printf("%s \n", &choise)中%s格式符要求传入以\0结尾的字符串首地址,单个char变量的地址没有字符串结束标记,会触发越界读内存的未定义行为,大概率输出乱码。正确写法是使用%c格式符,直接传入char变量本身:printf("%c \n", choise)。

修正后的完整代码如下:

#include <stdio.h>

int main() {
  float grade;  
  char choise; 

  do {
    printf ("Type your grade: ");
    scanf("%f", &grade);
    printf("Want to continue? s/n: ");
    scanf(" %c", &choise);
    printf("%c \n", choise);
    printf("%f\n", grade);
    
  } while(choise != 'n');
  return 0;
}

补充说明:只有scanf读取变量内容时需要传入变量地址,printf输出基础类型变量时直接传入变量本身即可。

内容的提问来源于stack exchange,提问作者SarThori

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 10:00:02