一个萌新问题
#include<stdio.h>int main()
{
char x;
printf("是否存入?(Y/N)\n");
while(~scanf("%c",&x))
{
if(x=='Y')
{
printf("请依次输入本金,利率,年份:");
float money,n,r,P;
scanf("%f %f %f",&money,&r,&n);
r = r*0.01;
P = money*r*n;
printf("P=%.2f",P);
}
if(x=='N')
{
printf("欢迎下次使用\n");
}
else
{
printf("请输入正确指令(Y/N)\n");
}
}
return 0;
}
各位大佬 我输入Y没问题 但是输入N或者其他就会这样显示
欢迎下次使用
请输入正确指令(Y/N)
输入其他也一样
请输入正确指令(Y/N)
请输入正确指令(Y/N)
这是怎么回事啊 本帖最后由 kogawananari 于 2020-10-4 16:29 编辑
else都是与最近的一个if配对
第二个if改成else if吧
还有就是第二个if里是不是要break kogawananari 发表于 2020-10-4 16:27
else都是与最近的一个if配对
第二个if改成else if吧
改了之后还是一样的 kogawananari 发表于 2020-10-4 16:27
else都是与最近的一个if配对
第二个if改成else if吧
break 有用 我再else if 和else 里面都加了一个break 就可以了 是什么原因啊 感觉像是循环了两次 #include<stdio.h>
int main()
{
char x;
printf("是否存入?(Y/N)\n");
scanf("%c", &x);
while (true)
{
if (x == 'Y')
{
printf("请依次输入本金,利率,年份:");
float money, n, r, P;
scanf("%f %f %f", &money, &r, &n);
r = r * 0.01;
P = money * r * n;
printf("P=%.2f", P);
break;
}
if (x == 'N')
{
printf("欢迎下次使用\n");
break;
}
else
{
printf("请输入正确指令(Y/N)\n");
scanf("%c", &x);
}
}
return 0;
}
稍微改动了一下 昨非 发表于 2020-10-4 16:34
稍微改动了一下
可以问下为什么不加break就会出现两次吗 jialouluos 发表于 2020-10-4 16:37
可以问下为什么不加break就会出现两次吗
确实奇怪,不太明白 昨非 发表于 2020-10-4 16:44
确实奇怪,不太明白
{:5_100:} jialouluos 发表于 2020-10-4 16:51
原理在于scanf方法,我不太理解,请参考http://c.biancheng.net/view/160.html 本帖最后由 昨非 于 2020-10-4 18:00 编辑
jialouluos 发表于 2020-10-4 16:51
#include<stdio.h>
int main()
{
char x;
printf("是否存入?(Y/N)\n");
scanf("%c", &x);
getchar();
while (true)
{
if (x == 'Y')
{
printf("请依次输入本金,利率,年份:");
float money, n, r, P;
scanf("%f %f %f", &money, &r, &n);
r = r * 0.01;
P = money * r * n;
printf("P=%.2f", P);
break;
}
else if (x == 'N')
{
printf("欢迎下次使用\n");
break;
}
else
{
printf("请输入正确指令(Y/N)\n");
scanf("%c", &x);
getchar();
}
}
return 0;
}
记得不要输入多个字符,不然还会出错,加个getchar()吞掉回车就好了,解决了记得给个最佳
页:
[1]