|
-1?算不算int型
morn 的程序不错,从测试角度看,有个小漏洞。
-1?算不算int型?
else if(num<0x30||num>0x39) /* num not in 0~9 */
是否修改,加上首个输入考虑+ -;
首个输入可以带符号,另外一个问题是仅输入一个符号也要处理;
所以if(0x0d==num)内也要修改,加个0如何?
很久没编了,“+”,“-”的ascll值忘了;
试改如下:
#include <stdio.h>
#define MAX_LENGTH 256
main()
{
int i=0;
char num[MAX_LENGTH];
printf("\nPlease input the integer, end with enter key:\n");
while(1)
{
num=getche();
if(0x0d==num) /* num='\r',input the end key.*/
{
if(0==i)
{
printf("\nNone integer has been inputted,please input again:\n");
continue;
}
else
{
//以下加一句
if([num[0]=="+"||num[0]=="-")
if(1==i){num[1]=0;i++;}
//继续
num=0x00; /* num='\0',finish the input.*/
break;
}
}
// else if(num<0x30||num>0x39) /* num not in 0~9 *
// 改动如下
else if((num<0x30||num>0x39)||num[0]!="+"||num[0]!="-"||(num[0]<0x30||num[0]>0x39))
/* num not in 0~9 num[0]not + ,-, 0~9 */
{
printf("\nNot a integer! Please input again:\n");
i=0; /*如果希望保留前面的数字,从出错的地方重新继续输入后面的数字,可将此语句去掉。*/
continue;
}
i++;
}
printf("\nThe integer you input is %s",num);
sleep(5);
} |
|