C语言scanf的输入格式的小坑

本文解决了一个C语言初学者在使用scanf函数时遇到的问题,即输入的三个浮点数无法正确赋值给变量a、b、c,导致程序卡在等待输入状态。通过调整输入格式,在输入三角形三边长度后加入换行符,使程序能正常读取输入并计算三角形面积。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

刚上机的学生发了一段代码过来,根据边长求三角形面积,说没有输出,语法也没错误,跟书本上的也差不多,代码如下:

#include <stdio.h>
#include <math.h>


int main()
 {
  float a,b,c,s,p; 
  printf("请输入三角形边长a,b,c:\n");
  scanf("%f%f%f\n",&a,&b,&c);
     p=(a+b+c)/2 ;
     s=sqrt(p * (p-a) * (p-b) * (p-c) );
    
  printf("s=%f\n",s); 
  
 return 0;
}

我让他在debug模式下看a,b,c获取的用户输入值,结果是3个数的赋值一直不成功,都卡在等待输入结束里,其实跟输入格式有关,如果按照下图的格式输入(加一个换行符\n)是可以获得正确结果的

 对比看效果:

 备注:这是C语言新手经常容易范的错误,受printf 影响,都喜欢在末尾加换行符\n,遇到scanf 就出现了格式匹配问题.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值