当前位置: 代码迷 >> C语言 >> [求助] 明天的作业,想半天不会做
  详细解决方案

[求助] 明天的作业,想半天不会做

热度:118   发布时间:2006-05-07 23:34:00.0

见笑了,能实现输出,但不能统计有多少个
#include "stdio.h"
main()
{
char a[50];
int i;
printf("Please input a sring:\n");
gets(a);
for(i=0;(i<50)&&(a[i]!='\0');i++)
{
if((a[i]>='0')&&(a[i]<='9'))
printf("%c",a[i]);
else printf(" ");
}
getch();
}

[此贴子已经被作者于2006-5-7 23:34:33编辑过]


----------------解决方案--------------------------------------------------------
笑一下
----------------解决方案--------------------------------------------------------
11楼你呀 既然都。。。那么。。。可是。。。却要。。。
----------------解决方案--------------------------------------------------------
以下是引用神vLinux飘飘在2006-5-7 23:29:00的发言:
我要写是很简单的事情,问题是,我为什么要帮人家做作业?

先不讨论你的程序是否能得到结果
先从你的设计思想去分析

#define N 30
char str[N];
int a[N] = {0}, i, j;
gets(str);

你很明显企图用一个固定大小的字符数组和int数组去装输入的字符串和输出的整形数组
但是,你这样写出的程序从它定义#DEFINE N 30的那句开始就已经死了,被你定死的~
空间浪费是小事,程序溢出才是大事!

也许你会说:什么嘛~不可能会有人有耐心输入超过30个字符去进行测试的.那你就错了~~~
有句话说得好: 如果一件以外它可能会发生,那么它就肯定会发生.
这是句名言,惭愧的是我自己也很难完全按照这句话的意思去处理那些程序中出现的异常.


再从算法角度分析
看这句
for (i = strlen(str) - 1; i >= -1; i--)
要知道strlen(char*)函数的算法复杂度是字符串的长度,一旦调用了这句就表明其实你已经遍历了一遍字符串了.然而你却仍然没得到想要的结果....


最后从编程习惯剖析
总的来说,你已经有一个非常好的编程习惯了,起码有了代码的缩进这个最基本的编程技巧了,别惊讶,我有好多同学仍然喜欢像玩堆高塔一样把代码堆积起来,十分恐怖~
但是一些容易让其他人阅读产生误解的变量,比如你这个程序中的flag变量就不知道用来做什么~应该加一点注释


顺便再说一下,你那程序怎么用的啊?为什么我老是得不到结果?

高手,佩服,就按楼主那么输入的,XP,DEV


a123x456 17960? 302tab5876

[此贴子已经被作者于2006-5-7 23:43:54编辑过]


----------------解决方案--------------------------------------------------------
你尝试输入a2或者2之类的死亡测试没?
----------------解决方案--------------------------------------------------------
以下是引用神vLinux飘飘在2006-5-7 23:45:00的发言:
你尝试输入a2或者2之类的死亡测试没?

a2和2不输出,楼主的意思最少是两位整数

[此贴子已经被作者于2006-5-7 23:46:55编辑过]


----------------解决方案--------------------------------------------------------

你一定是死扣住 "将其中连续的数字作为一个整数" 这句不放了...
算了,这里不是语文专区,不和你争论这个,你能按照你的理解去正确实现就是了

我的建议是,在大小未知的情况下用链表情况会好很多


----------------解决方案--------------------------------------------------------

刚才突然不能登陆了.
13楼说的对,不过在这里得到大家这么多的帮助,也挺想出点力的,呵呵
不过水平有限啊,尽力了

[此贴子已经被作者于2006-5-8 0:05:00编辑过]


----------------解决方案--------------------------------------------------------
此题调用<stdlib>库函数
long strtol(const char *, char **, int);
则大为简化
----------------解决方案--------------------------------------------------------
路过,路过,路过;随便看看!!!
----------------解决方案--------------------------------------------------------
  相关解决方案