C語言網藍橋杯1116 IP判斷
阿新 • • 發佈:2019-03-16
處理 () 分隔符 小數點 調用函數 scan 邊界 return strlen {
int sum=0,number=1,j=0,l,str;
str=strlen(a);//調用函數算出字符串的長度
for(;i<=str-1;i++)
{
if(a[i]==‘.‘)//用小數點作為每部分的分隔符
break;
if(a[i]>=‘0‘&&a[i]<=‘9‘)//判斷是否都為數字
{
b[j]=a[i];
j++;
}
else
{
flag=1;
break;
}
}
i++;//註意i加一,跳過小數點的處理
if(flag==1)//用標誌位進行逐次跳出循環
{
break;
}
for(l=j-1;l>=0;l--)
{
sum= sum + (b[l]-‘0‘) * number;//將字符形式的數字轉化為整型數字。
number = number * 10;
}
if(sum <=255 && sum>=0)//判斷數字的大小是否符合
flag=0;
else
flag=1;
if(flag==1)
{
break;
}
}
if(flag==0)
printf("Y\n");
if(flag==1)
printf("N\n");
}
return 0;
}
判斷IP地址的合法性,
1.不能出現除數字和點字符以外的的其他字符
2.數字必須在0-255之間,要註意邊界。
題目分析:
因為一個IP是又四個數字組成,且可能存在符號和其他字符,故不能用整型數組處理,應該用字符串的形式存儲,
將字符串分為四個部分,逐一處理。
代碼如下:
#include<stdio.h>
#include<string.h>
int main()
{
char a[35];
while(scanf("%s",a)!=EOF)//多組輸入字符串,直至文件的末尾
{
char b[30];
int i=0,j,n=4,flag=0;
while(n--)//將字符串分為四組進行處理
int sum=0,number=1,j=0,l,str;
str=strlen(a);//調用函數算出字符串的長度
for(;i<=str-1;i++)
{
if(a[i]==‘.‘)//用小數點作為每部分的分隔符
break;
if(a[i]>=‘0‘&&a[i]<=‘9‘)//判斷是否都為數字
{
b[j]=a[i];
j++;
}
else
{
flag=1;
break;
}
}
i++;//註意i加一,跳過小數點的處理
if(flag==1)//用標誌位進行逐次跳出循環
break;
}
for(l=j-1;l>=0;l--)
{
sum= sum + (b[l]-‘0‘) * number;//將字符形式的數字轉化為整型數字。
number = number * 10;
}
if(sum <=255 && sum>=0)//判斷數字的大小是否符合
flag=0;
else
flag=1;
if(flag==1)
{
break;
}
}
if(flag==0)
printf("Y\n");
if(flag==1)
}
return 0;
}
C語言網藍橋杯1116 IP判斷