如何在输入正确后不执行最后的printf()语句?
#include <stdio.h>int main()
{
int password,writevalue;
int i;
printf("请设置密码:");
scanf("%d", &password);
for(i=1;i<=3;i++)
{
printf("请输入密码:");
scanf("%d", &writevalue);
if (password == writevalue)
{
printf("欢迎进入!");
}
}
printf("输入错误次数过多!");
return 0;
}
你好 我在GCC下编译正常运行
请设置密码:123456
请输入密码:123456
欢迎进入!请输入密码:0
请输入密码:0
输入错误次数过多!
Process returned 0 (0x0) execution time : 7.309 s
Press any key to continue.
楼主如果用的是VC,建议调试下。 kikyoulin 发表于 2017-8-30 12:17
你好 我在GCC下编译正常运行
请设置密码:123456
但是输入正确后就应该停止啊,不能再输入密码了。 在你的基础上修改,本地运行可以
#include <stdio.h>
int main()
{
int password,writevalue;
int i,flog;
flog = 0;
printf("请设置密码:");
scanf("%d", &password);
for(i=1;i<=3;i++)
{
printf("请输入密码:");
scanf("%d", &writevalue);
if (password == writevalue)
{
printf("欢迎进入!");
flog = 1;
break;
}
}
if ( 0 == flog )
{
printf("输入错误次数过多!");
}
return 0;
}
#include <stdio.h>
void InputError(int iErrorPwd);
void InputCorrect(int iTryTimes);
int main()
{
int password,writevalue;
int i;
printf("请设置密码:");
scanf("%d", &password);
for(i=1;i<=3;i++)
{
printf("请输入密码:");
scanf("%d", &writevalue);
if (password == writevalue)
{
InputCorrect(i);
}
if (i>=3)
{
InputError(password);
}
}
return 0;
}
void InputError(int iPwd)
{
printf("输入错误次数过多!");
/////////////输入错误处理语句;
}
void InputCorrect(int iTryTimes)
{
printf("欢迎进入!");
/////////////输入正确处理语句;
}
解决了,加了个goto语句#include <stdio.h>
int main()
{
int password,writevalue;
int i;
printf("请设置密码:");
scanf("%d", &password);
for(i=1;i<=3;i++)
{
printf("请输入密码:");
scanf("%d", &writevalue);
if (password == writevalue)
{
printf("欢迎进入!");
goto A;
}
}
printf("输入错误次数过多!");
A:
return 0;
}
哈哈,昨天我题目没看懂就随意回答了。抱歉。现在明白你的意思了。
你的解决方法可以的,我给出另一个思路,通过设置一个flag变量来判定是否密码正确。
int flag = 0;//等于0的时候就是假,密码错误的情况
在密码正确的情况下,flag = 1;将它设置成1,然后用break;语句跳出循环即可。
而循环后是否输出,可以通过if(flag)的分支语句来决定。
其实flag可以当成是bool类型。 这种带行号的代码是怎么复制粘贴发到帖子上的啊?
页:
[1]