首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个判断题!

2012-10-19 
求助一个判断题!!!!!C/C++ code//判断密钥输入是否正确// if(k不为数字)//{return 重新输入}if(k0){if(k

求助一个判断题!!!!!

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;
}

热点排行