| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 733 人关注过本帖
标题:一段自编代码 输入一段字母加数字 分离它们 出了点小问题
只看楼主 加入收藏
cqm9266
Rank: 3Rank: 3
来 自:福建
等 级:论坛游侠
帖 子:174
专家分:186
注 册:2011-10-28
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
一段自编代码 输入一段字母加数字 分离它们 出了点小问题
#include
void main()
{char a[1000],*p;
int i,n;
static f=0,k=0;
printf("输入一段字母(不包含空格)\n");
scanf("%s",&a);
for(i=0;a[i]!='\0';i++); printf("这段字母的长度是(不包括空格)%d\n",i);
p=a;
char b[1000],c[1000];
for(n=0;n<10000;n++)
{if(('a'<=*(p+n)&&*(p+n)<='z')||('A'<=*(p+n)&&*(p+n)<='Z'))
       b[f]=*(p+n),f++;
else if('0'<=*(p+n)&&*(p+n)<='9')
       c[k]=*(p+n),k++;
}
b[i+1]='\0',c[i+1]='\0';
printf("%s,%s\n",b,c);
}
 


结果我给个数字 比如 输入kkk123 它输出是 kkkIVPV,1230422 特别郁闷  我认为是有后面几个元素是随机的 但是看看自己的代码好像没啊 到i+1 个就直接'\0'了不是吗?
搜索更多相关主题的帖子: 字母 include 
2011-12-06 22:31
cqm9266
Rank: 3Rank: 3
来 自:福建
等 级:论坛游侠
帖 子:174
专家分:186
注 册:2011-10-28
收藏
得分:0 
顺便说一下 i是为了确定输入的长度  f,k之所以弄成static型是为了自行加减 不会受到其他变量的影响

没病的人说有病的人有病,有病的人说没病的人有病。到底是谁有病?
2011-12-06 22:33
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:20 
回复 楼主 cqm9266
for(n=0;n<10000;n++)
数组明明是1000,为啥循环用的是10000!

总有那身价贱的人给作业贴回复完整的代码
2011-12-06 22:35
cqm9266
Rank: 3Rank: 3
来 自:福建
等 级:论坛游侠
帖 子:174
专家分:186
注 册:2011-10-28
收藏
得分:0 
....我看看

没病的人说有病的人有病,有病的人说没病的人有病。到底是谁有病?
2011-12-07 00:01
cqm9266
Rank: 3Rank: 3
来 自:福建
等 级:论坛游侠
帖 子:174
专家分:186
注 册:2011-10-28
收藏
得分:0 
2楼的 照你的改过来后 马虎可以了 为什么这么说呢  因为 现在变成 比如输入aaa123 他就输出 aaa烫烫烫,123烫烫烫。。。继续研究

没病的人说有病的人有病,有病的人说没病的人有病。到底是谁有病?
2011-12-07 00:04
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
回复 5楼 cqm9266
你还没明白,你的i是用来存放你输入的长度,而经过数字和字母分离后,b和c明显长度小于i,这样打印b和c自然就有乱码

总有那身价贱的人给作业贴回复完整的代码
2011-12-07 01:29
cqm9266
Rank: 3Rank: 3
来 自:福建
等 级:论坛游侠
帖 子:174
专家分:186
注 册:2011-10-28
收藏
得分:0 
原来还没解决这个问题 。谢谢了

没病的人说有病的人有病,有病的人说没病的人有病。到底是谁有病?
2011-12-07 07:09
cuijingchun
Rank: 3Rank: 3
来 自:黑龙江
等 级:论坛游侠
威 望:1
帖 子:108
专家分:186
注 册:2011-9-28
收藏
得分:0 
如何来判断 字母和数字的长度那
f(('a'<=*(p+n)&&*(p+n)<='z')||('A'<=*(p+n)&&*(p+n)<='Z'))
       b[f]=*(p+n),f++;
else if('0'<=*(p+n)&&*(p+n)<='9')
       c[k]=*(p+n),k++;
f 和k 就是数组的长度,怎么加1=/0
abc123
是abc?  123?那

为自己喜欢游戏做一个自动打怪的程序QQ: 7325231    YY4350晚上编程课欢迎大家来听
2011-12-07 07:43
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
回复 8楼 cuijingchun
b[i+1]='\0',c[i+1]='\0';改成
b[f]='\0',c[k]='\0';

总有那身价贱的人给作业贴回复完整的代码
2011-12-07 08:17
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
回复 8楼 cuijingchun
另外,你的代码效率太低,一次循环就可以了

总有那身价贱的人给作业贴回复完整的代码
2011-12-07 08:41
快速回复:一段自编代码 输入一段字母加数字 分离它们 出了点小问题
数据加载中...
 
   



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

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