前言
没啥好说的水题一道
一、分析
题目已经说得很清楚了,每行会输32位数,每8位算一位地址,根据1的位置定数值。
没啥好说的直接代码(可能写得有点多,但是逻辑很清楚)
二、代码
代码如下:
#include<stdio.h>
#include<math.h>
#include<string.h>
int a,b,c,d;
int math[8]={128,64,32,16,8,4,2,1};//将可能得出的数值放在数组中,不用再计算了
int main()
{
int i,j,n;
scanf("%d",&n);
getchar();
while(n--)
{
char s[100];
int arr[32];
a=b=c=d=0;
gets(s);
for(i=0;i<32;i++)//字符转数字
{
arr[i]=s[i]-'0';
}
//将四个位置分别计数
for(i=0;i<8;i++)
{
if(arr[i]==1)
a=a+math[i];
}
for(i=8;i<16;i++)
{
if(arr[i]==1)
b=b+math[i-8];
}
for(i=16;i<24;i++)
{
if(arr[i]==1)
c=c+math[i-16];
}
for(i=24;i<32;i++)
{
if(arr[i]==1)
d=d+math[i-24];
}
//输出结果,别问我为什么输出写这样,脑子抽了
printf("%d",a);
printf(".");
printf("%d",b);
printf(".");
printf("%d",c);
printf(".");
printf("%d\n",d);
}
return 0;
}