新手求助!关于getchar()!='\n'与scanf的冲突。另外,关于%fl和%f的区别
新手求助!关于getchar()!='\n'与scanf的冲突。另外,关于%fl和%f的区别以下代码将//去掉则可以正确执行,加上//则会导致login()函数的scanf语句跳过执行。求解答。
程序代码:
#include<stdio.h> void login(); void menu(); void add(); int main() { char m; login(); menu(); //while(getchar()!='\n'); printf("请输入选择:\n"); m=getchar(); switch(m) { case 'A':printf("a\n");break; case 'B':printf("b\n");break; case 'C':printf("c\n");break; } return 0; } void menu() { printf("*********\n"); printf("* A *\n"); printf("* B *\n"); printf("* C *\n"); printf("*********\n"); } void login() { int mm; printf("请输入登录口令:\n"); scanf("%d",&mm); }
下面这段代码中,在//这一行中将%fl换成%f ,则无法得出正确结果,求教。
程序代码:
#include<stdio.h> #include<math.h> int san(double a,double b,double c); int main() { double x,y,z; int f; printf("请输入三角形的三边,以空格隔开:\n"); //scanf("%lf %lf %lf",&x,&y,&z); f=san(x,y,z); if(f==1) printf("这是三角形!\n"); else printf("这不是三角形!\n"); return 0; } int san(double a,double b,double c) { int m; if(a+b>c && b+c>a && c+a>b) m=1; else m=0; return m; }