2013-08-31 60 views
-2

我不是一個C愛好者,我寫這個,勉強,作爲我的任務的一部分。該程序將輸入兩個多項式並添加並顯示它們。我編寫了輸入和顯示模塊,但程序不運行。我的C程序不運行

Dev-C++它說我有主要多個定義。

#include<stdio.h> 
#include<conio.h> 


// This is my implementation to add and multiply 
// two polynomials using linked list 
// So far, it just inputs and displays the polynomial 
struct term { 
    int exp; 
    int coef; 
    struct term *next; 
}; 

struct term* addTerm(struct term *polynomial,int exp,int coef){ // adds a term to polynomial 
    if(polynomial == NULL){ 
     polynomial = (struct term *)malloc(sizeof(struct term)); 
     polynomial->exp = exp; 
     polynomial->coef = coef; 
    }else{ 
     struct term *newTerm = (struct term *)malloc(sizeof(struct term)); 
     newTerm->exp = exp; 
     newTerm->coef = coef; 
     polynomial->next = newTerm; 
    } 
    return polynomial; 
} 

void display(struct term *polynomial){ // displays the polynomial 
    struct term *p = polynomial; 
    while(p->next != NULL){ 
     printf("+ %dx%d",p->coef,p->exp); p = p->next; 
    } 
} 

void main(){ // run it 
    int i = 5; 
    int coef = 0; 
    int exp = 0; 
    struct term *polynomial = NULL; 
    while(i++ < 5){ 
     printf("Enter CoEfficient and Exponent for Term %d",i); 
     scanf("%d %d",&coef,&exp); 
     polynomial = addTerm(polynomial,exp,coef); 
    } 
    display(polynomial); 
    getch(); 
} 

如何讓它運行?

+0

與它的問題的結果你得到的* only *錯誤?你有兩次在你的項目中有相同的文件嗎?或者每個都具有'main'函數的多個源代碼? –

+0

在整個C程序中只能有一個'main',包括所有'.c'模塊。 'main'是整個程序的入口點。另外,main中的'while'循環將不會執行,因爲'i'已經不是'<5'。也許你是爲了調試目的而做的...... – lurker

+0

你的'display'函數不檢查NULL'polynomial',所以如果'p'本身是'NULL',它會在'p-> next!= NULL'處執行segfault 。 – lurker

回答

3

推測,您的IDE項目中有多個.c文件,其中多個文件包含main()函數。另外 - 如果你的IDE允許它 - 你可能不止一次地將相同的.c文件添加到項目中。

+0

是的,我確實有另一個帶有main的測試'.c'文件。這是不允許的?對不起,我是一名Java程序員。 –

+0

@LittleChild:我不知道你的IDE如何管理項目,但每個項目通常都有一個'main()',項目中的所有內容都被編譯並鏈接在一起。 – NPE

+0

我想爲我的作業使用'Dev-C++'。如何用'main()'管理多個文件。我的意思是,我不想爲每個程序創建多個項目:) –

1

變化具有類似名稱到同一個文件中的所有文件由前.c

在每一個末端附加一個唯一的數字字符名稱打開一個終端,並改變你的CWD到項目的目錄src文件夾。 鍵入以下命令來編譯代碼:通過鍵入以下 gcc -W -o polynomial test.c

運行現在的代碼:這裏 ./polynomial

後,如果您仍然有

1
#include <stdio.h> 
#include <stdlib.h> 
#pragma DONT include <conio.h> 


// This is my implementation to add and multiply 
// two polynomials using linked list 
// So far, it just inputs and displays the polynomial 
struct term { 
    struct term *next; 
    int exp; 
    int coef; 
}; 

struct term *addTerm(struct term **polynomial, int exp, int coef){ // adds a term to polynomial 

    struct term *newTerm; 
    newTerm = malloc(sizeof *newTerm); 
    newTerm->exp = exp; 
    newTerm->coef = coef; 

#if APPEND_AT_TAIL 
    for (; *polynomial;polynomial = &(*polynomial)->next) {;} 
    newTerm->next = NULL; 
#else 
    newTerm->next = *polynomial; 
#endif 
    *polynomial = newTerm ; 

    return newTerm; 
} 

void display(struct term *polynomial){ // displays the polynomial 
    struct term *p; 
    for(p = polynomial; p; p = p->next){ 
     printf("+ {%d * %d}", p->coef, p->exp); 
    } 
} 

int main(void){ // run it 
    int i ; 
    int coef = 0; 
    int exp = 0; 
    struct term *polynomial = NULL; 

    for(i=0; i < 5; i++){ 
     printf("Enter CoEfficient and Exponent for Term %d> ", i); 
     scanf("%d %d",&coef,&exp); 
     addTerm(&polynomial, exp, coef); 
    } 
    display(polynomial); 
    // getch(); 
    return 0; 
}