C语言, 菜鸟问题, 求助!!~~

xczno1 2006-11-28 10:30:06
这段程序的运行结果是这样的;

input?: w
Small letter

为什么到这里就结束了, 我还想要继续输入别的数字怎么办 ,如何让它回到开头, 再继续判断啊, 哪位大虾能帮下忙, 谢谢了!!

#include <stdio.h>
main()
{
char c;

while(c != 32){
goto loop;
}


loop:
printf("input? :");
scanf("%c",&c);

if(c>=97 && c<=122)
printf("Small letter\n");
else if(c>=65 && c<=90)
printf("Capital letter\n");
else if(c>=48 && c<=57)
printf("Number\n");
else printf("Others\n");

}
...全文
273 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
PEPSI_COLA 2006-11-29
  • 打赏
  • 举报
回复
同意ourui(coconut)的程序,这个是对的
wellsnow2002 2006-11-29
  • 打赏
  • 举报
回复
楼上的似乎违背了楼主的本意,同意hourui(coconut)的程序。
todototry 2006-11-29
  • 打赏
  • 举报
回复
个人意见,高手多多指教
todototry 2006-11-29
  • 打赏
  • 举报
回复
#include <stdio.h>

#define TRUE 1

int main()
{
char ch;
while (TRUE)
{
printf("input(Press Esc to quit):");
scanf("%c",&ch);
if (ch == 10)
{
break;
}
if(ch>=97 && ch<=122)
printf("Small letter\n");
else if(ch>=65 && ch<=90)
printf("capital letter\n");
else if(ch>=48 && ch<=57)
printf("Number\n");
else if (ch != 10)
{
printf("Others\n");
}
}
return 0;
}
xczno1 2006-11-29
  • 打赏
  • 举报
回复
顺便还想问一下,在WindowsXP的环境下,什么软件也不装的情况下,可以直接在 命令提示符的窗口中对C语言的原代码进行编译和运行吗?谢谢了!
xczno1 2006-11-29
  • 打赏
  • 举报
回复
可我想要的运行结果是这样的:
input?: w
Small letter
input?: T
Capital letter
input?: 3
Number
input?: *
Others
input?: (空格)

程序结束.
而不是只输入一次, 判断完了就结束, 该怎么办啊

xczno1 2006-11-29
  • 打赏
  • 举报
回复
呵呵, 终于接近完美了, 这里先谢谢大家辛苦了, 可是还有一个小小问题. 请看运行结果:
===========================================================================
input?: 3
Number
input?: T
Capital letter
input?: t
Small letter
input?: (空格)
Others
===========================================================================

最后还是会多出来个 Others, 怎么才能把这个"尾巴"去掉啊?
xczno1 2006-11-29
  • 打赏
  • 举报
回复
呵呵, 多谢大家指点, 终于明白自己的程序, 错在哪里了, 原来是 回车键 的问题,


非常感谢!!!!!!!!~~~~~
beijixuem 2006-11-29
  • 打赏
  • 举报
回复
有对的吗?
凌殿Y_ST 2006-11-29
  • 打赏
  • 举报
回复
做个小测试:
============================================================
#include <stdio.h>
main()
{
char c;

while(c!= 32){
scanf("%c",&c);
printf("%d\t",c);

}
}

=====================================================================
w
119 10 v
118 10 S
83 10 A
65 10 d
100 10
32 Press any key to continue...

最后输出32时已经跳出去了,所以不会再运行那个10了...
凌殿Y_ST 2006-11-29
  • 打赏
  • 举报
回复
scanf(),getchar()等字符输入函数都是以enter键结束输入,但会带来新的问题,就是会多出一个字符'\10',这是回车的标志,所以当输入一个字符的时候,其实会处理两次!
====================================================================================

#include <stdio.h>
main()
{
char c;

while(c!= 32){

if(10!=c) printf("input? :"); //按Enter键时,系统自动给字符加上一个回车ASC,也就是10 

scanf("%c",&c);

if(c>=97 && c<=122)
printf("Small letter\n");
else if(c>=65 && c<=90)
printf("Capital letter\n");
else if(c>=48 && c<=57)
printf("Number\n");
else if(c!=10)         //在这把那个自动加上去的10过滤掉,这样就不会出去那种情况了
printf("Others\n");


}
}
ly33854983 2006-11-29
  • 打赏
  • 举报
回复
第一 你原来的程序有问题 char c; c字符没有初始化  直接判断 从是否等于32 使得跳出while 循环  执行 loop标号中的内容, 前两句执行完毕  进入判断结构 没有符合  所以退出
第二  others问题  大哥 char 是个字符  others 是字符串 这属于未定义的做法 当然得不到想要的结果
第三  winxp 不自带c语言的编译器 当然不行  linux 可以:)
xczno1 2006-11-29
  • 打赏
  • 举报
回复
我按hourui(coconut)的程序运行后, 结果是这样的; 很奇怪, 为什么会多出来下面那行
input?: Others 大家运行的结果有那行input?: Others 吗
*****************************************************
input?: 3
Number
input?: Others
input?: T
Capital letter
input?: Others
input?: (空格)
Others
******************************************************
Writer 2006-11-28
  • 打赏
  • 举报
回复
同意楼上的,
while(c != 32){
goto loop;
}

c!=32的时候, 就已经跳出循环,运行了一次loop后就返回了
hourui 2006-11-28
  • 打赏
  • 举报
回复
不要用goto,其实这样写就好了.
#include <stdio.h>
main()
{
char c;

while(c != 32){
printf("input? :");
scanf("%c",&c);

if(c>=97 && c<=122)
printf("Small letter\n");
else if(c>=65 && c<=90)
printf("Capital letter\n");
else if(c>=48 && c<=57)
printf("Number\n");
else printf("Others\n");

}
}
dashi 2006-11-28
  • 打赏
  • 举报
回复
沙发...

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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