c语言编程判断输入的一个字符串是否是“回文”。所谓“回文”字符串就是左读和右读都一样的字符串。例如: “abcba“就是一个回文字符串。

编程判断输入的一个字符串是否是“回文”。所谓“回文”字符串就是左读和右读都一样的字符串。例如: "abcba"就是一个回文字符串。

要求:先输出(“Input a string:\n”),输入字符串,然后判断是否回文,最后输出
(“This string is a plalindrome.\n”)
或者(“This string is not a plalindrome.\n”)
下面程序中存在比较隐蔽的错误,请通过分析和调试程序,发现并改正程序中的错误。
注意:将修改后的完整的源程序写在答题区内。
对于没有错误的语句,请不要修改,修改原本正确的语句也要扣分。
当且仅当错误全部改正,且程序运行结果调试正确,才给加5分,
如果只改正了部分错误,则不加分。
改错时不能改变程序原有的意图,不能改变函数原型。

原来的代码

#include <stdio.h>
int fun(char a[]);\\类型改不改都可以不影响
main()
{
    char a[80];
    printf("Input a string:\n");
    gets(a);
    if (fun(a))
    {
        printf("This string is a plalindrome.\n");
    }
    else
    {
        printf("This string is not a plalindrome.\n");
    }
}
int fun(char a[]);\\*此处有错*
{
    int i, j;
    for (i = 0; j = strlen(a); i < j; i++; j--)\\**此处有错**
    {
        if (a[i] != a[j])
        {
            return 0;
        }
    }
}

改正后

#include <stdio.h>
char fun(char a[]);
main()
{
    char a[80];
    printf("Input a string:\n");
    gets(a);
    if (fun(a))
    {
        printf("This string is a plalindrome.\n");
    }
    else
    {
        printf("This string is not a plalindrome.\n");
    }
}
char  fun(char a[])
{
    int i, j;
    for (i = 0, j = strlen(a) - 1; i < j; i++, j--)//0指的是数组第一个所以减一才是最后一个
    {
        if (a[i] != a[j])
        {
            return 0;
        }
    }
}



  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 可以使用C语言编写一个函数,判断任意输入字符串是否回文。可以通过比较字符串的前半部分和后半部分是否相同来进行判断。具体实现如下: ``` #include <stdio.h> #include <string.h> int isPalindrome(char str[]) { int len = strlen(str); for (int i = 0; i < len / 2; i++) { if (str[i] != str[len - i - 1]) { return 0; } } return 1; } int main() { char str[100]; printf("请输入一个字符串:"); scanf("%s", str); if (isPalindrome(str)) { printf("%s是回文字符串\n", str); } else { printf("%s不是回文字符串\n", str); } return 0; } ``` 首先定义了一个函数`isPalindrome`,用来判断输入字符串是否为回文字符串。在`main`函数中,使用`scanf`函数获取用户输入字符串,然后调用`isPalindrome`函数进行判断,并输出结果。 该程序运行后,会提示用户输入一个字符串,然后输出该字符串是否为回文字符串的结果。 ### 回答2: 在C语言中,判断任意输入字符串是否为回文可以通过以下步骤实现: 1. 首先,定义一个字符数组来存储输入字符串,并且使用`scanf()`函数接收输入。例如,`char str[100]; scanf("%s", str);` 2. 然后,获取输入字符串的长度,可以使用`strlen()`函数。例如,`int len = strlen(str);` 3. 接下来,使用两个指针,一个字符串的开头开始,一个从末尾开始,判断对应位置的字符是否相同。如果相同,两个指针同时向中间移动;如果不同,则判断字符串不是回文。 ```c int isPalindrome(char str[]) { int len = strlen(str); int start = 0; int end = len - 1; while (start < end) { if (str[start] != str[end]) { return 0; // 不是回文 } start++; end--; } return 1; // 是回文 } ``` 4. 最后,调用判断回文函数`isPalindrome()`,将字符串作为参数传入,并根据返回值输出结果。 ```c char str[100]; scanf("%s", str); if (isPalindrome(str)) { printf("是回文\n"); } else { printf("不是回文\n"); } ``` 这样就可以判断任意输入字符串是否为回文了。 ### 回答3: 要编写一个C语言程序来判断任意输入字符串是否为回文,可以按照以下步骤进行: 1. 首先,需要包含C语言的标准输入输出库 `stdio.h` 和字符串处理库 `string.h`。 2. 声明一个字符数组来存储输入字符串,比如 `char str[100]`。 3. 使用 `scanf` 函数从用户输入中读取字符串,存储到 `str` 数组中。 4. 声明两个整数变量 `i` 和 `j`,分别初始化为0和字符串长度减1。 5. 使用一个循环,判断 `i` 小于 `j` 的条件下执行。在循环中,判断 `str[i]` 是否等于 `str[j]`: - 如果相等,将 `i` 自增1,将 `j` 自减1。 - 如果不相等,输出 "不是回文字符串",并使用 `return` 语句退出程序。 6. 循环结束后,如果所有字符对应相等,则输出 "是回文字符串"。 完整的示例代码如下: ```c #include <stdio.h> #include <string.h> int main() { char str[100]; printf("请输入一个字符串:"); scanf("%s", str); int i = 0, j = strlen(str) - 1; while (i < j) { if (str[i] != str[j]) { printf("不是回文字符串\n"); return 0; } i++; j--; } printf("是回文字符串\n"); return 0; } ``` 这个程序通过比较字符数组的首尾字符,逐个向中间靠拢,在遇到不相等的字符时判断不是回文字符串。如果字符串结束时所有字符都匹配,则判断回文字符串

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值