| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1214 人关注过本帖, 1 人收藏
标题:求大佬帮忙看下这道题怎么写,敲了一上午了都不对
只看楼主 加入收藏
milkya
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2020-5-19
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:2 
求大佬帮忙看下这道题怎么写,敲了一上午了都不对
(main函数中)输入一个字符串,包含数字字符和非数字字符,非数字字符中可能有负号、小数点、e格式标志(e或E)、指数部分还将可能有符号,将连续的数字字符作为一个数(该数可能是负数,其中也可能存在一个小数点也可能是指数形式的数;若-或.后无数字,则它们作为分隔符)。首先,写一个函数int count(char *s),算出其中有多少实数(以便在main函数中为这些实数动态开辟恰当的存储空间);其次,写一个函数void store(char *s, double *a),将s中的实数存储到数组a中;最后,在main函数中后输出s中实数的个数、依次输出这些实数(%g格式)并释放a的空间。
搜索更多相关主题的帖子: 实数 字符 main 函数 数字 
2020-05-19 11:48
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9024
专家分:54030
注 册:2011-1-18
收藏
得分:14 
最简单的办法就是直接 sscanf
2020-05-19 16:53
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9024
专家分:54030
注 册:2011-1-18
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <stdlib.h>

size_t count( const char* s )
{
    size_t result = 0;
    for( int i=0,j; sscanf(s+i,"%*lf%n",&j)==0; i+=j )
        ++result;
    return result;
}

void store( const char* s, double* a )
{
    size_t index = 0;
    for( int i=0,j; sscanf(s+i,"%lf%n",&a[index],&j)==1; i+=j )
        ++index;
}

int main( void )
{
    const char* s = "123 12.3 -1.23e-05";

    size_t n = count(s);
    printf( "count = %zu\n", n );

    double* a = malloc( n * sizeof(double) );
    store( s, a );
    for( size_t i=0; i!=n; ++i )
        printf( "%g\n", a[i] );
    free( a );
}
2020-05-19 17:02
快速回复:求大佬帮忙看下这道题怎么写,敲了一上午了都不对
数据加载中...
 
   



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

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