数学建模社区-数学中国

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

作者: 许凯    时间: 2012-2-25 13:50
标题: C菜鸟跪求求高手指教!!!
以下是《计算单位阶跃响应的上升时间》的部分源程序:  a7 {6 d7 V8 p+ y  n4 E. Y
7 g3 b9 f' }. i, j* r
# include <stdio.h>1 S+ G$ X9 W& {; f& V2 q& T8 {
# include <malloc.h>
* z  F6 q" S5 F# X. a0 p# {# include <stdlib.h>
  N, j, `$ O- l) L9 D; p: l( |4 J& H4 P  T( r, ~
/*" L7 Q  E* u4 q6 g/ F& }
** delta---抽样时间间隔;tr---响应的上升时间;n---抽样数;f(i)---抽样数组。$ _/ R/ r/ F- f7 O0 y6 z& s* X
*/: W( |" a$ X4 r1 i
0 E8 e$ h8 B9 B' B+ F0 o6 ]
void get_data(float * pf, int n);0 n8 ?' k7 I# q/ z
int main(void)8 A$ b( G2 _. C3 u/ i: X
{
% \/ J4 A, D9 v1 [        int   i;
5 \$ ]! o/ M% [5 b: X        int   n;
: g, R; Z+ d4 u- |0 ^6 T6 B' U# U        float delta;0 d- p8 s7 i; P) |1 }2 Q9 \
        float * pf = NULL;+ R3 E3 L( g, d# n4 v8 m

9 O+ }( m  ]( w2 f2 S$ Q        printf( "请如入抽样数: n =  " );% x' n5 Q, U3 o7 M
        scanf( "%d", &n );. C) n2 P2 i9 A) ~
        printf( "请输入抽样时间间隔: delta = " );
- q3 ^4 y, q8 a1 z3 |. e- G" @2 k        scanf( "%f", &delta );
+ ]9 u" m8 O$ Z5 @; m  {        printf( "请输入抽样数组: f(i)\n" );, K: `* h8 Y. C  m0 `, m0 Y

! l! I3 _! E, X        pf = ( float * )malloc( n * sizeof(float) );
6 C' D4 I+ L- \" B
" E$ c7 U. v( j" @* V: k        if (NULL == pf)
; Q% \& T7 }8 T% H0 z" Q! P) I/ a) ]        {
5 O- y  e# p3 O* K  v. N1 |                printf( "动态内存分配失败!\n" );; x# H" v# J- J. l+ r2 H) y
                exit(-1);8 u0 q% Q4 T7 F1 H6 N$ ^9 R( V) u
        }
% c) X+ {' Z* A0 [; l! z+ s. \3 j6 t- Y( D6 I5 b: a
        get_data(pf, n);
+ r# y$ ]" j- }6 l
% a& J6 p5 I9 L# R  W$ d" k// 数据输出
9 W! V! g: d" f2 D  a        for(i=0; i<n; ++i)$ n; {( K8 m5 N( r* @
                printf("f(%d) = %f\n", i+1, pf);
7 Q6 S3 i. J/ O. u. \$ s# f( m5 c$ n* S% K  ?
        return 0;
) {4 r" n$ |4 [( @8 s* z, p$ b" w& J}2 O* P2 b. N  i
+ e, B' N- d- G. E: L
void get_data(float * pf, int n)
& D/ v2 `1 ^% p6 A{: F7 h$ Q% W) Y6 M3 t- m) }
        int i;( \* y% o3 Y7 m( I1 t4 v6 r
& f6 B, s% Q) p2 ^6 J5 U4 y, d5 Z
        for ( i=0; i<n; ++i)5 B" j7 }2 i3 y
        {
4 D( N+ m+ Z  y: d+ ]! L& `% b                printf( "f(%d) = ", i+1 );3 L' u% q' |: u0 f6 [6 d* G6 y
                scanf( "%f\n", &pf );/ E/ y. Q3 j: n- N6 p6 _
        }; w7 d5 a% e1 S& n1 Z. d; W
}+ \3 I: U8 y5 l7 T: O7 ^
, ^2 G5 @# q) T* h0 c' F
在敲完 void get_data(float * pf, int n) 函数时测试输出f(i)时出了问题,打印为:9 F& {+ q3 c) g5 v

+ _) C) ?' `1 n" v) ~4 P1 H9 U2 t& d0 B! @2 B
2 T6 f  r- x( D! j4 l  s; W
' X0 R' N& }, S( ]. k& v4 _2 Q
想了很久,还是想不通!
作者: 许凯    时间: 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 编辑
( h, o, T8 |: G' a5 I: {
  1. /*output data*/+ [; ]9 M: R- c" r2 v
  2. for(i=0; i<n; ++i)
    + s# B1 A8 s% |; V. \
  3. {
    : O! u6 T, T4 Q& A2 B6 W
  4.        printf("f(%d) = %f\n", i+1, *pf++);
    ' g! _' o# U8 J5 f
  5. }" i. G9 T4 o  i
  6. /*input data*/8 _. f" u3 Y  v
  7. void get_data(float* pf, int n)
    ! b2 d9 o: `0 J1 P* |- a
  8. {
    $ l' T0 u* p1 g; Y# w. Q3 p
  9.       int i;* q3 k  Y: X+ X2 T9 w
  10. 9 I1 V1 K; Z0 n" @9 O
  11.      for ( i=0; i<n; ++i)
    1 ]* @+ o5 V! G; d  L2 E1 a
  12.     {" N/ n% q1 R* A5 ]& J2 a
  13.            printf( "f(%d) = \n", i+1 );$ |$ g6 ]  }+ r7 m
  14.            scanf( "%f", pf++ );: [: A9 j! v- u% F
  15.     }- l6 x. j7 ~$ R$ P* L# X
  16. }
复制代码





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