2013-03-27 35 views
-5

我必須編寫一個讀取兩個整數和一個操作並計算它的程序,較大的整數值應該被減去,除以或由較小的整數值所採取的提醒,我寫了代碼但我面對許多問題,例如說'在文件末尾沒有新行「的錯誤。 任何人都可以請糾正它!如何在程序中修復這個erorrs?

#include <stdio.h> 
int main (void) 
{ 
    double x1,x2,y1,y2,t; 
    char op; 
     printf("enter an operation:"); 
     scanf("%lf %c %lf", &x1, &op , &y1); 

     if(x1<y1) 
      { 
       x2 = y1; 
       y2 = x1; 
      } 
     else{ 
       x2 = x1; 
       y2 = y1; 
      } 
     switch ('op') { 
        case '+' : t = x2+y2; break; 
        case '-' : t = x2-y2; break; 
        case '*' : t = x2*y2; break; 
        case '/' : t = x2/y2; break; 
        case '%' : t = x2%y2; break; 
        case '^' : t = x2^y2; break; 
        default: printf("not valid! \n"); 
         } 

    printf("%lf %c %lf= %lf \n",x2,op,y2,t); 

    return 0; 
} 
+6

我想通過把新線在文件的結尾開始。你有關於你的代碼的其他具體問題嗎? – 2013-03-27 22:41:19

+0

嘗試詢問更具體的問題。你甚至沒有告訴我們什麼是不工作的 – slezica 2013-03-27 22:43:30

+0

「我的代碼有許多問題,我只會提到一個,忽略它完全說的內容,並在此處發佈我的代碼,請修復它。」是不是在這裏問一個問題的方式。請在出現錯誤後告訴您需要的文件末尾添加新行後,請編輯您的問題,以更具體地瞭解問題所在* – 2013-03-27 23:00:10

回答

3

這裏有一些東西,你必須修復:

switch ('op')switch (op)

不能對float或double使用%^,使用fmod()pow(),包括math.h

case '%' : t = fmod(x2,y2); break;

case '^' : t = pow(x2,y2); break;

不要忘了初始化T: double x1,x2,y1,y2,t=0;

所以整個事情變成:

#include <stdio.h> 
#include <math.h> 

int main (void) 
{ 
    double x1,x2,y1,y2,t=0; 
    char op; 
    printf("enter an operation:"); 
    scanf("%lf %c %lf", &x1, &op , &y1); 

    if(x1<y1) 
    { 
     x2 = y1; 
     y2 = x1; 
    } 
    else 
    { 
     x2 = x1; 
     y2 = y1; 
    } 
    switch (op) 
    { 
    case '+' : t = x2+y2; break; 
    case '-' : t = x2-y2; break; 
    case '*' : t = x2*y2; break; 
    case '/' : t = x2/y2; break; 
    case '%' : t = fmod(x2,y2); break; 
    case '^' : t = pow(x2,y2); break; 
    default: printf("not valid! \n"); 
    } 
    printf("%lf %c %lf= %lf \n",x2,op,y2,t); 
    return 0; 
} 
+0

非常感謝您很多@Johnny助記符 – 2013-03-28 00:22:32

+0

不客氣,考慮將此標記爲答案。 – 2013-03-28 00:30:36