2013-03-27 34 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