XTU 合法整数
Description |
||
C语言中的10进制整数常量定义如下(不是严格的C定义,有简化): 1) 常量的开头可以有“+”或“-”号,也可以没有; 2) 至少有一位数字位,除非数字为0,否则第一个数字必须为1到9的数字; 3) 如果有符号的话,符号与数字之间可以有0个或多个空格。 4) 常量的前后可能会有若干空格。 请写一个程序判断给定的整数是否符合这个定义。 输入每个样例一行,每行表示一个整数,字符长度不超过20; 输出每行输出一个样例的结果,如果符合定义输出“Yes”,否则输出“No” |
||
Sample Input |
||
-123 5F |
||
Sample Output |
||
Yes No |
||
Source |
||
ericxie | ||
代码:
'''
#include <stdio.h>
#include <string.h>
int main()
{
char string[30];
while(gets(string))
{
int flag=0,l=0,k=0,sum,num=0,number=0,y=0,n=10000,h=0;
l=strlen(string);
for(int i=0;i<l;i++)
{
if(string[i]>='0'&&string[i]<='9')
{num++;
}
if(k==0)
{if(string[i]>='0'&&string[i]<='9')
{
k=1;
y=1;
sum=string[i];
}
}
if(string[i]=='+'||string[i]=='-')
{
number++;
}
if(sum=='0'&&num>1)//数字有0且后面还有数字
{
flag=1;
}
if(number>1)//符号大于1
{
flag=1;
}
if((string[i]<'0'&&string[i]!='+'&&string[i]!='-'&&string[i]!=' ')||string[i]>'9')//其他不符合的
{flag=1;
}
if(k==1&&(string[i]=='-'||string[i]=='+'))//符号在数字后面的
{
flag=1;
}
if(h==0)
{
if(string[i]>='0'&&string[i]<='9'&&string[i+1]==' ')
{y=0;
n=num;
h=1;
}
}
if(string[i]>='0'&&string[i]<='9'&&n<num)
{flag=1;
}
}
if(num==0)//没有数字的
{flag=1;
}
if(flag==1)
{printf("No\n");
}else
{printf("Yes\n");
}
}
return 0;
}
'''