求助个问题,谢谢各位
以下是个论证数字回文的程序,为什么当我出入字母时,他就会一直出现"please input a number:"#include<stdio.h>
void main()
{long int a,a1,a2,a3,a4,rent;
do
{printf("\nplease input a number:");
scanf("%ld",&a);
}while(a<10000||a>99999);
a1=a/10000;
rent=a%10000;
a2=rent/1000;
rent=a%100;
a3=rent/10;
a4=a%10;
if((a1==a4)&&(a2==a3))
printf("\nthe number is huiwen");
else
printf("\nthe number is not huiwen");
}
希望高手的帮助,谢谢
[[it] 本帖最后由 zhouweiyong55 于 2008-4-8 00:17 编辑 [/it]]
----------------解决方案--------------------------------------------------------
键盘缓存问题(应该是这么叫的),以前我也有这样的问题与困惑,后来在大家的帮助下,解决了此问题:
char c;
whilde(c=getchar!='\n'&&c!=EOF);
你在scanf输入语句的后面加上while这行――不过前面得先定义变量c。
你试试,应该可以的。
----------------解决方案--------------------------------------------------------
这个论坛回复的速度也太快了,真是谢谢广陵兄,我再试试
----------------解决方案--------------------------------------------------------
但是如果象上面那样改就不能判断a的范围了啊,不知道有没有更好的解决方法吗,还有问下EOF是什么意思?
谢谢各位!
----------------解决方案--------------------------------------------------------
这样就可以了!
#include<stdio.h>
void main()
{long int a,a1,a2,a3,a4,rent;
do
{printf("\nplease input a number:");
scanf("%ld",&a);
while(getchar()!='\n')
continue;
}while(a<10000||a>99999);
a1=a/10000;
rent=a%10000;
a2=rent/1000;
rent=a%100;
a3=rent/10;
a4=a%10;
if((a1==a4)&&(a2==a3))
printf("\nthe number is huiwen");
else
printf("\nthe number is not huiwen");
}
----------------解决方案--------------------------------------------------------
谢谢上面的兄弟
----------------解决方案--------------------------------------------------------
回复 5# 的帖子
学习了, ----------------解决方案--------------------------------------------------------
请LZ学习一下数组
----------------解决方案--------------------------------------------------------
为什么要学数组啊```
----------------解决方案--------------------------------------------------------
长见识了,原来这叫回文,呵呵~~~
把相同的词汇或句子,在下文中调换位置或颠倒过来,产生首尾回环的情趣,叫做回文,也叫回环。
回环运用得当,可以表现两种事物或现象相互依靠或排斥的关系。
例子(1):信言不美,美言不信。 《道德经八十一》
例子(2):日往则月来,月往则日来。 《易经.系辞》
例子(3):非人磨墨墨磨人。
例子(4):自我突破,突破自我。
例子(5):你需要警队,警队需要你。
帮你改了一下,字符也可以.
#include<stdio.h>
#define MAX 64
int main(void)
{
int i = 0,len;
char str[MAX];
do
{
printf("\nplease input a string:");
gets(str);
// fflush(stdin);或while(getchar()!='\n')continue;都不用了
len = strlen(str);
}while(len < 3 || len > MAX);
if (str[i] == str[len-i-1])
{
for (i = 0; i <= len/2; i++)
if (str[i] != str[len-i-1])
{
printf("\nthe number is not huiwen");
break;
}
if (i > len/2)
printf("\nthe number is huiwen");
}
else
printf("\nthe number is not huiwen");
getch();
return 0;
}
[[it] 本帖最后由 meteor57 于 2008-4-8 12:54 编辑 [/it]]
----------------解决方案--------------------------------------------------------