| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 546 人关注过本帖
标题:关于数组的一个问题
只看楼主 加入收藏
zc13792229
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-4-5
收藏
 问题点数:0 回复次数:6 
关于数组的一个问题

题目:从键盘上输入50个字符,统计其中的英文字符,空格字符,数字字符及其他字符的个数,并将统计结果输出.
我的程序如下:
#include<stdio.h>
main()
{
char a[50],b;
int i,w=0,x=0,y=0,z=0;
gets(a);
for(i=0;i<50;i++)
{
if(65<=a[i]<=90&&97<=a[i]<=122)
w++;
else if(a[i]==32)
x++;
else if(48<=a[i]<=57)
y++;
else
z++;
}
printf("En=%d,space=%d,number=%d,others=%d",w,x,y,z);
}


运行的时候不管输入什么都只执行第一句if结构:if(65<=a[i]<=90&&97<=a[i]<=122)
w++;
请问这是什么问题?谢谢!

搜索更多相关主题的帖子: others number include 统计 
2007-04-23 15:13
bnu_sdy
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2006-11-6
收藏
得分:0 

是不是应该把&&该成||呢?你的“if(65<=a[i]<=90&&97<=a[i]<=122)”条件恒为假。


2007-04-23 15:31
限量版猪头
Rank: 2
等 级:论坛游民
威 望:1
帖 子:165
专家分:30
注 册:2006-2-5
收藏
得分:0 
if(65<=a[i]<=90&&97<=a[i]<=122)

这样写是错误的!从你的意图上看是小写或者大写字母,那么不是&&而是||,再次,说明a[i]在65和90之间,65<=a[i]<=90是错误的,应该是(65<=a[i]&&a[i]<=90)

2007-04-23 15:34
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
收藏
得分:0 
if(65<=a[i]<=90&&97<=a[i]<=122)
应改为if(65<=a[i] && a[i]<=90 && 97<=a[i] && a[i]<=122)
if(65<=a[i]<=90&&97<=a[i]<=122) 编译是能通过,但结果却是想象之外的.
例如:
1<2<3 结果:1
1<-1<3 结果:1

wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-04-23 16:33
zc13792229
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-4-5
收藏
得分:0 
谢谢!
2007-04-23 16:47
oclassic
Rank: 1
等 级:新手上路
帖 子:140
专家分:0
注 册:2007-4-18
收藏
得分:0 
#include<stdio.h>
main()
{
char a[50],b;
int i,w=0,x=0,y=0,z=0;
gets(a);
for(i=0;i<50;i++)
{
if((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z'))
w++;
else if(a[i]==' ')
x++;
else if(a[i]>='0'&&a[i]<='9')
y++;
else
z++;
}
printf("En=%d\n,space=%d\n,number=%d\n,others=%d\n",w,x,y,z);
}


改成这样的话,运行老不对,大家分析下,谢谢 ~~

编程群号码30772309群刚刚建立一个论坛http://tszbbs./?u=2 诚招斑猪哦
2007-04-23 19:42
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
收藏
得分:0 
#include<stdio.h>
main()
{
char a[50];
int content=0;
int i,w=0,x=0,y=0,z=0;
gets(a);
for(i=0;a[i]!='\0';i++) ;
content=i;
for(i=0;i<content;i++)
{
if((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z'))
w++;
else if(a[i]==' ')
x++;
else if(a[i]>='0'&&a[i]<='9')
y++;
else
z++;
}
printf("En=%d\n,space=%d\n,number=%d\n,others=%d\n",w,x,y,z);
}
我帮你改了一下,因你这个程序要输入的的字符个数不定,
而你又for(i=0;i<50;i++).

wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-04-23 21:47
快速回复:关于数组的一个问题
数据加载中...
 
   



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

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