65,184
社区成员




#include <stdio.h>
int main()
{
for (int T = 0, i = 0, j, k[6]; !T && ~scanf("%d", &T);)
for (unsigned char s[24] = {0}; i < T && ~scanf("%24s", s); i++)
{
for (j = 0; j < 6; j++)
k[j] = s[j] + s[j + 6] + s[j + 12] + s[j + 18];
for (j = 0; j < 6; j++)
while (k[j] > 9) k[j] = k[j] / 100 + k[j] % 100 / 10 + k[j] % 10;
printf("%d%d%d%d%d%d\n", k[0], k[1], k[2], k[3], k[4], k[5]);
}
return 0;
}
const int MAX = 100;
const int LENTH = 20;
char num[4][6] = {0};
int m[6] = {0};
int m_deal[6] = {0};
int asccii()
{
for(int j = 0;j < 6; j++)
{
int mo = 0;
for(int k = 0;k < 4; k++)
{
mo += (int)num[k][j];
}
m[j] = mo;
}
return 0;
}
int deal()
{
int a,b,c,d,e; //个十百\个十
for(int j = 0;j < 6; j++)
{
if(m[j] >= 100)
{
c = m[j] / 100;
a = m[j] % 10;
b = (m[j] / 10) % 10;
//三位数相加的范围是0-27,所以继续处理
if(a + b + c < 10)
{
m_deal[j] = a + b + c;
}
else //>=10
{
d = (a + b + c) % 10;
e = (a + b + c) / 10;
if(d + e < 10)
{
m_deal[j] = d + e;
}
else //唯一一种不为10就是为19,1+9=10,1+0=1
{
m_deal[j] = 1;
}
}
}
else //<100
{
d = m[j] % 10;
e = m[j] / 10;
if(d + e < 10)
{
m_deal[j] = d + e;
}
else //唯一一种不为10就是为19,1+9=10,1+0=1
{
m_deal[j] = 1;
}
}
}
return 0;
}
int main(int argc, _TCHAR* argv[])
{
int No;
char no[LENTH] = {0};
printf("请输入数据个数:\n");
scanf("%d",&No);
for(int i = 0; i < No; i++)
{
char num_1[6] ={0}; //叠加后的字符串
printf("请输入第%d个字符串:\n",i+1);
scanf("%s",no);
int n = 0;
for(int j = 0;j < 4; j++)
{
int m = 0;
while(m < 6)
{
num[j][m] = no[n];
m++;
n++;
if(n >= 20) //防止数组越界
break;
}
}
//test
//for(int i = 0;i < 4; i++)
//{
// for(int j = 0;j < 6; j++)
// printf("%c",num[i][j]);
//}
asccii();
deal();
// test
//for(int j = 0;j < 6; j++)
//{
// printf("%d\n",m_deal[j]);
//}
for(int j = 0;j < 6; j++)
{
printf("%d",m_deal[j]);
}
printf("\n");
//小写字符ASCII码97-122,所以加起来的ASCII码的范围为97-122*4,即三位或2位
}
return 0;
}