2-1 改错题

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

对一个字符串中每个字符(其编码用ch表示)作如下加密操作:
(1) 如果ch是小写字母,就用(ch+5)的值的八进制数字字符串替换该字母;
(2)如果ch是大写字母,就用(ch-5)的值的十六进制数字字符串替换该字母;
(3)如果ch是非字母字符则保持愿样。
函数en的功能是将形参c中字符的编码转换成n进制数字字符串并保存到s指向的数组中。函数encrypt的功能是将a指向的字符串按以上要求做加密处理后保存到b指向的数组中。
(题目保证所有字符串长度不超过1000)
【含有错误的源程序】
#include<string.h>
#include<stdio.h>
void en(char c,int n,char s)
{ int t,i=0;
char temp;
while(c!=0)
{ t=c%n;
if(t<10)
s[i++]=t+'0';
else
s[i++]=t-10+'A';
c=c/10;
}
s[i]='\0';
for(t=i-1,i=0;i<t;i++,t--)
temp=s[i],s[i]=s[t],s[t]=temp;
}
void encrypt(char a[],char b[])
{ char s[4];
int i;
for(i=0;a[i]!='\0';i++)
{ if(a[i]>='a' && a[i]<='z')
en(a[i]+5,8,s);
else if(a[i]>='A' && a[i]<='Z')
en(a[i]-5,16,s);
else s[0]=a[i],s[1]='\0';
strcpy(b,s);
}
}
void main()
{ static char a[30]="No.1",b[100];
encrypt(char a[30],char b[30]);
puts(b);
}

测试样例:
输入

No.1

输出

49164.1

二级培训2018-12-31

未参加
状态
已结束
规则
ACM/ICPC
题目
6
开始于
2018-12-28 14:00
结束于
2018-12-28 17:00
持续时间
3.0 小时
主持人
参赛人数
0