写了个程序,好像不行,特别是回文
设有若干个字符串,这些字符串存储位置的首地址保存在指针数组中(即字符串用指向字符的指针变量表示)。实现要求:
⑴ 实现字符串的输入和输出;
⑵ 对所有的字符串按从小到大的顺序排序,即指针数组中的第一个元素指向最小的字符串,第二个元素指向次小的字符串…,依次类推;
⑶ 判断这些字符串中是否有“回文”,所谓“回文”指的是顺读和倒读都是一样的字符串;
⑷ 设计一个菜单,具有上述规定的操作要求、退出系统等
#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;
}