2015-09-27 30 views
0

好家伙我有这样的代码:分配+零个

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
    int x1,y1,x2,y2,x3,y3; 
    float a,b,a2,b2,xf3,yf3,xa,ya; 

    printf("please find the line1 formula: y = ax+b\n"); 
    printf("please input any point (x1,y1):\n"); 
    printf("input x1:"); 
    scanf("%d",&x1); 
    printf("input y1:"); 
    scanf("%d",&y1); 

    printf("please input any point (x2,y2):\n"); 
    printf("input x2:"); 
    scanf("%d",&x2); 
    printf("input y2:"); 
    scanf("%d",&y2); 

    a=(y2-y1)/(x2-x1); 
    b=y1-(a*x1); 
    b=(b); 

    printf("this formula: y = %fx %f\n\n",a,b); 
    printf("please input any point(x3,y3):\n"); 
    printf("input x3:"); 
    scanf("%d",&x3); 
    printf("input y3:"); 
    scanf("%d",&y3); 

    xf3=x3; 
    yf3=y3; 

    a2 = -1/a; 
    b2=y3-(a2*x3); 
    xa=(b2-b)/(a-a2); 
    ya=a2*xa+b2; 
    printf("the line2 which contains (%.3f,%.3f) perpendicular to the line1.",xf3,yf3); 
    printf("please find the intersection point of line1 and line2: \n"); 
    printf("(%f,%f) ",xa,ya); 



    return 0; 
} 

它的工作原理,但打印第一线时,我有一个问题。 我应该将其打印为y=ax+b。如果b是正数或负数,那么就没有问题了。但是,如果b为零,则会打印(示例)y=2.000000x0.000000我需要它为y=2.000000x+0.000000

我该如何解决这个问题?

+0

为什么?零不是正数也不是负数 –

+0

只是不打印0 –

+0

@EdHeal,因为它是一个数学表达式。 “3 + 0”和“30”不是一回事。 – hobbs

回答

1

格式字符串%+f可能适用于您的情况。否则,您可以简单地打印一个字符,即b < 0 ? '-' : '+'