1.判断是否为IP地址
#include <stdio.h>
#include <math.h>
void main()
{
int m,i,j,ip[4],ym[4],ymm[4][8],ipp[4][8],t,zw[4],l;
int ok[4]={0,0,0,0};
printf("请输入一个IP地址:\n");
loop: scanf("%d.%d.%d.%d",&ip[0],&ip[1],&ip[2],&ip[3]);
if((ip[0]>=0&&ip[0]<224)&&(ip[1]>=0&&ip[1]<256)&&(ip[2]>=0&&ip[2]<256)&&(ip[3]>=0&&ip[3]<256))
{if(ip[0]==0&&ip[1]==0&&ip[2]==0&&ip[3]==0) /*把地址为全零的IP地址除去*/
m=0;
else
if(ip[0]==127) /*将127.0.0.0去除*/
m=0;
else
if(ip[1]==255&&ip[2]==255&&ip[3]==255) /*将主机号为全1的去除*/
m=0;
else
if(ip[1]==0&&ip[2]==0&&ip[3]==0) /*将主机号为全0的去除*/
m=0;
else
m=1;
}
else m=0;
switch(m) /*用m的值判断ip地址是否合法,m=0时不合法,m=1时合法*/
{
case 0:{printf("此地址不合法!\n");
printf("重新输入请按ENTER,否则请按其它键!\n");
scanf("%d",&l);
if(l==1)
goto loop;
else
if(l!=1)break;
}
case 1:
{ /*判断地址的类型*/
if(ip[0]>0&&ip[0]<127)
printf("此地址为合法的A类地址..\n");
else if(ip[0]>127&&ip[0]<192)
printf("此地址为合法的B类地址..\n");
else
printf("此地址为合法的C类地..\n");
/*判断地址的类型*/
/*以下程序实现ip地址点分十进制到二进制的转化*/
for(i=0;i<4;i++)
for(j=7;j>=0;j--)
{ipp[i][j]=ip[i]%2;
ip[i]=ip[i]/2;}
printf("\n请输入子网掩码:\n");
/*将十进制子网掩码转化为二进制,存放到ym[4][8]中*/
scanf("%d.%d.%d.%d",&ym[0],&ym[1],&ym[2],&ym[3]);
printf("\n");
for(i=0;i<4;i++)
for(j=7;j>=0;j--)
{ymm[i][j]=ym[i]%2;
ym[i]=ym[i]/2;}
/*将相与后的数用十进制输出*/
printf("子网号的点分十进制表示为:\n");
for(i=0;i<4;i++)
for(j=0;j<8;j++)
ymm[i][j]=ymm[i][j]*pow((double)2,7-j);
for(i=0;i<4;i++)
for(j=0;j<8;j++)
ok[i]=ymm[i][j]+ok[i];
for(i=0;i<4;i++)
printf("%d.",ok[i]);
/*将相与后的数用十进制输出*/
printf("\n");
}
}
}
2.整数倒置
#include<stdio.h>
void main()
{
char a[20],*p;
int i,j;
p=a;
for(i=0;i<20;i++)
{
scanf("%c",&a[i]);
if(a[i]!='\n')
p++;
else
break;
}
for(i;i>=0;i--)
printf("%c",*(--p));
}