数学建模社区-数学中国

标题: C菜鸟跪求求高手指教!!! [打印本页]

作者: 许凯    时间: 2012-2-25 13:50
标题: C菜鸟跪求求高手指教!!!
以下是《计算单位阶跃响应的上升时间》的部分源程序:
  Y) h. g3 x3 @1 o+ o
9 X4 K. q! Q' i/ a# include <stdio.h>- l9 O5 Y2 ~( a2 F
# include <malloc.h>
# }+ _+ M; b: Q# Z4 I( W5 }# include <stdlib.h>
) F/ R% _# a4 z3 ^. N' B6 q
. F0 t+ a; Q% N' k" k- O/*/ j; `7 j" v4 p) W
** delta---抽样时间间隔;tr---响应的上升时间;n---抽样数;f(i)---抽样数组。
7 \+ N9 T$ ?6 B. c9 m0 ]*/% V: |. o" N+ _9 x" l5 |9 ~5 F0 T
1 W& ]! J' V8 c  S1 _  Y  A2 T
void get_data(float * pf, int n);" h6 R. x" t+ c2 Y( \
int main(void)' O. S4 {% k! t) S# Q* O
{
' W. C3 V5 _8 ^        int   i;
2 y1 m% j( |  @* J. ]+ D, m3 W        int   n;
1 o- }9 Q$ t! ]7 a        float delta;8 ?6 l5 k3 p# X1 q' j& u
        float * pf = NULL;
5 V. T4 F8 c% X" ~5 F; y: B$ j8 t6 S" A* o" A
        printf( "请如入抽样数: n =  " );) d" Z: H. t2 d5 K  Z
        scanf( "%d", &n );7 }( h# h+ r9 G) N3 w2 d' z6 b: f
        printf( "请输入抽样时间间隔: delta = " );% t4 K0 j) d' ]5 w3 ]: F: h9 n8 p
        scanf( "%f", &delta );
' m4 O! ^* n, [# b5 e        printf( "请输入抽样数组: f(i)\n" );% x) L2 o# n1 |4 E8 r9 ?
. K1 c5 I) d# Y  h' s7 c
        pf = ( float * )malloc( n * sizeof(float) );
, ~2 a% L" ~6 ~9 ]9 `4 {% [
, r5 A, H# }% H        if (NULL == pf)9 j! n8 Y* x: |& t
        {
& w% x! W5 ?% y9 S3 w) H                printf( "动态内存分配失败!\n" );; H- M& x3 H" u( W# W- }$ ]
                exit(-1);2 e4 {' {4 E, z4 Q
        }
( j, ^3 [3 |, H3 X( d; f& ~! U0 Z; M+ J: p* s
        get_data(pf, n);0 H  _6 M1 R4 n1 A# x/ p, R

/ W/ P+ Z! a1 ]  n+ r6 t// 数据输出
9 \8 p& U1 ^! l) ~        for(i=0; i<n; ++i)
$ M0 R3 R; R3 e6 C8 y                printf("f(%d) = %f\n", i+1, pf);
  a3 q' ]6 Q" i2 Q# v6 Y  k2 U) b& h7 V( m( N3 J; V6 @
        return 0;" o! ^+ E5 U+ r4 S
}1 ~4 R* E  b, t8 }) W- N

# [% ]' l& V8 R6 Q1 I( d1 wvoid get_data(float * pf, int n): G8 X7 [2 E) P+ w8 l- r: V
{- I9 w: V/ r  t+ ?
        int i;
0 Y! J+ Q7 g! }' ^4 Q: l: F( o7 J3 x4 g- |
        for ( i=0; i<n; ++i)* F* q5 h; v& F# ^& o8 o* J
        {6 R8 S4 @$ W- X2 U; L  ^$ s; Z
                printf( "f(%d) = ", i+1 );( h) S5 n& u" H
                scanf( "%f\n", &pf );
  k0 k; v) d# t; z/ K4 p        }( q) }0 H6 D- k" U
}: ], O8 l$ R1 ~( j4 x+ B1 M

8 S) R/ c4 F8 q" ]/ x在敲完 void get_data(float * pf, int n) 函数时测试输出f(i)时出了问题,打印为:
* B; ?1 z' M" w# \  k* ^! F, N. U' ~( m7 E& r3 k
5 h5 W% c( {( M( d

) V8 o8 E' U" r* J& d  w+ a( ?5 N. i, \% b2 G) @: _
想了很久,还是想不通!
作者: 许凯    时间: 2012-2-25 13:56
坐等呀 !!!!
作者: moderstone    时间: 2012-2-25 15:33
可惜我也不懂呀!!
作者: 冷夜舞声    时间: 2012-5-8 18:05
看不到你发的图片也
作者: qlb061    时间: 2012-6-29 18:44
本帖最后由 qlb061 于 2012-6-29 18:48 编辑 & ?; f& \: t3 d. V' B6 ]
  1. /*output data*/
    . ]6 D2 F: a( s9 Q
  2. for(i=0; i<n; ++i), A  b3 l& ?' i: q) M
  3. {% G' M8 Q$ @. [" q/ Y' `- p% v
  4.        printf("f(%d) = %f\n", i+1, *pf++);+ y6 {6 L% w: l7 E( A
  5. }; |- d* p% L9 R$ M+ q$ F
  6. /*input data*/
    6 V) ?/ K' N2 l5 Y. U- R# E
  7. void get_data(float* pf, int n)
    ) @2 c0 n' P2 N  X  r
  8. {
    ! O$ \: z. X& V
  9.       int i;
    / g5 Q. S( T( R* ?8 G1 S$ P: g! R
  10. 7 H5 k$ J7 s. g; a# i
  11.      for ( i=0; i<n; ++i); ?6 u% y0 I8 {: _, T
  12.     {
    1 o. g! K2 k$ L! F3 m
  13.            printf( "f(%d) = \n", i+1 );
    1 f) v1 I$ E% A7 {* G
  14.            scanf( "%f", pf++ );
    3 d- R% W( i6 U
  15.     }
    5 b" D- s3 {( `: V! ?
  16. }
复制代码





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5