| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 630 人关注过本帖
标题:大学题库:求回文。求改错
只看楼主 加入收藏
t1melost
Rank: 1
等 级:新手上路
帖 子:22
专家分:3
注 册:2010-12-6
结帖率:70%
收藏
已结贴  问题点数:20 回复次数:6 
大学题库:求回文。求改错
题目:输入任意的数判断其是不是“回文数”,即12321,个位与万位相,十位与千位相同…….

思路:输入一串数字到A数组,如果A数组倒叙和他本身一致,则这串数字是回文!

程序:出错在输入12321,却显示不是回文,感觉是在A倒叙处出了错,求讲解。

#include <stdio.h>
#include <string.h>

void main()
{

    int i,j,a[10],b[10];

    printf("\nplease input a number:\n");
    gets(a);

    n=strlen(a);

    for(i=0;a[i]!='\0';i++,)\\我估计错误在这句上下

        b[n-1-i]=a[i];


    if(strcmp(a,b)==0)
        printf("shi huiwen.");
    else
        printf("bushi huiwen.");

}



搜索更多相关主题的帖子: 大学 
2011-03-02 22:42
huangapple
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:545
专家分:1790
注 册:2010-12-30
收藏
得分:0 
  for(i=0;a[i]!='\0';i++,)\\我估计错误在这句上下

        b[n-1-i]=a[i];

这句时你没把‘\0'这句复制进去吧?

其实你这样不好
不如直接这样
int huiwen(char *str)//判断是否回文
{
    int i;
    int len = strlen(str);

//    len = strlen(str);
    for(i = 0; i < len/2; ++i)
        if(str[i] != str[len -i -1])
            return 0;//不是回文返回0

    return 1; //回文返回1
}

勤能补拙,熟能生巧!
2011-03-02 23:02
baobaoisme
Rank: 7Rank: 7Rank: 7
来 自:AVATAR
等 级:黑侠
帖 子:260
专家分:506
注 册:2010-7-9
收藏
得分:4 
程序代码:
int i,j,a[10],b[10];

    printf("\nplease input a number:\n");
    gets(a);//a[10]不是字符数组,怎么能获取字符串呢?
而且如果输入是数字而不是字符的话,应该是先将每一位取出放入字符数组中,再进行比较吧
2011-03-02 23:07
pcbaichi
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:486
专家分:1185
注 册:2010-11-13
收藏
得分:0 
#include<stdio.h>#include<string.h>int main(){char str[11],*p;int flag,i,length;p=str;length=strlen(str);for(i=0;i<length;i++){if(str[i]!=str[length-1-i]){flag=0;puts(“no”);break;}}if(flag)puts(“yes”);return 0;}给lz一个通吃的办法,因为是手机写的,所以没有编译,不知是否可以,还请lz测试

免费赠送河蟹一只
2011-03-03 00:39
犬虫门心
Rank: 8Rank: 8
来 自:西安
等 级:蝙蝠侠
帖 子:209
专家分:753
注 册:2011-1-25
收藏
得分:15 
以下是引用t1melost在2011-3-2 22:42:22的发言:

题目:输入任意的数判断其是不是“回文数”,即12321,个位与万位相,十位与千位相同…….

思路:输入一串数字到A数组,如果A数组倒叙和他本身一致,则这串数字是回文!

程序:出错在输入12321,却显示不是回文,感觉是在A倒叙处出了错,求讲解。

#include
#include

void main()
{

    int i,j,a[10],b[10];

    printf("\nplease input a number:\n");
    gets(a);

    n=strlen(a);

    for(i=0;a!='\0';i++,)\\我估计错误在这句上下

        b[n-1-i]=a;


    if(strcmp(a,b)==0)
        printf("shi huiwen.");
    else
        printf("bushi huiwen.");

}



楼主,gets()函数能够接受的应该是字符串,应该存放到char类型的数组中,而您却定义的是int类型的数组。
另外,数组名称不代表数组中的元素,应该写成a[i] != '\0'。
第三,你的程序不符合题目的要求,题目要求是“输入任意的数”,而不是“输入任意字符串”。
下面,我给一个程序,请楼主仔细跟踪:
#include<stdio.h>

int main(void)
{
    int n, m, t = 0;

    scanf("%d", &n);
    for(m = n; m > 0; m /= 10) //这个循环的作用是求n的逆置数,如n为1234,则t为4321
        t = t*10 + m%10;  //楼主,请仔细跟踪这个循环,你就可以知道这段程序的含义了。

    if(t == n)
        printf("%d是回文数\n", n);
    else
        printf("%d不是回文数\n", n);

    return 0;
}

当一名对得起学生学费的老师,一直是我的目标!我会更努力的!
2011-03-03 10:20
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:1 
程序代码:
root@~ #cat hw.c
#include <stdio.h>
#include <stdbool.h>

int main (void) {

        char str[81];
        int ishui (char str[]);

//输入字符串
        printf ("Enter a string :");
        scanf ("%s",str);
//调用ishui函数
        if(ishui(str)){
                printf ("Yes\n");
        }else{
                printf ("No\n");
        }

        return 0;

}

int ishui (char str[]) {  //函数ishui接受一个字符数组,返回整数值
        int i=0,j,len=0;
        bool is;

//先取得数组长度

        while(str[len]!='\0') {
                len++;
        }

//取得数组最后元素下标位置
        j=len-1;

//用折半法比较。

        while(i<=len/2){

                if(str[i]!=str[j]){
                        return is=false;
                }
                i++;
                j--;
        }

        return is=true;

}
root@~ #

测试:
root@~ #./hw
Enter a string :12321
Yes
root@~ #121
bash: 121: command not found
root@~ #./hw
Enter a string :abcdefedcba
Yes
root@~ #./hw
Enter a string :1234567890987654321
Yes
root@~ #./hw
Enter a string :1234567890987654320
No
root@~ #

[ 本帖最后由 ansic 于 2011-3-3 11:02 编辑 ]

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-03-03 10:59
t1melost
Rank: 1
等 级:新手上路
帖 子:22
专家分:3
注 册:2010-12-6
收藏
得分:0 
回复 5楼 犬虫门心
谢谢,很不错~~
2011-03-03 11:50
快速回复:大学题库:求回文。求改错
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.053583 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved