C程序中如何判断输入是否等于预设值?
How to check if input is equal to preset value in C programming?
我正在编写一个允许某人登录的程序。但是当我输入的id和密码等于预设值时,我无法打印成功登录。
int main()
{
int id,pass,idC=0,passC=0,i,myid,mypass,tries=1;
myid = 10082612;
password = 123456;
printf("**LOG IN**\n\n");
printf("ID: ");
scanf("%d", &id);
printf("Password: ");
scanf("%d", &pass);
while(id != 0){
id /= 10;
idC++;
}
while(pass!= 0){
pass /= 10;
passC++;
}
if(idC==8 && passC ==6 || idC==7 && passC==6){
if(id==myid && pass==mypass){
printf("Successfully Login");
}
else{
printf("Unknown ID");
}
}
else if(idC!=8 && passC==6 || idC!=7 && passC==6){
printf("The Student ID should be in 7 or 8 digits, please try again");
}
else if(idC==8 && passC!=6 || idC==7 && passC!=6){
printf("Please enter a 6-digit pin");
}
}
这是我写的。
这是因为您失去了 id
和 pass
的原始值,原因是:
while(id != 0){
id /= 10; //THIS PART
idC++;
}
while(pass!= 0){
pass /= 10; // AND THIS PART
passC++;
}
要避免这种情况,您可以:
int idCopy = id;
int passCopy = pass;
//and then do
while(idCopy != 0){
idCopy /= 10;
idC++;
}
while(passCopy!= 0){
passCopy /= 10;
passC++;
}
//and use the original values of id and pass like in your code .
您应该将 idC 和 passC 初始化为 1,因为对于一个 8 位数字,循环只有 7 次为真,依此类推。
int idC = 1,passC = 1;
检查下面的代码。在您的代码中,您正在更新 id 和 pass 值。这就是您无法成功登录的原因
#include <stdio.h>
int main()
{
int id,pass,idC=0,passC=0,i,myid,mypass,tries=1;
myid = 12345678;
int password = 123456;
printf("**LOG IN**\n\n");
printf("ID: ");
scanf("%d", &id);
printf("Password: ");
scanf("%d", &pass);
int temp=id;
while(temp != 0){
temp /= 10;
idC++;
}
temp=pass;
while(temp!= 0){
temp /= 10;
passC++;
}
if(idC==8 && passC ==6 || idC==7 && passC==6){
if(id==myid && pass==password){
printf("Successfully Login");
}
else{
printf("Unknown ID");
}
}
else if(idC!=8 && passC==6 || idC!=7 && passC==6){
printf("The Student ID should be in 7 or 8 digits, please try again");
}
else if(idC==8 && passC!=6 || idC==7 && passC!=6){
printf("Please enter a 6-digit pin");
}
}
问题是 id 和 pass 的值在一段时间后发生了变化。谢谢您的帮助。这是解决方法。再次感谢!!
#include <stdio.h>
#include <stdlib.h>
int main()
{
int id,pass,idC=0,passC=0,i,myid,mypass,tries=1,idCopy,passCopy;
myid = 1234567;
mypass = 123456;
printf("**LOG IN**\n\n");
printf("ID: ");
scanf("%d", &id);
printf("Password: ");
scanf("%d", &pass);
idCopy = id;
passCopy = pass;
while(idCopy != 0){
idCopy /= 10;
idC++;
}
while(passCopy!= 0){
passCopy /= 10;
passC++;
}
if(idC==8 && passC ==6 || idC==7 && passC==6){
if(id==myid && pass==mypass){
printf("Successfully Login");
}
else{
printf("Unknown ID");
}
}
else if(idC!=8 && passC==6 || idC!=7 && passC==6){
printf("The Student ID should be in 7 or 8 digits, please try again");
}
else if(idC==8 && passC!=6 || idC==7 && passC!=6){
printf("Please enter a 6-digit pin");
}
}
我正在编写一个允许某人登录的程序。但是当我输入的id和密码等于预设值时,我无法打印成功登录。
int main()
{
int id,pass,idC=0,passC=0,i,myid,mypass,tries=1;
myid = 10082612;
password = 123456;
printf("**LOG IN**\n\n");
printf("ID: ");
scanf("%d", &id);
printf("Password: ");
scanf("%d", &pass);
while(id != 0){
id /= 10;
idC++;
}
while(pass!= 0){
pass /= 10;
passC++;
}
if(idC==8 && passC ==6 || idC==7 && passC==6){
if(id==myid && pass==mypass){
printf("Successfully Login");
}
else{
printf("Unknown ID");
}
}
else if(idC!=8 && passC==6 || idC!=7 && passC==6){
printf("The Student ID should be in 7 or 8 digits, please try again");
}
else if(idC==8 && passC!=6 || idC==7 && passC!=6){
printf("Please enter a 6-digit pin");
}
}
这是我写的。
这是因为您失去了 id
和 pass
的原始值,原因是:
while(id != 0){
id /= 10; //THIS PART
idC++;
}
while(pass!= 0){
pass /= 10; // AND THIS PART
passC++;
}
要避免这种情况,您可以:
int idCopy = id;
int passCopy = pass;
//and then do
while(idCopy != 0){
idCopy /= 10;
idC++;
}
while(passCopy!= 0){
passCopy /= 10;
passC++;
}
//and use the original values of id and pass like in your code .
您应该将 idC 和 passC 初始化为 1,因为对于一个 8 位数字,循环只有 7 次为真,依此类推。
int idC = 1,passC = 1;
检查下面的代码。在您的代码中,您正在更新 id 和 pass 值。这就是您无法成功登录的原因
#include <stdio.h>
int main()
{
int id,pass,idC=0,passC=0,i,myid,mypass,tries=1;
myid = 12345678;
int password = 123456;
printf("**LOG IN**\n\n");
printf("ID: ");
scanf("%d", &id);
printf("Password: ");
scanf("%d", &pass);
int temp=id;
while(temp != 0){
temp /= 10;
idC++;
}
temp=pass;
while(temp!= 0){
temp /= 10;
passC++;
}
if(idC==8 && passC ==6 || idC==7 && passC==6){
if(id==myid && pass==password){
printf("Successfully Login");
}
else{
printf("Unknown ID");
}
}
else if(idC!=8 && passC==6 || idC!=7 && passC==6){
printf("The Student ID should be in 7 or 8 digits, please try again");
}
else if(idC==8 && passC!=6 || idC==7 && passC!=6){
printf("Please enter a 6-digit pin");
}
}
问题是 id 和 pass 的值在一段时间后发生了变化。谢谢您的帮助。这是解决方法。再次感谢!!
#include <stdio.h>
#include <stdlib.h>
int main()
{
int id,pass,idC=0,passC=0,i,myid,mypass,tries=1,idCopy,passCopy;
myid = 1234567;
mypass = 123456;
printf("**LOG IN**\n\n");
printf("ID: ");
scanf("%d", &id);
printf("Password: ");
scanf("%d", &pass);
idCopy = id;
passCopy = pass;
while(idCopy != 0){
idCopy /= 10;
idC++;
}
while(passCopy!= 0){
passCopy /= 10;
passC++;
}
if(idC==8 && passC ==6 || idC==7 && passC==6){
if(id==myid && pass==mypass){
printf("Successfully Login");
}
else{
printf("Unknown ID");
}
}
else if(idC!=8 && passC==6 || idC!=7 && passC==6){
printf("The Student ID should be in 7 or 8 digits, please try again");
}
else if(idC==8 && passC!=6 || idC==7 && passC!=6){
printf("Please enter a 6-digit pin");
}
}