回文,降低功能
Palindrome, to lower function
目前学校布置了一个 C 程序来检查用户输入的字符串是否为回文。该程序需要有 2 个不同的函数(不包括主要函数),一个是检查字符串是否为回文,另一个是使程序将大写字母识别为小写字母。示例:程序将 "wow" 和 "Wow" 都识别为回文,目前它只识别第一个而不识别第二个。我目前不知道如何进行,非常感谢帮助。
这是我的代码目前的样子:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define _CRT_SECURE_NO_WARNINGS
int checkPalindrome(char* text)
{
int i, c = 0, l;
l = strlen(text);
for (i = 0; i < l / 2; i++)
{
if (text[i] == text[l - i - 1])
c++;
}
if (c == i)
return 1;
else
return 0;
}
int setToLowercase()
{
}
int main()
{
char text[1000];
printf("Enter the string: ");
gets(text);
if (checkPalindrome(text))
printf("string is palindrome");
else
printf("string is not palindrome");
return 0;
}
如果允许,tolower() 会将字符转换为小写。循环字符串。
否则请查看 ascii 图表并找出 math/if 案例。
我设法用 tolower() 函数解决了 "problem"。谢谢
void setToLowercase(char *string)
{
int i;
for (i = 0; string[i]; i++) {
string[i] = tolower(string[i]);
}
}
对于根据 C 标准的初学者,不带参数的函数 main 应声明为
int main( void )
函数gets
不是标准的C函数。这是不安全的。而是使用标准 C 函数 fgets
.
函数checkPalindrome
不改变传递的字符串。所以它的参数应该用限定符 const
.
来声明
int checkPalindrome(const char* text);
函数 strlen
的 return 类型是 size_t
。因此,接受函数值 return 的变量也应具有 size_t
.
类型
要将字符转换为小写,请使用在 header <ctype.h>
.
中声明的标准函数 tolower
下面有一个演示程序,展示了如何编写原始程序。
#include <stdio.h>
#include <string.h>
#include <ctype.h>
char setToLowercase( char c )
{
return tolower( ( unsigned char )c );
}
int checkPalindrome( const char *s )
{
size_t n = strlen( s );
size_t i = 0;
while ( i < n / 2 && setToLowercase( s[i] ) == setToLowercase( s[n-i-1 ] ) )
{
i++;
}
return i == n / 2;
}
int main(void)
{
while ( 1 )
{
enum { N = 1000 };
char s[N];
printf( "Enter a string (Enter - exit): " );
if ( fgets( s, N, stdin ) == NULL || s[0] == '\n' ) break;
// remove the appended new line character '\n'
s[ strcspn( s, "\n" ) ] = '[=12=]';
printf( "The string is %spalindrome.\n",
checkPalindrome( s ) ? "" : "not " );
putchar ( '\n' );
}
return 0;
}
程序输出可能看起来像
Enter a string (Enter - exit): AbCdEeDcBa
The string is palindrome.
Enter a string (Enter - exit):
如果您使用 MS VS 编译器编译程序,那么您可以包含指令
#define _CRT_SECURE_NO_WARNINGS
函数 setToLowercase
也可以内联,例如
inline static char setToLowercase( char c )
{
return tolower( ( unsigned char )c );
}
目前学校布置了一个 C 程序来检查用户输入的字符串是否为回文。该程序需要有 2 个不同的函数(不包括主要函数),一个是检查字符串是否为回文,另一个是使程序将大写字母识别为小写字母。示例:程序将 "wow" 和 "Wow" 都识别为回文,目前它只识别第一个而不识别第二个。我目前不知道如何进行,非常感谢帮助。
这是我的代码目前的样子:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define _CRT_SECURE_NO_WARNINGS
int checkPalindrome(char* text)
{
int i, c = 0, l;
l = strlen(text);
for (i = 0; i < l / 2; i++)
{
if (text[i] == text[l - i - 1])
c++;
}
if (c == i)
return 1;
else
return 0;
}
int setToLowercase()
{
}
int main()
{
char text[1000];
printf("Enter the string: ");
gets(text);
if (checkPalindrome(text))
printf("string is palindrome");
else
printf("string is not palindrome");
return 0;
}
如果允许,tolower() 会将字符转换为小写。循环字符串。
否则请查看 ascii 图表并找出 math/if 案例。
我设法用 tolower() 函数解决了 "problem"。谢谢
void setToLowercase(char *string)
{
int i;
for (i = 0; string[i]; i++) {
string[i] = tolower(string[i]);
}
}
对于根据 C 标准的初学者,不带参数的函数 main 应声明为
int main( void )
函数gets
不是标准的C函数。这是不安全的。而是使用标准 C 函数 fgets
.
函数checkPalindrome
不改变传递的字符串。所以它的参数应该用限定符 const
.
int checkPalindrome(const char* text);
函数 strlen
的 return 类型是 size_t
。因此,接受函数值 return 的变量也应具有 size_t
.
要将字符转换为小写,请使用在 header <ctype.h>
.
tolower
下面有一个演示程序,展示了如何编写原始程序。
#include <stdio.h>
#include <string.h>
#include <ctype.h>
char setToLowercase( char c )
{
return tolower( ( unsigned char )c );
}
int checkPalindrome( const char *s )
{
size_t n = strlen( s );
size_t i = 0;
while ( i < n / 2 && setToLowercase( s[i] ) == setToLowercase( s[n-i-1 ] ) )
{
i++;
}
return i == n / 2;
}
int main(void)
{
while ( 1 )
{
enum { N = 1000 };
char s[N];
printf( "Enter a string (Enter - exit): " );
if ( fgets( s, N, stdin ) == NULL || s[0] == '\n' ) break;
// remove the appended new line character '\n'
s[ strcspn( s, "\n" ) ] = '[=12=]';
printf( "The string is %spalindrome.\n",
checkPalindrome( s ) ? "" : "not " );
putchar ( '\n' );
}
return 0;
}
程序输出可能看起来像
Enter a string (Enter - exit): AbCdEeDcBa
The string is palindrome.
Enter a string (Enter - exit):
如果您使用 MS VS 编译器编译程序,那么您可以包含指令
#define _CRT_SECURE_NO_WARNINGS
函数 setToLowercase
也可以内联,例如
inline static char setToLowercase( char c )
{
return tolower( ( unsigned char )c );
}