社区
C语言
帖子详情
如何解决?
yslcuk
2007-02-15 06:12:49
标准C中有一个字符串如:551+553+667:670+722
当有:时应取成(667,668,669,670)
最后得出以下列如:
551
553
667
668
669
670
722
如何解决?
...全文
245
9
打赏
收藏
如何解决?
标准C中有一个字符串如:551+553+667:670+722 当有:时应取成(667,668,669,670) 最后得出以下列如: 551 553 667 668 669 670 722 如何解决?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fosjos
2007-02-15
打赏
举报
回复
纠正:int a[20]={0};
a[j] = -1;//作为结束符
提醒一下WingForce 的bug:
551+553+667:670
yslcuk
2007-02-15
打赏
举报
回复
ok
fosjos
2007-02-15
打赏
举报
回复
char str[] = "551+553+667:670+722";
int a[20];
int i=0,j=0;
int flag=0; //标识':'
for(;;i++){
if(str[i]>='0'&&str[i]<='9')
a[j] = a[j]*10 + (str[i]-'0');
else{
if(flag){
flag = 0;
int max = a[j];
for(;a[j-1]<max;j++)
a[j] = a[j-1]+1; //print
}else
j++;
if(str[i]=='+' || str[i]==':'){
a[j] = 0; //print
flag = (str[i]==':');
}else
break;
}
}
a[++j] = -1; //作为结束符
WingForce
2007-02-15
打赏
举报
回复
。。。
一直没有看懂,那再改下好了。。。其实很简单
#include <stdio.h>
#include <stdlib.h>
#define is_number( ch ) ( (ch) >= '0' && (ch) <='9' )
#define is_connector( ch ) ( (ch) == ':' )
char* buf = "551+553+667:670+722:750+780";
int main(int argc, char *argv[])
{
char* p = buf;
int pre = 0, out = 0;
/* ...p指向目的buf */
while( *p != '\0' )
{
if( is_number( *p ) )
{
out = out * 10 + *p - '0';
}
else if( is_connector( *p ) )
{
pre = out;
out = 0;
}
else
{
if( pre != 0 )
{
while( pre++ < out ) printf( "%d\n", pre );
pre = 0;
}
else
printf( "%d\n", out );
out = 0;
}
p++;
}
if( out != 0 )
printf( "%d\n", out );
system("PAUSE");
return 0;
}
yslcuk
2007-02-15
打赏
举报
回复
楼上的
我的意思是有冒号时就连续输出,如667:670,
就输出成
667
668
669
670
谢谢
WingForce
2007-02-15
打赏
举报
回复
#include <stdio.h>
#include <stdlib.h>
#define is_number( ch ) ( (ch) >= '0' && (ch) <='9' )
char* buf = "551+553+667:670+722";
int main(int argc, char *argv[])
{
char* p = buf;
int out = 0;
/* ...p指向目的buf */
while( *p != '\0' )
{
if( is_number( *p ) )
{
putchar( *p );
}
else
{
putchar( '\n' );
}
p++;
}
system("PAUSE");
return 0;
}
yslcuk
2007-02-15
打赏
举报
回复
楼上的,不对呀
WingForce
2007-02-15
打赏
举报
回复
#define is_number( ch ) ( (ch) >= '0' && (ch) <='9' )
char* p;
int out = 0;
/* ...p指向目的buf */
while( *p != '\0' )
{
if( is_number( *p ) )
out += (*p *10)
else
{
printf( "%d\n", out );
out = 0;
}
p++;
}
hmichaelchen
2007-02-15
打赏
举报
回复
从字符串开始分析,分三个分支分析字符串,数字一个,+一个,:一个,遇到:以后,将:以前的数字+1,然后和:以后的数字比较,相等了就往后分析,否则继续+,回家了在网吧的,写程序不方便,不然就给你一段代码了。
其实你只要把连续的数字分析出来就可以了,算是写一个字符串到数字的转变函数而已,和简单,其他的符号只是一个分析标志。
数据链路层的有那三个基本问题?为什么都必须加以
解决
?
为什么都必须加以
解决
? 数据链路层的三个基本问题:封装成帧、透明传输、差错检测。 ⑴封装成帧就是在一段数据前后分别添加首部和尾部。接收端以便从收到的比特流中识别帧的开始与结束,帧定界是分组交换的必然...
【Redis篇】什么是缓存雪崩、缓存穿透、缓存击穿?如何
解决
?
如何
解决
? 1. 缓存雪崩 1. 概念 指在某一个时间段,缓存集中过期失效。所有原本应该访问缓存的请求都去查询数据库了,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机。从而形成一系列连锁反应,造成整个...
新版谷歌Chrome允许flash的选项已不再保存和添加了(如何
解决
?)
新版谷歌允许flash的选项已不再保存和添加了(如何
解决
?) 谷歌下狠手了 那么如何处理呢?如何让谷歌允许flash的保存呢?因为有时视频测试和调试时又有必要用到谷歌测试flash的,怎么处理呢? 答案如下: ...
vue路由params 参数可传可不传写法?如果传递的为空串,该怎么
解决
?
如果传递的为空串,该怎么
解决
? 参数可传可不传的写法 在占位符后面加? routes: [ { path: "/home/:id?", }, ]; 空串
解决
办法加 undefined this.$router.push({ name: "home", params: { id: "" || ...
网络互连有何实际意义?进行网络互连时,有哪些共同的问题需要
解决
?
进行网络互连时,有哪些共同的问题需要
解决
? 答: (1)单一的网络无法满足各种用户的多种需求,所以,把许多种不同类型的物理网络互相连接在一起,可以实现更大范围内的通信。实际中使用的TCP/IP协议,定义了一种...
C语言
69,381
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章