早教吧 育儿知识 作业答案 考试题库 百科 知识分享

#include"stdio.h"#include"string.h"voidmain(){chardatas[8],temp;shorti,len;printf("请输入要是传递的数据:");scanf("%s",datas);len=strlen(datas);for(i=1;i

题目详情
#include "stdio.h"
#include "string.h"
void main()
{
char datas[8],temp;
short i,len;
printf("请输入要是传递的数据:");
scanf("%s",datas);
len=strlen(datas);
for(i = 1 ; i < len / 2; i++)
{
temp=datas[i];
datas[i] = datas[len-1-i];
datas[len-1-i] = temp;
}
for(i = 0 ; i < len ; i++ )
printf("%c",(datas[i] - '0' +5) % 10+48);
printf("\n");
}
请问这句话的功能是什么呢?datas[i] - '0' +5) % 10+48,
▼优质解答
答案和解析
重新做字符的映射,规则是:
'0' -- '5' '1' -- '6' '2' -- '7' '3' -- '8' '4' -- '9'
'5' -- '0' '6' -- '1' '7' -- '2' '8' -- '3' '9' -- '4'
详细的运算过程如下:
第一步:daas[i] - '0',是将字符串daas的第i+1位,与字符'0'相减,如果是'1',就得1,如果是'5',就得5,以此类推;
第二步:( datas[i] - '0' + 5)%10,就是将第一步结果加上5,求除以10后的余数;
第三步:最后的“+48",是还原成字符,在ASCII编码中,编号48的,就是字符'0',因此第二步的结果加上48,就可以将数字还原成字符,如:数字1,就变成'1';数字5,就变成'5'.