提问:printf没有按照代码继续打印下一句是什么问题?
题目:输入姓名、身高、体重,将身高体重转换成另外的计量单位进行打印。遇到的问题:输入名字并回车后,没有继续显示下一个问句?请问是哪里出了问题?scanf?
#include<stdio.h>
int main()
{
char name;
float height,weight;
printf("请输入你的姓名:");
scanf("%s\n",&name);
printf("请输入你的身高(cm):");
scanf("%f\n",&height);
printf("请输入你的体重(kg):");
scanf("%f\n",&weight);//以上输入姓名、身高、体重
weight =2.2046226*weight;//转换体重
height =0.393700787402*height;//转换身高
printf("%s的身高是%.2f(in),体重是%.2f(lb)。\n",name,height,weight);//打印
return 0;
} 本帖最后由 jackz007 于 2022-10-3 22:10 编辑
char name ; // name 必须能够保存很多字符,必须足以保存键入的所有字符
scanf("%s", name) ;// scanf("") 格式描述符字符串中不可以有除格式描述符以外的其它字符( '\n'), name 已经是内存地址,所以,无需取址。
scanf("%f",&height) ;// scanf("") 格式描述符字符串中不可以有除格式描述符以外的其它字符( '\n')
scanf("%f",&weight) ;// scanf("") 格式描述符字符串中不可以有除格式描述符以外的其它字符( '\n')
修改后的完整代码:
#include<stdio.h>
int main()
{
char name ; // 【修改-01】:
float height , weight ;
printf("请输入你的姓名:") ;
scanf("%s", name) ; // 【修改-02】:
printf("请输入你的身高(cm):") ;
scanf("%f" , & height) ; // 【修改-03】:
printf("请输入你的体重(kg):") ;
scanf("%f" , & weight) ; // 【修改-04】:
weight =2.2046226 * weight ; //转换体重
height =0.393700787402 * height ; //转换身高
printf("%s的身高是%.2f(in),体重是%.2f(lb)。\n" , name , height , weight) ; //打印
return 0;
}
参考文章:
C语言scanf为啥有时候要输入两次(解析)
Twilight6 发表于 2022-10-3 22:03
参考文章:
C语言scanf为啥有时候要输入两次(解析)
好的!谢谢大佬{:10_275:} jackz007 发表于 2022-10-3 21:58
修改后的完整代码:
007 大佬,问下 scanf 中的 %s 、%f 什么的不叫占位符,应该叫格式描述符是吗?
本帖最后由 jackz007 于 2022-10-3 23:10 编辑
Twilight6 发表于 2022-10-3 22:51
007 大佬,问下 scanf 中的 %s 、%f 什么的不叫占位符,应该叫格式描述符是吗?
是的,和 printf() 中的一样,都叫格式描述符,版主客气了,早点休息。 jackz007 发表于 2022-10-3 23:08
是的,和 printf() 中的一样,都叫格式描述符,版主客气了,早点休息。
学习到了{:10_282:}隔壁帖子被我误导了
页:
[1]