除了“Flower”和“Rhythm”之外,我的代码运行良好。输出结果是这样的:“Owerfiay”,“Ythrmreay”;其中“i”和“e”分别是 i-cap 和 e-cap。我尝试检查 ASCII 表以防我在某个地方出错,但我在表中找不到这两个。我在 C++ 方面的知识有限,所以当我尝试在这里和其他任何地方阅读一些现有的线程时,我跟不上它们。
这是我的代码:
#include <stdio.h>
#include <string.h>
void toPigLatin(char *i){
int k,m;
char *n;
n = i;
printf("Pig Latin version: ");
if(*i=='A'||*i=='a'||*i=='E'||*i=='e'||*i=='I'||*i=='i'||
*i=='O'||*i=='o'||*i=='U'||*i=='u'){
k = 0;
while(*i!='\n'){
printf("%c",*i);
i++;
k++;
}
printf("way");
}else{
k = 1;
i++;
while(*i!='\0'){
if(*i=='A'||*i=='a'||*i=='E'||*i=='e'||*i=='I'||*i=='i'||
*i=='O'||*i=='o'||*i=='U'||*i=='u'||*i=='Y'||*i=='y'){
break;
}
k++;
i++;
}
i = n + k;
char *r;
r = n;
while(*i!='\0'){
if(*n>=65&&*n<=90)
printf("%c",*i-32);
else
printf("%c",*i);
i++;
n++;
}
i = r;
m = 0;
while (m!=k){
if(*r>=65&&*r<=90)
printf("%c",*i+32);
else
printf("%c",*i);
m++;
i++;
}
printf("ay");
}
}
int main(){
char arr[16],*i,check[16];
i = check;
printf("Enter a word: ");
scanf("%s",arr);
while(1){
strcpy(check,arr);
if(strcmp(check,"exit")==0){
break;
}
else{
printf("\n\n");
toPigLatin(arr);
printf("\n\nEnter a word: ");
scanf(" %s",arr);
}
}
return 0;
}