| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1830 人关注过本帖
标题:[求助] 明天的作业,想半天不会做
只看楼主 加入收藏
law825
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-3-5
收藏
 问题点数:0 回复次数:30 
[求助] 明天的作业,想半天不会做

问个问题拉:输入一个字符,内有数字和非数字字符,如a123x456 17960? 302tab5876 将其中连续的数字作为一个整数,依次存放到一数组a中.统计共有多少个整数,并输出这些数.

谢谢大家拉,最好说详细点.

搜索更多相关主题的帖子: 作业 数字 整数 字符 
2006-05-07 22:15
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
问个问题拉:输入一个字符

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-07 22:16
law825
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-3-5
收藏
得分:0 
错拉  是字符串
2006-05-07 22:31
gaga
Rank: 1
等 级:新手上路
威 望:2
帖 子:307
专家分:0
注 册:2006-4-5
收藏
得分:0 

这是书上的原题吧
你最好自己写写再说吧


明天的明天还有明天。 可是今天却只有一个。 public Copy from 无缘今生
2006-05-07 22:50
law825
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-3-5
收藏
得分:0 
好的 现在晚拉 我明天写拉 睡觉去拉
2006-05-07 22:52
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 

最好要用到链表


淘宝杜琨
2006-05-07 23:09
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 

/* 问个问题拉:输入一个字符串,内有数字和非数字字符, */
/* 如a123x456 17960? 302tab5876 */
/* 将其中连续的数字作为一个整数,依次存放到一数组a中. */
/* 统计共有多少个整数,并输出这些数. */
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
#include <string.h>
#include <math.h>
#define N 30

int main(void)
{
char str[N];
int a[N] = {0}, i, j;
int num = 0, n = 0, sum = 0, len = 0, flag = 0, count = 0;

printf("Enter a string: ");
gets(str);

for (i = strlen(str) - 1; i >= -1; i--)
{
if (isdigit(str[i]))
{
num = (str[i] - '0') * (int)pow(10, n++);
sum += num;
flag = 1;
}
else
{
if (flag == 1 && sum >= 10)
{
a[len++] = sum;
n = 0;
sum = 0;
flag = 0;
}
else if (num < 10)
{
n = 0;
sum = 0;
flag = 0;
}
}
}
for (j = 0; j < len; j++)
{
count++;
printf("%d\n", a[j]);
}
printf("count = %d\n", count);

getch();
return 0;
}






日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-07 23:10
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 

呵呵,楼上的~不行~


淘宝杜琨
2006-05-07 23:11
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 

你写个更高效的


日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-07 23:12
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
我要写是很简单的事情,问题是,我为什么要帮人家做作业?

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

#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变量就不知道用来做什么~应该加一点注释


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

淘宝杜琨
2006-05-07 23:29
快速回复:[求助] 明天的作业,想半天不会做
数据加载中...
 
   



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

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