| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 869 人关注过本帖
标题:[求助]C语言循环里的小问题
只看楼主 加入收藏
小白II
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-10-19
收藏
 问题点数:0 回复次数:11 
[求助]C语言循环里的小问题

#include <stdio.h>
void main()
{ int a,num,kongge,qita;
char i;

a=0;
num=0;
kongge=0;
qita=0;
printf("请输入字符序列:");
fflush(stdin);
while(1)
{i=getchar();

if(i>='a'&&i<='z'||i>='A'&&i<='Z')
{a++;
continue;}
else if(i>='0'&&i<='9')
{num++;
continue;}
else if(i==32)
{kongge++;
continue;
}
// if(i!=32&&!(i>='a'&&i<='z'||i>='A'&&i<='Z')&&!(i>='0'&&i<='9'))
// {qita++;
// continue;

// }
if(i='\n')
break;

};

printf("\n这中字符中共有字母%d个\n数字%d个\n空格%d个\n其他字符%d个\n",a,num,kongge,qita);
}

这是用来计算用户输入一串字符后,把他输入的各种符号数量打印出来,用来算数字,字母和空格都没问题,可是其它的字符算不出来有多少个,
注销的是我想的写法,可是不行,有人能告诉我,我错在那里了吗,怎么改好呢?想了我一下午了。郁闷!

搜索更多相关主题的帖子: C语言 
2007-10-23 20:19
piggy
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2007-10-9
收藏
得分:0 

if(i!=32&&!(i>='a'&&i<='z'||i>='A'&&i<='Z')&&!(i>='0'&&i<='9'))
这里错了
应该是if(i!=32&&!(i>='a'&&i<='z'||i>='A'&&i<='Z')||!(i>='0'&&i<='9')))


想飞的piggy
2007-10-23 20:57
小白II
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-10-19
收藏
得分:0 
回复:(小白II)[求助]C语言循环里的小问题
不行的这么改,只要把注销的加上,运行起来,就像个死循环一样,一直输入,也跳不出来,不知道为什么。

2007-10-23 21:17
cutboy
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2007-9-16
收藏
得分:0 
回复:(小白II)[求助]C语言循环里的小问题
char i;
else if(i==32)
你要是从键盘输入32就表示两个字符,那i就不能定义为CHAR I;应该是CHAR I[10];或将else if(i==32)改为
else if (i==' ')表示空格;

if(i!=32&&!(i>='a'&&i<='z'||i>='A'&&i<='Z')&&!(i>='0'&&i<='9'))你的意思是只要前面输入的i不满足前面的条件就执行该IF语句吧?那么假设你输入的i是9,则!(i>='0'&&i<='9')就等于0,
则!(i>='a'&&i<='z'||i>='A'&&i<='Z')&&0就等于1;
则i!=32&&!(i>='a'&&i<='z'||i>='A'&&i<='Z')&&!(i>='0'&&i<='9'),因为i=9,所以i!=32,所以IF的条件为真,既执行IF语句.与你的意图相反.应将IF语句改为if(i!=32&&!(i>='a'&&i<='z'||i>='A'&&i<='Z'||i>='0'&&i<='9')

2007-10-23 21:53
风的声音
Rank: 1
等 级:新手上路
帖 子:128
专家分:0
注 册:2007-3-27
收藏
得分:0 

else if(i!= 10&&i!=13)
{qita++;
continue;

}
else
break;

};
把你注释的那个改成这个;
你统计其它字符的时候,把回车和换行都给统计为其它字符,当然没有办法退出了!!
换行和回车的ASCII吗为10共和13,
在前面的基础上加上else if 把回车排除在外的所有其它字符,统计为其它字符
然后在那个的基础上,剩下的只有回车和换行了。所以可以退出了


一念心清净,莲花处处开。 一花一净土,一土一如来。
2007-10-23 21:53
cutboy
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2007-9-16
收藏
得分:0 
if(i!=32&&!(i>='a'&&i<='z'||i>='A'&&i<='Z'||i>='0'&&i<='9')
最后再加半个括号.if(i!=32&&!(i>='a'&&i<='z'||i>='A'&&i<='Z'||i>='0'&&i<='9'))

2007-10-23 21:57
zxc1998
Rank: 1
等 级:新手上路
威 望:1
帖 子:133
专家分:0
注 册:2007-3-21
收藏
得分:0 

同意楼上的算法

2007-10-23 21:57
风的声音
Rank: 1
等 级:新手上路
帖 子:128
专家分:0
注 册:2007-3-27
收藏
得分:0 
以下是引用cutboy在2007-10-23 21:57:33的发言:
if(i!=32&&!(i>='a'&&i<='z'||i>='A'&&i<='Z'||i>='0'&&i<='9')
最后再加半个括号.if(i!=32&&!(i>='a'&&i<='z'||i>='A'&&i<='Z'||i>='0'&&i<='9'))

它输入回车键会退出程序吗?还是直接算作其它字符,然后其它字符器在加一?
这个时候每个字符都是以ASCII吗的形式存储。。


一念心清净,莲花处处开。 一花一净土,一土一如来。
2007-10-23 22:06
小白II
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-10-19
收藏
得分:0 
谢谢声音,我试试看,刚开始学,还不太会,

2007-10-23 22:21
小白II
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-10-19
收藏
得分:0 
哈哈成功了!谢谢大家帮忙!可以睡个好觉了!大家晚安!

2007-10-23 22:28
快速回复:[求助]C语言循环里的小问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016467 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved