编写C语言程序:strs.txt的第一行为该文件包含字符串的个数n,从第二行开始,给出n个字符串,使用循环和调用函数,分别判断每个字符串是否为回文串,并且使用sprintf来将要输出的字符串组合在一起成为一个新的字符串后,输出到另一个文件is_palindrome.txt,判断结果为yes或no。 提示: 1.使用fgets和fputs完成输入和输出 2.使用<stdlib.h>中的函数atoi将字符串转化成整型 3.fgets会读入每行最后的换行符,所以在使用fgets读入一个字符串后,将真实字符串的最后一位(此时应该是’\n’)置为’\0’,即str[strlen(str) - 1] = '\0’; is_palindrome.txt文件示例: abcde no abcba yes abcdefg no
时间: 2023-06-16 19:08:12 浏览: 96
字符串数组和命令行参数-达内c 课程ppt完整版
下面是程序的实现:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int is_palindrome(char *str);
int main() {
FILE *fp_in, *fp_out;
char buffer[100];
int n, i;
fp_in = fopen("strs.txt", "r");
fp_out = fopen("is_palindrome.txt", "w");
// 读取字符串个数n
fgets(buffer, 100, fp_in);
n = atoi(buffer);
// 逐个读取字符串,判断是否为回文串并输出结果
for (i = 0; i < n; i++) {
fgets(buffer, 100, fp_in);
buffer[strlen(buffer) - 1] = '\0'; // 去掉末尾的换行符
if (is_palindrome(buffer)) {
sprintf(buffer, "%s yes\n", buffer);
} else {
sprintf(buffer, "%s no\n", buffer);
}
fputs(buffer, fp_out);
}
fclose(fp_in);
fclose(fp_out);
return 0;
}
// 判断一个字符串是否为回文串
int is_palindrome(char *str) {
int len = strlen(str);
int i;
for (i = 0; i < len / 2; i++) {
if (str[i] != str[len - i - 1]) {
return 0;
}
}
return 1;
}
```
程序的思路是先读取字符串个数n,然后逐个读取字符串并判断是否为回文串。如果是回文串,将结果组合成一个新的字符串并输出到文件;如果不是回文串,同样输出结果到文件。函数is_palindrome用于判断一个字符串是否为回文串,具体实现是从字符串两端分别向中间遍历,逐个比较字符是否相等。
阅读全文