【发布时间】:2016-07-09 06:16:47
【问题描述】:
我正在编写一个以这种方式加密给定字符串的程序:
如果我们有一个整数 V 和一个只有元音的数组 v={a,e,i,o,u} 如果字符串的字母是元音,那么用它前面 V 个位置的元音替换它只考虑元音数组(而不是整个字母表!)。
要明确:
String: "uuuu" and V:2 -----> String_out: "iiii"
String: "aaaa" and V:2 -----> String_out: "oooo"
String: "iiii" and V:2 -----> String_out: "aaaa"
所以为了解决我的问题,我写了:
V=2;
char vow[5]={'a','e','i','o','u'};
for(i=0;i<strlen(s);i++){
flag=0;
for(j=0;j<5 && flag==0;j++){
if(*(s+i)==vow[j]){
flag=1;
}
if(flag)
*(s+i)=vow[j-V%5];
}
代码获取字符串的每个元素,验证它是否是元音,然后如果它是元音,则用 V 位置之前的元音替换字符串的考虑元素。
如果字符串只有元音 i,o,u,则此代码有效,但如果它有 a,e,则输出将是错误的: 问题
char vow[5]={'a','e','i','o','u'};
j=1 // it will happen if the string is "eeee" in fact corresponds to 'e' in vow
V=2
vow[j-V%5]=... // j-V%5 is a negative number!!!!
那么我该如何解决字母 a 和 e 的问题,以便我不再在 vow[...] 中获得负数并正确遵守加密规则? 如果有什么不清楚的地方请告诉我,提前谢谢!!!
【问题讨论】: