2017-12-15 24 views
0

저는 C 언어의 멍청이이고 Matlab에서 왔습니다. 균등하게 간격을 둔 배열을 만드는 것과 같은 아주 간단한 작업을 수행하는 것은 미쳐 버릴 것입니다. 내가 원하는 일은 0부터 시작하여 0.1 씩 증가하는 50 개의 요소 배열입니다. '균등 한 간격의 배정 밀도 배열 만들기

0 0 
1 -1717986918 
2 -1717986918 
3 858993460 
4 -1717986918 
5 0 
6 858993459 
7 1717986918 
8 -1717986919 
9 -858993460 
10 -1 
... 

그리고 난 정말 할 수 있습니다 CI에서

n=50; 
h=0.1; 
t=0:h:(n-1)*h; 

이 노력하고 있어요 :로 matlab에 그것은 간단 할 것

#include<stdio.h> 

int main() { 

    int n = 50;  
    double h = 0.1; 

    double t[n]; 
    t[0] = 0; 

    int i; 
    for (i = 0; i <= n; i++){ 
    t[i+1] = t[i] + h; 
    printf("%i %d\n",i, t[i]); 
    } 

    return 0; 
} 

을 그리고 출력은 미친 듯이 무언가이다 이유를 이해하지 못한다.

도움 주셔서 감사합니다.

답변

4

printf("%i %d\n",i, t[i])에서 t[i]double이지만, %d은 당신이 int을 통과해야합니다. double을 인쇄 할 때는 일반 형식으로 %g을 사용하십시오.

-1
#include<stdio.h> 
    #define n 501 
    int main() { 

    double h = 0.1; 


    // You cant passe varible whene you allocate statically 
    // use define 
    double t[n]; 

    t[0] = 0; 

    int i; 
    for (i = 0; i < n; i++){ 
     t[i+1] = t[i] + h; 
     printf("%i %lf\n",i, t[i]); 
    } 

    return 0; 
    } 
+0

답변을 설명해 주실 수 있으시겠습니까? – RAS

+0

블록 안에 '정적'이없는 선언은 정적이 아닙니다. 자동 저장 기간을 가진 객체를 선언합니다. 가변 길이 배열은 C의 선택적 기능이며 OP 구현에서 지원됩니다. –