c - C 程序 Pig 拉丁语翻译错误 - 如何修复错误?
问题描述
example -> exampleyay 而是打印 xampleeay。如果它以元音(a,e,i,o,u)开头,则应该在末尾添加'yay'。我该如何解决?
quick -> ickquay 而是打印 uickqay。'qu'应该被视为一个字母对一起作为辅音。我该如何解决这个问题?
y 仅在第一次出现后被视为元音,但我得到了它的工作。
所有前导辅音都移到单词的末尾,直到它到达第一个元音(包括 y),并在末尾添加“ay”。这似乎奏效了。
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
bool isVowel(char v);
int main()
{
char str1[50] = "";
char str2[10] = "";
int i;
int length;
printf("Pig Latin Translator\n");
printf("----------------------\n");
printf("Type a word: ");
scanf("%s", str1);
length = strlen(str1);
strncat(str2, str1,1);
for(i = 0; i < length; i++)
{
str1[i] = str1[i + 1];
}
strcat(str1, str2);
strcat(str1, "ay");
printf("%s", str1);
return 0;
}
bool isVowel(char v) {
if (v == 'A' || v == 'E' || v == 'I' || v == 'O' || v == 'U' ||
v == 'a' || v == 'e' || v == 'i' || v == 'o' || v == 'u') {
return true;
}
return false;
}
解决方案
以下程序有效。
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
bool isVowel(char v);
int main()
{
char str1[50] = "";
int i = 0;
printf("Pig Latin Translator\n");
printf("----------------------\n");
printf("Type a word: ");
scanf("%s", str1);
if (toupper(str1[i]) == 'Y')
i++;
for (; !isVowel(str1[i]) && str1[i] != '\0'; i++)
{
if (toupper(str1[i]) == 'Q' && toupper(str1[i + 1]) == 'U')
i++;
}
strncat(str1, str1, i);
strcpy(str1, &str1[i]);
if(i == 0)
strcat(str1, "yay");
else
strcat(str1,"ay");
printf("%s", str1);
return 0;
}
bool isVowel(char v) { return strchr("AEIOUY", toupper(v)); }
推荐阅读
- reactjs - React 路由器私有路由正在访问它不应该访问的路由
- java - 使用 Java 从无效的 SOAP 1.1 消息中获取值
- wordpress-theming - Why does my child theme break my Divi website's header menu?
- python - 获取每个集群中的节点成员资格
- tfs - Getting file version from TFS rest API Get Item
- google-bigquery - BigQuery data load strategy suggestions
- node.js - 如何在 Facebook 的 Graph API 中使用 App Token
- sql-server - Concatenate string values in one row from multiple rows with constraints SSIS / SQL Server
- c# - Swagger Api 授权密钥?
- python - 这是依赖注入和/或单例模式吗?