我的回文检查程序(使用指针)必须包括几种情况。
输入可以是:
e。 G。: 输入:女士,我是亚当 输出:回文 输入:?a!a! 输出:回文
我已经设法使用指针创建回文函数,将字符串中可能的字母转换为小写,并且如果字符串仅包含符号,则显示“回文”。
我该如何转换e。 g。:
char str[80] = "Madam, I'm Adam";
进入:
str[80] = "madamimadam";
吗?
答案 0 :(得分:0)
只需仔细检查整个字符串,然后以更方便的格式创建一个新字符串。在进行大小写转换的位置:
#include <ctype.h>
void format (char* dst, const char* src)
{
size_t i=0;
while(*src != '\0')
{
char ch = tolower(*src);
if(isalpha(ch))
{
*dst = ch;
dst++;
}
src++;
}
}
如果由于某些人为原因而无法使用isalpha
,则可以轻松地自己创建。这是一个快速,便携式的查询表版本:
#include <stdbool.h>
bool my_isalpha (char ch)
{
static const bool ALLOWED[256] =
{
['A'] = true;
['B'] = true;
['C'] = true;
...
};
return ALLOWED[ch];
}
同一功能的初始版本仅检查if(ch >= 'A' && ch <= 'Z')
,仅假定为大写。对于学生作业,这可能是可以的,但对于产品质量代码而言,这可能不是。由于C标准不能保证符号表中的字符是相邻的。而且查找表版本无论如何都运行得快得多,因此没有理由不在专业程序中使用它。