| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3671 人关注过本帖, 1 人收藏
标题:崩溃了。出不来结果。求高手帮我看看我编的源码。。从键盘随意输入字符存入 ...
取消只看楼主 加入收藏
rapher
Rank: 2
等 级:论坛游民
帖 子:36
专家分:10
注 册:2011-5-27
结帖率:71.43%
收藏(1)
已结贴  问题点数:20 回复次数:5 
崩溃了。出不来结果。求高手帮我看看我编的源码。。从键盘随意输入字符存入一维数组,使字母符号数字分别在一起,输出数组。
具体题目的要求是:从键盘随意输入一组字符串存入一维数组中,不得再定义其他数组。调整数组中各元素的位置。是字母,符号,数字分别放在一起,输出调整后的数组。。。
我的想法是借鉴冒泡排序。判断字母或者数字。然后将字母升上去。将数字降下来。。。但是编了出来。程序能通过。就是出不了结果。。高手帮帮菜鸟呀。。
编了一晚上。。崩溃呀。。


# include "stdio.h"
#define N 10
void main()
{int a[N],i,j,m,k,q,z,w,x;
L1:printf ("please input number:\n");
 for (i=0;i<N;i++) scanf("%c",&a[i]);
 for (z=0;z<N-1;z++)        
 {for (k=0;k<N;k++)
 {m=N-k;
  if((a[m]>='a'&&a[m]<='z')||(a[m]>='A'&&a[m]<='Z'))
  {q=a[m-1];a[m-1]=a[m];a[m]=q;}
 }
 }
  for (w=0;w<N;w++)
  {for (x=0;x<N-1;x++)
  {if(a[x]>=0&&a[x]<=9)
  {q=a[x+1];a[x+1]=a[x];a[x]=q;}
  }
  }
 
 for (j=0;j<N;j++) printf("%c",a[j]);
 goto L1;
}
搜索更多相关主题的帖子: 字符串 符号 键盘 元素 
2011-05-27 08:44
rapher
Rank: 2
等 级:论坛游民
帖 子:36
专家分:10
注 册:2011-5-27
收藏
得分:0 
回复 2楼 ansic
直接排序是什么方法。。才学c几天。。请高手支招。。

不过这个字符串含有字母。字符。数字呀。。要对它们排序呀。。
2011-05-27 08:54
rapher
Rank: 2
等 级:论坛游民
帖 子:36
专家分:10
注 册:2011-5-27
收藏
得分:0 
回复 2楼 ansic
本来我想直接用ascii判断大小的。。但是字符的ascii码混杂在0~9,a~z,A~Z前后和之间呀。。直接排有字符的话应该就没办法了吧、、
2011-05-27 08:59
rapher
Rank: 2
等 级:论坛游民
帖 子:36
专家分:10
注 册:2011-5-27
收藏
得分:0 
回复 7楼 liangjinchao
大侠!我喜欢你的啰嗦版。可读性好强。。

不过(*p)这个应该是运用到指针和寻址了?

是不是这个题确实没法再用ascii码来做了?
2011-05-27 10:36
rapher
Rank: 2
等 级:论坛游民
帖 子:36
专家分:10
注 册:2011-5-27
收藏
得分:0 
回复 10楼 liangjinchao
呵呵~我也是才学了三天的c..指针还不太会用。。所以也没考虑用指针存储。。
指针好难呀。。
2011-05-27 14:58
rapher
Rank: 2
等 级:论坛游民
帖 子:36
专家分:10
注 册:2011-5-27
收藏
得分:0 

我自己在补充一下。按照自己的想法重新编出来了。基本上没错。只是错在字符串和常量的取舍上。输入字符串就要考虑一下指针结合数组。如是输入整数之类的。就不是很必要了~~
# include "stdio.h"
#define N 10
void main()
{int m,k,q,z,w,x;
char a[N],*p;
p=a;
L1:printf ("please input number:\n");
 gets(p);
 for (z=0;z<N;z++)
 {for (k=0;p[k];k++)
 {m=N-k;
  if((p[m]>='A'&&p[m]<='Z')||(p[m]>='a'&&p[m]<='z')&&m>=0)
  {q=p[m-1];p[m-1]=p[m];p[m]=q;}
 }
 }
  for (w=0;w<N;w++)
  {for (x=0;p[x];x++)
  {if(p[x]>='0'&&p[x]<='9'&&x<=8)
  {q=p[x+1];p[x+1]=p[x];p[x]=q;}
  }
  }
 
 puts(p);
 goto L1;
}

以上重新编译后的程序没有问题~完美运行~~~
2011-05-28 14:14
快速回复:崩溃了。出不来结果。求高手帮我看看我编的源码。。从键盘随意输入字符 ...
数据加载中...
 
   



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

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