我正在编写一个将名词改为复数的函数 除了以y结尾的单词之外,每个条件都很有效 它应该像输入一样工作:飞行输出:苍蝇 但输出结果如下:flis
#include <iostream>
#include <fstream>
using namespace std;
void change_to_plural(char* input_string, char* output_string) // changing to plural
{
int n;
n = strlen(input_string);
if (input_string[n - 1] == 'y') //ends with y
{
input_string[n + 2] = '\0';
input_string[n - 1] = 'i';
input_string[n] = 'e';
input_string[n + 1] = 's';
}
if (input_string[n - 1] == 's' || ((input_string[n - 2] == 's') && (input_string[n - 1] == 'h'))) // ends with s or sh
{
input_string[n] = 'e';
input_string[n + 1] = 's';
input_string[n + 2] = '\0';
}
else //other cases
{
input_string[n] = 's';
input_string[n + 1] = '\0';
}
output_string = input_string;
n = strlen(input_string);
for (int i = 0; i < n; i++)
cout << output_string[i];
}
void main() {
char in[10], out[10];
int k;
cout << "How many words would you like to try ? ";
cin >> k;
for (int i = 0; i < k; i++)
{
cout << "Please enter a word : ";
cin >> in;
cout << "Its plural is : ";
change_to_plural(in, out);
cout << endl;
}
cout << endl;
}
运行样本
答案 0 :(得分:1)
您缺少其他 if语句(添加所有大写注释,如果缺少,请希望您注意到它)。所以,正因为如此,它仍然适用于其他情况&#34;分支。
if (input_string[n - 1] == 'y') //ends with y
{
input_string[n + 2] = '\0';
input_string[n - 1] = 'i';
input_string[n] = 'e';
input_string[n + 1] = 's';
}
// MISSING ELSE HERE!!!!
else if (input_string[n - 1] == 's' || ((input_string[n - 2] == 's') && (input_string[n - 1] == 'h'))) // ends with s or sh
{
input_string[n] = 'e';
input_string[n + 1] = 's';
input_string[n + 2] = '\0';
}
else //other cases
{
input_string[n] = 's';
input_string[n + 1] = '\0';
}