数学建模社区-数学中国

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

作者: 许凯    时间: 2012-2-25 13:50
标题: C菜鸟跪求求高手指教!!!
以下是《计算单位阶跃响应的上升时间》的部分源程序:- Z( E0 a$ K5 S5 L  t0 }$ t

( t3 u# j5 q5 w8 J7 f& J- w# include <stdio.h>
# |& B& I# ]  G( R  D$ `: X# include <malloc.h>- ^( ]* D1 k+ n* M! ~
# include <stdlib.h>7 {2 v- K& u) y0 x7 H

+ ?* [- ?: V. B. v# F/*
6 {8 L6 P3 h* G( h** delta---抽样时间间隔;tr---响应的上升时间;n---抽样数;f(i)---抽样数组。
9 y. r; g9 s* s. T4 p/ U3 J*/" @. G8 t" [( D) \" w! I
7 d, p9 \5 Z; R4 z
void get_data(float * pf, int n);9 |. d( c& m5 _" i
int main(void)1 [6 }. I& l# z1 n5 |
{9 y  e2 p" M2 ]4 B7 y7 X( X* D
        int   i;3 V/ w) g$ v  ]* ?& m
        int   n;3 _0 D- I4 o* s, y  Z# e) ~( R
        float delta;
: R+ f: ]! z! D8 w3 ^1 H        float * pf = NULL;
( ?6 R: T3 M, G- ?+ g$ I/ p% c! p0 H0 `
        printf( "请如入抽样数: n =  " );5 r! _8 c5 `& u8 W; |7 k
        scanf( "%d", &n );
* M" A* l) M; b; W        printf( "请输入抽样时间间隔: delta = " );8 Q7 [) {* n- i5 Y  S& o
        scanf( "%f", &delta );
% r, M7 D$ t, O0 G$ H        printf( "请输入抽样数组: f(i)\n" );- L, j& b7 H3 n1 x/ x7 f

8 t/ g- j' q" x  g        pf = ( float * )malloc( n * sizeof(float) );- B/ O+ t1 P: {( _! s* J' p

1 [2 n) k5 p# j+ N9 H        if (NULL == pf)
5 F$ m& l( H. X0 Q$ {9 |( ~) Q$ M# M        {  Y0 ^  {+ q9 {3 C6 l9 p6 {
                printf( "动态内存分配失败!\n" );
9 J' [5 U- a1 Q; r                exit(-1);
4 s+ H( D0 }& Z        }
6 a1 P1 R; o0 G: U1 p) g
8 t8 U, |6 N$ |        get_data(pf, n);! n7 l8 g1 d% r& \; l5 ^6 Y
8 y/ y6 H7 D) Y5 A
// 数据输出, ^" Q- {, p1 J2 F+ Q" L$ _' c+ l
        for(i=0; i<n; ++i)
/ p3 K7 k' L' Q* S" u7 T& S8 G                printf("f(%d) = %f\n", i+1, pf);
  G' a( _: X; B1 q
+ f8 \1 o3 o2 a; L) [( o# m% Z        return 0;
! O1 l. Y9 o# ^; A1 K( E}' f4 p, b+ f; Z1 W. V
) o9 T, p3 t7 O+ y5 I' g/ X
void get_data(float * pf, int n)
1 g# V, ?0 F- ~# V5 r3 m8 ^6 N4 I7 d{" m, v- S. f) U' }- b5 p( {, _; _
        int i;
2 q5 I7 R7 r. n( b# X2 n2 W/ A
        for ( i=0; i<n; ++i)
3 A: n4 `1 @) C2 w( l  D        {: {+ j" w0 v' v5 q: J$ M6 m
                printf( "f(%d) = ", i+1 );
) w1 H3 J$ _5 N$ a3 z; V                scanf( "%f\n", &pf );3 I0 z4 _! A- i/ R. q7 x2 d0 {* S
        }/ h  N* V- g! d3 x6 R; r: e
}- A- b5 b$ o$ Y: `" L& b" V! \3 F
3 L0 S8 w5 T; v" ~3 W$ B
在敲完 void get_data(float * pf, int n) 函数时测试输出f(i)时出了问题,打印为:
$ _7 ^+ m3 C; U& ]/ y8 U9 L% z, R1 G" s+ Z
& M8 U" W! \2 i9 [
- k2 b3 {+ J% A" H7 L
+ ~/ ^4 e* n* x( d- X# ^: \! u
想了很久,还是想不通!
作者: 许凯    时间: 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 编辑 8 {2 G* ?* M& `
  1. /*output data*/$ P" ~1 w) b0 B8 \
  2. for(i=0; i<n; ++i)# g; r9 o+ \* c& B3 p' b7 B
  3. {* f/ L% K$ H3 j' m8 Q" [9 [% W% {- W
  4.        printf("f(%d) = %f\n", i+1, *pf++);
    * X" @4 V& ?+ K# l- l, z
  5. }
    6 O" @5 E/ e8 g5 c; C' i
  6. /*input data*/
    - Y# O9 B7 B" C# A( V3 h
  7. void get_data(float* pf, int n)
    4 b. r; Q4 {' J3 \% V; ^
  8. {8 Q) w, J, g* p# m6 O
  9.       int i;2 Z2 X# g+ w8 r
  10. - V. p5 X' \) m; Y3 y6 u
  11.      for ( i=0; i<n; ++i)
    ' E5 j6 t; X" h4 E( c2 P$ d
  12.     {
    8 R, I6 b- _  {- i- M8 ~, T+ q
  13.            printf( "f(%d) = \n", i+1 );; b# x+ n4 H# M7 e0 P' j
  14.            scanf( "%f", pf++ );) [! A7 A5 Z- J) O9 o6 r: I
  15.     }. L7 D7 F1 ?2 Y+ G; i8 i4 P
  16. }
复制代码





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