我使用signed long long int
来计算用户输入的位数。如果ID和Pin不正确,程序应反复询问输入,并在输入正确的ID和Pin时显示“成功登录”。但是,当我输入正确的ID和Pin时,程序不断要求输入。我在代码中做错了什么?非常感谢帮助。
这是我的代码:
#include <stdio.h>
int main()
{
long long n = 1234567,m = 123456;
int count = 0, count2 = 0, c, a;
do
{
printf("Enter student ID: ");
scanf("%lli", &n);
while (n != 0)
{
n /= 10;
++count;
}
if (count < 7 || count > 8)
printf("The Student ID should be in 7 or 8 digits, please try again\n");
} while(n != 1234567);
do
{
printf("Enter security pin: ");
scanf("%lli", &m);
{
c = a;
a++;
}
while (m != 0)
{
m /= 10;
++count2;
}
if (count2 < 6 || count2 > 6)
printf("Please enter a 6-digit pin\n");
if (a == 5)
{
printf("\nAccess Denied\n");
}
} while (m != 123456);
if (n == 1234567 && m == 123456)
printf("Successfully Login\n");
else
printf("Wrong password, try again\n");
return 0;
}
答案 0 :(得分:0)
问题在于逻辑:
scanf("%lli", &n);
while (n != 0)
{
n /= 10;
++count;
}
即使用户在scanf中给出了正确的学生ID n = 1234567,它在这里被划分为n = n / 10 ---&gt;这将指定n = 123456。在代码中,由于while循环逻辑,n和m值永远不会等于正确的值。这同样适用于密码。 如果要检查密码长度和ID长度,最好使用字符串和atoi函数。