求助一个判断题!!!!!
- C/C++ code
//判断密钥输入是否正确 // if(k不为数字) //{return 重新输入} if(k>=0) { if(k>=26) { k=k%26; } } else if(k>=-26) { k=k+26; } else k=(k%26)+26; cout<<k;最近在写一个caesar密码程序. 请问在接收密钥 k的时候 如何判断该输入的字符是否为数字????
[解决办法]
提供一个做参考,输入为数字时,进行计算,
输入不为数字时,重新输入。
如果是234abc,则计算234
如果是125.213,则计算125
不知是否满足要求?
还是需要输入的一定是单独的数字,后面是空格,或者回车,或者制表符,
否则必须重新输入?
- C/C++ code
#include <string>#include <iostream>using namespace std;void fun(){ int k=0; cout << "Please input a number: "<<endl; cin>>k; while( cin.fail() ){ cin.clear(); cin.ignore(1000,'\n'); cout<<"Please input again: " << endl; cin>>k; } if(k>=0) { if(k>=26) { k=k%26; } } else if(k>=-26) { k=k+26; } else k=(k%26)+26; cout<<k;}int main(){ fun(); return 0;}
[解决办法]
- C/C++ code
bool IsNumber(const char *key){ while(*key != '\0') { if(*key<'0' || *key >'9') return false; ++key; } return true;}
[解决办法]
- C/C++ code
Defined in header <ctype.h> int isdigit( int ch ); Checks if the given character is a numeric character (0123456789). Parameters ch - character Return value Non-zero value (true) if the character is a numeric character, 0 (false) otherwise.
[解决办法]
#include <iostream>
using namespace std;
int judge(int word)
{
int e = int(word);
if(e >= 49 && e <= 57) // ASCII码表 数字的范围
{
return 1;
}
else if(e >= 65 && e <= 90) // 大写字母的范围
return 2;
else if(e >= 97 && e <= 122) // 小写字母的范围
return 3;
else
return 0;
}
int* resolve(char password[], size_t pass_sz)
{
const int pass_size = pass_sz;
int i;
int num[11];
for(i = 0; i < pass_size; i++)
{
num[i] = judge((int)password[i]);
}
return num;
}
int main()
{
char password[] = {'z','h','a','n','g','W','E','I','4','8','1'};
int i;
int array[11];
cout << "1代表数字,2代表大写字母,3代表小写字母,0代表其他字符:" << endl;
for(i = 0; i < 11; i++)
{
array[i] = (resolve(password, sizeof(password) / sizeof(*password)))[i];
cout << array[i] << " ";
}
cout << endl;
return 0;
}