P67范例一判断回文数的问题
发表在C语言图书答疑 2015-02-09
是否精华
版块置顶:
#include<stdio.h>
int palind(char str[],int k, int i) /*自定义函数检测是否为回文字符串*/
{
    if(str[k]==str[i-k]&&k==0) /*递归结束条件*/
        return 1;
    else if(str[k]==str[i-k]) /*判断相对应的两个字符是否相等*/
        palind(str,k-1,i); /*递归调用*/
    else
        return 0;
}
int main()
{
    int i=0,n=0; /*i记录字符个数,n是函数返回值*/
    char ch,str[20];
    while ((ch=getchar())!='\n')
    {
        str[i]=ch;
        i++;
    }
    if(i%2==0) /*当字符串中字符个数为偶数时*/
        n=palind(str,(i/2),i-1);
    else
        n=palind(str,(i/2-1),i-1); /*当字符串中字符个数为奇数时*/
    if(n==0)
        printf("不是回文数\n"); /*当n为0说明不是回文数,否则是回文数*/
    else
        printf("是回文数\n");
    return 0;
}

它的输入是不是个getchar,如果是,为什么它可以输那么多位,不是getchar只能接收一个字符吗
分享到:
精彩评论 1
爱学习
学分:0 LV1
TA的每日心情
开心
2020-03-23 20:54:03
2015-02-09
沙发
是getchar,是只能接收一个字符
因为这个是放到while 循环中,每当用户一个字符,他都将这个字符放到数组里了。它可以输入那么多位是因为while循环的原因。只要输入的不是回车,就一直循环。每次循环都是将用户输入的一个字符放入到数组中。
首页上一页 1 下一页尾页 1 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照