读书人

switch为什么不能用的?该怎么解决

发布时间: 2012-03-11 18:15:39 作者: rapoo

switch为什么不能用的?
#include <stdio.h>
#include <conio.h>
#include <string.h>
#define heng 100
void compare(char *str[][20],int k);
void adjust(char *str[][20],int k);
main()
{
int n,i;
char choose1,choose2,*str[heng][20];
do
{
printf("CONTINUE?YES请按Y No请按N");
scanf(" %c",&choose1);
if(choose1==89||choose1==121)
{
printf("请输入将要输入字符串的个数:");
scanf("%d",&n);
printf("您将输入%d个字符串\n",n);
printf("请输入将要输入的字符串:\n");
for(i=0;i<n;i++)
{
scanf("%s",str);
printf("%s\n",*str);
}
do
{
printf("\nA对以上字符串进行排序请选2");
printf("\nB对以上字符串是否有\"回文\"进行判断请选3");
printf("\nC同时进行AB两项请选4");
printf("\nD退出请选0\n");

choose2=getche();
switch(choose2)
{
case'2':
printf("比较后结果是:\n");
compare(str,n);
break;
case'3':
printf("判断后结果是:\n");
adjust(str,n);
break;

case'0':
printf("您已退出菜单。\n");
break;

default:
printf("您未作出正确选择!请重新选择。\n");
}
}while(choose2==48);
printf("\n您已完成所选项目!");
}

else if((choose1==78)||(choose1==110))
{
printf("您已退出菜单!\n");

}
else
printf("\n您未作出正确选择!请重新选择Y或N.\n");
}while((choose2!=89)&&(choose2!=121)&&(choose2!=78)&&(choose2!=110));

}

void compare(char *str[][20],int k)
{
int i,j;
char *temp=NULL;
for(i=0;i<(k-1);i++)
{
for(j=i+1;j<k;j++)
{
if(strcmp(str[i][20],str[j][20])>0)
{
*temp=*str[i][20];
*str[i][20]=*str[j][20];
*str[j][20]=*temp;
}
}
printf("%s",str[i][20]);
printf("\n");
}
printf("%s",str[i][20]);
printf("\n");
}

void adjust(char *str[][20],int k)
{
int i,j,len;
for(i=0;i<k;i++)
{
len=strlen(str[i][20]);
for(j=0;j<=(len/2);j++)
{
if(*str[i][j]!=*str[i][len-j])
break;
else
printf("%s是\"回文\"字符串\n",str[i][len+1]);
}
}
}
在switch语句就不能进行了,求解!

[解决办法]
choose2=getche();
你有没有进行输入呀?
[解决办法]

C/C++ code
choose2=getchar();//..........................
[解决办法]
C/C++ code
                getchar();//首先在这儿清空一下缓冲区                choose2=getchar();
[解决办法]
C/C++ code
            }while(choose2!=48);//再次你这儿要改成不等于0则继续循环而不是等于            printf("\n您已完成所选项目!");
[解决办法]
while(choose2!=48);//再次你这儿要改成不等于0则继续循环而不是等于

+1
------解决方案--------------------


C/C++ code
default:  printf("您未作出正确选择!请重新选择。\n");}  }while(choose2!=48);//楼主,这儿改成不等号printf("\n您已完成所选项目!");
[解决办法]
探讨

问题描述:
设有若干个字符串,这些字符串存储位置的首地址保存在指针数组中(即字符串用指向字符的指针变量表示)。
实现要求:
⑴ 实现字符串的输入和输出;
⑵ 对所有的字符串按从小到大的顺序排序,即指针数组中的第一个元素指向最小的字符串,第二个元素指向次小的字符串…,依次类推;
⑶ 判断这些字符串中是否有“回文”,所谓“回文”指的是顺读和倒读都是一样的字符串;
⑷ 设计一个菜单,具有上……

[解决办法]
上面是比较算法,没有比较后的输出,下面是比较后的输出
C/C++ code
    for (i=0;i<k;i++)    {        printf("%s\n",str[i]);    } 

读书人网 >C语言

热点推荐