如此让我郁闷!!!!

superwt2001 2003-03-15 06:30:56
#include <string.h>
#include <stdio.h>
int judge(char a,char b)
{
int i;
i=a-b;
if(i==0||i==-32||i==32)
return 1;
else return 0;//相同返回1
}
int panduan(char a[],int n)
{
int i=0,s=0;
for(;i<n;i++)
if(judge(a[i],a[n-i-1])==0) {s=1;break;}

return s;// 对称返回0
}
int alphe(char a[])
{
int i,length,s=0;
length=strlen(a);
for(i=0;i<length;i++)
if(a[i]>='a'&&a[i]<='z'||a[i]>='A'&&a[i]<='Z')
{s=1;break;}
return s;
}
int palin(char a[])
{
char b[100];
int i=0,length,k=0;
gets(a);
length=strlen(a);
for(i=0;i<length;i++)
if(a[i]>='a'&&a[i]<='z'||a[i]>='A'&&a[i]<='Z')
b[k++]=a[i];
if(panduan(b,k)==0&&alphe(b)==1)
printf("%s is a palindrome.\n",a);
else printf("%s is not a palindrome.\n",a);
return 0;
}
int main()
{
int n;
char a[100];
scanf("%d",&n);
while(n>0)
{
palin(a);
n--;
}
return 0;
}
这个程序先输入一个整数n,然后是n次循环;每次判断一个字符串是否是回文的。
但是,它竟然把我输入的那个数字n也当成字符串。为什么,怎么解决!!!!
...全文
17 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
superwt2001 2003-03-16
  • 打赏
  • 举报
回复
你这家伙,幸灾乐祸!!!
其实你也不会,呵呵,要不你做做。
cin>>n;
for(i=0;i<n;i++)
{cin.getline(a,100);
.....}
一开始输入的n也会算到后面的cin.getline()里,用什么fflush(stdin)清空输入缓存.都不管用!!!!!!
chinajiji 2003-03-16
  • 打赏
  • 举报
回复
太吝啬了,谁帮你解决? 哈哈!
superwt2001 2003-03-16
  • 打赏
  • 举报
回复
怎么没有人帮我解决?
superwt2001 2003-03-16
  • 打赏
  • 举报
回复
是吗?你昨天给我说的什么fflush(stdin)清空输入缓存,根本就不管用。你还有什么着?
你说改scanf,可是这样字符串到空格就结束了。
chinajiji 2003-03-16
  • 打赏
  • 举报
回复
这么简单你问题,我可能不会吗?
你不是说你要自己看书吗?
太吝啬了,谁帮你解决? 哈哈!
superwt2001 2003-03-15
  • 打赏
  • 举报
回复
那如果用C++,前面用cin.getline(a,100),后面用cin>>a。该怎么办?
superwt2001 2003-03-15
  • 打赏
  • 举报
回复
chinajiji(菜鸟叽叽):你对分数也太饥渴了,我从不喜欢求别人。算了,自己看书解决了
chinajiji 2003-03-15
  • 打赏
  • 举报
回复
fflush(stdin)清空输入缓存.
你这个程序中我想它可要可不要,如果是gets()就必须要.当然添上fflush()更好.
至于原因,很简单,但你才给20分,太吝啬了吧?给100分,我给你详细说来.
superwt2001 2003-03-15
  • 打赏
  • 举报
回复
To chinajiji(菜鸟叽叽):改成scanf("%s",a);就可以了,没有用fflush(stdin);
请解释一下为什么,fflush(stdin)是什么东东
chinajiji 2003-03-15
  • 打赏
  • 举报
回复
gets(a);
改成:scanf("%s",a);
fflush(stdin);还是要要的.
superwt2001 2003-03-15
  • 打赏
  • 举报
回复
chinajiji(菜鸟叽叽) 不管用呀
如果把gets(a)换成cin.getline(a,100)就可以;或者用gets(a)和cin>>n(把scanf("%d",&n);换了);但这样都是c和c++的混用
zhouzhaohan 2003-03-15
  • 打赏
  • 举报
回复
在scanf后面加一句fflush(stdin);实施。
chinajiji 2003-03-15
  • 打赏
  • 举报
回复
gets(a);
前面加一句:
fflush(stdin);

69,370

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧