| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 770 人关注过本帖
标题:写了个程序,好像不行,特别是回文
取消只看楼主 加入收藏
李猛
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2014-2-18
结帖率:33.33%
收藏
已结贴  问题点数:20 回复次数:1 
写了个程序,好像不行,特别是回文
   设有若干个字符串,这些字符串存储位置的首地址保存在指针数组中(即字符串用指向字符的指针变量表示)。
实现要求:
   ⑴ 实现字符串的输入和输出;
   ⑵ 对所有的字符串按从小到大的顺序排序,即指针数组中的第一个元素指向最小的字符串,第二个元素指向次小的字符串…,依次类推;
   ⑶ 判断这些字符串中是否有“回文”,所谓“回文”指的是顺读和倒读都是一样的字符串;
⑷ 设计一个菜单,具有上述规定的操作要求、退出系统等

#include <stdio.h>
#include <string.h>
int huiwen(const char* pstr[5]);
void menue();
int input(char *q[5]);
void sort(char *str[5]);
#define n 5
int main()
{
    int i,num,b,g;
    char a[n][10];
    char *p[n];
    for (i=0;i<n;i++)
    {
        p[i]=a[i];
    }
    for (g=1;g!=0;)
    {
        menue();
        scanf("%d",&num);
        switch(num)
        {
        case 1:
            b=input(p);
            break;
        case 2:
            sort(p);
            break;
        case 3:
            huiwen(p);
            if (!huiwen(p[i])) puts(p[i]);
        break;
            break;
        case '4':
            getchar();
            g = 0;
            printf("感谢使用!!\n");
            break;
        default:
            getchar();
            printf("输入错误,请重新输入\n");
            printf("\n");
            printf("\n");
        }
    }
   
}
void menue()
{
    printf("*******欢迎使用********");
    printf("===============================================================================\n");
    printf("                  1.输入与输出   (每个字符串不超过100个字符,最多5个字符串) \n");
    printf("                  2.从小到大排序\n");
    printf("                  3.判断是否有回文\n");
    printf("                  4.关闭程序\n");
    printf("===============================================================================\n");
    printf("\n");
    printf("   请输入你需要的操作 : ");
}

int input(char *q[])
{
    int s,z,x,c,m,b;
    static int j=0;
    printf("\n");
    printf("     1.输入\n");
    printf("     2.修改\n");
    printf("     3.输出\n\n");
    printf("     4.返回主菜单\n");
    scanf("%d",&s);
    switch(s)
    {
    case 1:
        printf("输入串数");
        scanf("%d",&z);
        if(z>5)
        {
            printf("输入数大于可输入串数");
        }
        for (c=0;c<=z-1;c++)
        {
            printf("输入的第%d串数是",j+1);
            scanf("%s",q[c]);
            j++;
            if((j+z)>5)
            {
                printf("输入的串数大于可输入的串数");
            }
        }
        break;
    case 2:
        printf("输入你所想修改的串数");
        scanf("%d",&x);
        printf("请输入修改内容: ");
        scanf("%s",q[x-1]);
        printf("\n修改成功!\n\n\n");
        getchar();
        break;
    case 3:
        getchar();
        for(c=0;m<j;c++){
            printf("第%d个字符串是: %s\n",c+1,q[c]);
        }
        break;
    case 4:
        getchar();
        break;
    default:
        printf("输入错误\n\n\n\n");
    }
    return b;
}
void sort(char *str[n])
{
    int i,j;
    char *t;
    for (i=0;i<n-1;i++)
    {
        for (j=1;j<n;j++)
        {
            if(strcmp(str[i],str[j])>0)
            {
                t = str[i];
                str[i] = str[j];
                str[j] = t;
            }
        }
    }
    printf("已排好序");
    for(i=0;i<n;i++)
    {
        printf("%s",str[i]);
    }
}
int huiwen( char* pstr)
{
    int i,j;
    for (j=0;j<5;j++)
    {
        int len = strlen(pstr[i]);
        for (i = 0; i < len / 2; i++)
        {
            if (pstr[i] != pstr[len - 1 - i])   
            {
                return 1;
            }
        }
    }
        return 0;
}
搜索更多相关主题的帖子: include 字符串 元素 
2014-02-18 21:41
李猛
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2014-2-18
收藏
得分:0 
为什么会出现烫……………烫的?怎么解决?
2014-02-19 08:14
快速回复:写了个程序,好像不行,特别是回文
数据加载中...
 
   



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

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