解题思路:
注意事项:
参考代码:
#include
#include
int stra,strb,strc,strd;//在这里先定义好
char a[5],b[5],c[5],d[5];//这里的四个数字用来表示四个数字
char m[30];
void length();//这个函数用来测量数字所对应的长度
void judge();//这个函数用来判断是否符合要求
int main()
{
while(scanf("%s",m)!=EOF)//输入字符串
{
judge(m);//将这个字符串带到判断函数中去
}
return 0;
}
void length()//这里是计算长度的函数
{
int i;
stra=0;strb=0;strc=0;strd=0;;i=0;//stra指第一个数字的长度,strb,strc,strd以此类推
while(m[i]!='.')//这里的判断条件就是在"."出来之前的字符串存到数组a里面去
{
a[stra]=m[i];
i++;
stra++;//每存完一个加1
}
i++;//这里必须要加1
while(m[i]!='.')//后面都是同理
{
b[strb]=m[i];
i++;
strb++;
}
i++;
while(m[i]!='.')
{
c[strc]=m[i];
i++;
strc++;
}
i++;
while(m[i]!='\0')//最后一个不可以用"."作为循环结束判断标志,只能用'\0'作为结束判断标志
{
d[strd]=m[i];
i++;
strd++;
}
}
void judge ()//判断函数,同样定义成void型,返回时为空
{
if(strlen(m)>15)//因为题目说最大数字为255,所以字符串最大长度为15,如果比15大,那就肯定不符合题意
{
printf("N\n");
return ;//因为定义成void函数,所以返回空的
}
else
{
length();//否则对这个字符串进行长度计算
}
int suma,sumb,sumc,sumd;//suma是指a数组所存的数字所代表的数,sunb等同理以此类推
int i;
suma=0;sumb=0;sumc=0;sumd=0;//开始时先赋值为0
for(i=0;i<stra;i++)
{
if(a[i]>='0'&&a[i]<='9')//这里判断时必须带上0。如果出现"001"这种情况后面有判断方法,带上0是防止0在十位或者个位出现
{
suma=suma*10+(a[i]-48);//这里因为a[i]是字符型变量,所对用的数字必须减去0所对应的ASCII码值
if(suma==0)//如果出现"001"类似情况,suma就会等于0,即输出N
{
printf("N\n");
return ;
}
}
else
{
printf("N\n");
return ;
}
}
if(suma>255)//这里判断这个数字是否大于255,大于255就输出N
{
printf("N\n");
return ;
}
for(i=0;i<strb;i++)//后面都是同理
{
if(b[i]>='0'&&b[i]<='9')
{
sumb=sumb*10+(b[i]-48);
if(sumb==0)
{
printf("N\n");
return ;
}
}
else
{
printf("N\n");
return ;
}
}
if(sumb>255)
{
printf("N\n");
return ;
}
for(i=0;i<strc;i++)
{
if(c[i]>='0'&&c[i]<='9')
{
sumc=sumc*10+(c[i]-48);
if(sumc==0)
{
printf("N\n");
return ;
}
}
else
{
printf("N\n");
return ;
}
}
if(sumc>255)
{
printf("N\n");
return ;
}
for(i=0;i<strd;i++)
{
if(d[i]>='0'&&d[i]<='9')
{
sumd=sumd*10+(d[i]-48);
if(sumd==0)
{
printf("N\n");
return ;
}
}
else
{
printf("N\n");
return ;
}
}
if(sumd>255)
{
printf("N\n");
return ;
}
printf("Y\n");
return ;
}
0.0分
2 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复