C 函数检查短整数算法
这是我的职责,我需要帮助。。。。 我必须在没有错误处理程序的情况下尝试捕捉C 函数检查短整数算法,c,C,这是我的职责,我需要帮助。。。。 我必须在没有错误处理程序的情况下尝试捕捉short int的范围,或者尝试捕捉(&C)。 我在这个算法中找不到我的失败之处-我希望你能帮助我 short int checkShortInt(char * myString) { short int i = 0; short int len; if((myString[i]=='+')||(myString[i]=='-')) i++; for (len = i; myStrin
short int
的范围,或者尝试捕捉(&C)。
我在这个算法中找不到我的失败之处-我希望你能帮助我
short int checkShortInt(char * myString)
{
short int i = 0;
short int len;
if((myString[i]=='+')||(myString[i]=='-')) i++;
for (len = i; myString[len] != '\0'; len++);
if(len-i>5) return(0);
if(myString[i+0]<'3') return(1);
if(myString[i+0]>'3') return(0);
if(myString[i+1]<'2') return(1);
if(myString[i+1]>'2') return(0);
if(myString[i+2]<'7') return(1);
if(myString[i+2]>'7') return(0);
if(myString[i+3]<'6') return(1);
if(myString[i+3]>'6') return(0);
if(myString[i+4]>'7') return(0);
return(1);
}
short int checkShortInt(char*myString)
{
短整数i=0;
短内透镜;
if((myString[i]='+')| |(myString[i]='-'))i++;
for(len=i;myString[len]!='\0';len++);
如果(len-i>5)返回(0);
if(myString[i+0]'3')返回(0);
if(myString[i+1]'2')返回(0);
if(myString[i+2]'7')返回(0);
if(myString[i+3]'6')返回(0);
if(myString[i+4]>'7')返回(0);
申报表(1);
}
short
覆盖的范围是不对称的:它通常在-32768到32767之间我的两分钱。也许是杀伤力太大了
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <inttypes.h>
int checkShortInt(char *myString)
{
long long i = strtoll(myString, 0, 0);
return (i >= SHRT_MIN && i <= SHRT_MAX);
}
#包括
#包括
#包括
#包括
int checkShortInt(char*myString)
{
长i=strtoll(myString,0,0);
return(i>=SHRT\u MIN&&我提供了示例输入和预期输出。我不明白你所说的捕捉short的范围是什么意思。看起来你想检查一些值是否适合short。如果是这样,这可能是你能想象到的最丑陋的尝试之一。试着输入“abc”
,看看哪里出错了。检查shortint(“0”)=>0 rohroh@abelenky0作为一个返回值意味着FALSE,对吧..?我认为最好在while中有if,以避免int溢出,并且在检查之前保存-sing乘以它。还要检查char是否是一个数字。为什么不直接使用strtol?+1选择strtol
而不是strtol
?我认为也是会有用的。@AdamStelmaszczyk,没有理由,strtol也会有用。我对其他要求strtol的答案发表了评论,但没有人回应,所以我写了自己的答案,有点开玩笑。
checkShortInt("53") ==> 53
checkShortInt("+125") ==> 125
checkShortInt("0") ==> 0
checkShortInt("70345") ==> 0
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <inttypes.h>
int checkShortInt(char *myString)
{
long long i = strtoll(myString, 0, 0);
return (i >= SHRT_MIN && i <= SHRT_MAX);
}