数学建模社区-数学中国

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

作者: 许凯    时间: 2012-2-25 13:50
标题: C菜鸟跪求求高手指教!!!
以下是《计算单位阶跃响应的上升时间》的部分源程序:3 r& [4 A, ^. p- V1 n2 [$ }2 Q

4 M+ b9 M4 y- d3 m$ g0 g% @8 k# include <stdio.h>6 w& O1 ?6 F. q. e& @' x2 t0 q
# include <malloc.h>& Q8 D  g) _3 L: W2 `# }1 ^8 Q
# include <stdlib.h>
. ?, J) U8 a$ E" E: Z4 ~
& X; Q+ i7 l0 ~" g+ f, R1 T/*9 r. ]( m$ e0 @+ r, i7 g$ _
** delta---抽样时间间隔;tr---响应的上升时间;n---抽样数;f(i)---抽样数组。
7 k( N6 ]4 w3 Y! H) X$ S) T  @*/  z  c, A# q3 A! B; o

, i! y! g' ^' [5 w, d% zvoid get_data(float * pf, int n);$ W1 k3 Q; k  Q6 O' F% K
int main(void)/ ?+ u2 H* }: R' n
{( q4 t; w% Q2 n% |8 @  f& w$ ?
        int   i;/ N) W$ S$ W5 K1 b9 s
        int   n;
* Q4 \0 |+ y; W  f$ f* K        float delta;
/ O0 m8 B( _" q, K, M        float * pf = NULL;. u+ W; X+ r) O
: E8 H* ~8 N$ d. S( o
        printf( "请如入抽样数: n =  " );, {! W' ^$ y5 A8 E" x0 Z
        scanf( "%d", &n );
- h% n2 i/ h) F* N  m. Q        printf( "请输入抽样时间间隔: delta = " );: f! g6 I, {1 o1 P% H
        scanf( "%f", &delta );  _) S" r9 m5 m4 ]8 z
        printf( "请输入抽样数组: f(i)\n" );9 q7 F6 a0 i0 }9 o

* e  D3 ?- j6 R7 u        pf = ( float * )malloc( n * sizeof(float) );
1 m( N4 t. K8 B* I* q- j, J) ~" x! X
        if (NULL == pf)" ^! m' @! j0 }4 A' A  O
        {
) m0 @/ m0 p( O                printf( "动态内存分配失败!\n" );" r% G3 T5 J* I2 L' o1 v' m0 x
                exit(-1);
3 z) f. D- d7 O$ R        }
8 [' m9 F9 y  F; W; X) q8 R
: e6 G# ~  Q4 G  {        get_data(pf, n);
, w  ~6 H" G) q: ~
; W4 [$ }! V. v" S// 数据输出
( ]$ d; H7 L: v' \# k        for(i=0; i<n; ++i)
2 |7 ?0 h2 A5 K$ X4 x6 O                printf("f(%d) = %f\n", i+1, pf);6 r5 C) F4 S, D. R
4 k5 }, ^8 z" W2 P+ X
        return 0;
( Y1 J! X; y) D}
* B$ t& a9 X: X  y, A. o8 G4 S3 r4 X0 H; D- Z! g& Y
void get_data(float * pf, int n)
  y1 F& B3 o' _- r- C8 y{+ f' B& O- o! @, |$ y+ {: ]
        int i;( Q% ~) X0 g- ~) a1 v
- d7 @# X7 ?8 Z# S
        for ( i=0; i<n; ++i)- ?0 ]. m# W/ c) w7 J, n6 r' |
        {8 x0 f8 @. j! S6 e% u, T6 a% L* n- E9 c
                printf( "f(%d) = ", i+1 );
/ z1 }% C# d  |- p8 Q                scanf( "%f\n", &pf );. a0 t. Q$ r& a# S3 R' n
        }
8 o2 u( \/ _7 d% p0 T! V0 k6 {}
8 g) ~: m/ J$ L. ^7 o% o: K
& {. {1 b, k* C在敲完 void get_data(float * pf, int n) 函数时测试输出f(i)时出了问题,打印为:) {  i0 Y" }% t+ F- n& G0 V, |  O' E# E
0 x% [- x$ o9 n, `/ Y5 A- }
" R3 P4 L  z; T8 R7 S' h3 m' V

( E7 \- K; h  M7 P# {6 {* d
* v/ ~; F. ]$ F. ?想了很久,还是想不通!
作者: 许凯    时间: 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 编辑
4 [( b7 D9 j+ V9 D2 a1 g& r- D
  1. /*output data*/8 h- k1 f4 Y" {) q; q
  2. for(i=0; i<n; ++i)
    % g1 w" A# d3 X( T
  3. {
    ) U- S4 [% Q- H5 p' e+ e
  4.        printf("f(%d) = %f\n", i+1, *pf++);7 L% K8 l3 O* s& T
  5. }
    1 }" o" \, K- x+ i' i
  6. /*input data*/
    1 p9 H+ Y# L$ S# N
  7. void get_data(float* pf, int n)
    7 R( O* I5 }# ^0 e' n0 P# C
  8. {
    ) {7 o0 _/ F# }: g" N) w
  9.       int i;
    % ]* N: A4 d* s$ _" p. l
  10. 6 c! m7 E0 E# s! C9 x$ n
  11.      for ( i=0; i<n; ++i)
    - u8 z$ M9 o3 ~2 |6 \8 F5 q5 ?
  12.     {
    ! o( I( z4 m  u' _, G6 B) t
  13.            printf( "f(%d) = \n", i+1 );
    ' j( s: d' e2 d6 V. R8 Y1 S
  14.            scanf( "%f", pf++ );
    : j4 E/ _: }( _& k
  15.     }
    # c2 Z) Y1 A: [# q$ M2 Y5 k1 t, h* r4 x  P
  16. }
复制代码





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