⑴ 用C寫個表示直線任意斜率
為任意斜率?是指每次運行的時候都不同還是,可隨意定義Y.X的值.
要是可隨意定義Y.X的值.那就做個入口輸入y,x的值就好了.
要是每次運行都不同的話.那x,和Y的值取隨機數就行
⑵ 要求用戶輸入兩個點的坐標,利用c語音計算過兩點直線的斜率
#include "stdio.h"
void main()
{float x1,y1,x2,y2,slo;
printf("Input coordinates for X1,Y1,X2,Y2\n");
scanf("%f\n%f\n%f\n%f",&x1,&y1,&x2,&y2);
slo=(y2-y1)/(x2-x1);
printf("The slope is %2.2f\n",slo);
}
⑶ c語言中「==」 和「<」 哪個優先順序更高
「<」 比「==」更優先,c語言運算符優先順序從高到低的順序依次如下:
優先順序從上到下依次遞減,最上面具有最高的優先順序,逗號操作符具有最低的優先順序。表達式的結合次序取決於表達式中各種運算符的優先順序。優先順序高的運算符先結合,優先順序低的運算符後結合,同一行中的運算符的優先順序相同。
不同類型的運算符之間也有相應的優先順序順序。
一個表達式中既可以包括相同類型的運算符,也可以包括不同類型的運算符或者函數。當多種運算符出現在同一個表達式中時,應該先按照不同類型運算符間的優先順序進行運算。
各種運算符間的優先順序如下:數值運算符、字元串運算符、關系運算符、邏輯運算符。可以用括弧改變優先順序順序,使得括弧內的運算優先於括弧外的運算。對於多重括弧,總是由內到外強製表達式的某些部分優先運行。括弧內的運算總是最優先計算。
⑷ 用C語言,已知一條直線的一點和斜率,令一條直線的兩點,如何求兩條直線的交點x,y
首先判斷第2條直線是否是垂直於x軸的,如果是,單獨處理。
再求出第二條直線斜率k,並判斷k是否和第一條直線斜率相同,若相同,則不存在焦點,或者有無窮多個交點。
以上條件都不滿足則直接解方程求出交點
#include <stdio.h>
#include <math.h>
#define EQUAL(x, y) (fabs((x) - (y)) <= 1e-6)
int main()
{
double k1, b1, k2, b2;
double x1, y1, x2, y2;
double resultx, resulty;
printf("Input the k and b: ");
scanf("%llf %llf", &k1, &b1);
printf("Input the first point's x and y cand: ");
scanf("%llf %llf", &x1, &y1);
printf("Input the first point's x and y cand: ");
scanf("%llf %llf", &x2, &y2);
if (EQUAL(x1, x2))
{
printf("The point is (%.2llf, %.2llf).\n", x1, x1 * k1 + b1);
}
else
{
k2 = (y1 - y2) / (x1 - x2);
b2 = (y1 * x2 - x1 * y2) / (x2 - x1);
if (EQUAL(k2, k1))
{
printf("None point!\n");
}
else
{
resultx = (b1 - b2) / (k2 - k1);
resulty = k1 * resultx + b1;
printf("The point is (%.2llf, %.2llf).\n", resultx, resulty);
}
}
return 0;
}
⑸ C語言算斜率小問題(純數學幾何運算問題)
其實這個很簡單的問題
斜率為小數的可能最大吧,呵呵
但是小數的存儲是有誤差的,所以比較起來是不準確的,這個能理解吧
還有一個問題就是分母可能為零,也就是豎線,那麼斜率就是無窮大了,這樣在計算上是一個分母為零的異常吧
所以不能用小數來表示斜率,並且判斷不能出現小數
所以就要同分,
你考慮的變號問題,同分時需要變號(如果是負數)在代數中是不存在的
這個你可以詢問一下老師或者同學,並查一下代數課本,初中的知識吧,呵呵
⑹ 已知散點,怎樣用C語言求出斜率,線性擬合
擬合直線之後會有一個擬合結果表,在這個表裡有直線的方程,斜率值(slop),截距值(intercept),以及這些值的誤差(error),和擬合結果的r^2(越接近於1,表明擬合結果越好)。
如果沒有看到這個表,那麼點擊菜單欄上的view
-
results
log,就能看到了。
⑺ 利用C語言編寫 能夠畫出任意斜率的直線演算法程序(利用中點畫線法改編)
將DDA演算法改成中點劃線演算法即可
// DDA畫線View.cpp : implementation of the CDDAView class
//
#include "stdafx.h"
#include "DDA畫線.h"
#include "DDA畫線Doc.h"
#include "DDA畫線View.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDDAView
IMPLEMENT_DYNCREATE(CDDAView, CView)
BEGIN_MESSAGE_MAP(CDDAView, CView)
//{{AFX_MSG_MAP(CDDAView)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDDAView construction/destruction
CDDAView::CDDAView()
{
// TODO: add construction code here
}
CDDAView::~CDDAView()
{
}
BOOL CDDAView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CDDAView drawing
void CDDAView::OnDraw(CDC* pDC)
{
CDDADoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
int xx,yy,x2,y2,m,n;
float dx,dy,k,x,y;
int x0=50,y0=500,x1=50,y1=50;
if(x0>x1)
{
m=x0;x0=x1;x1=m;
m=y0;y0=y1;y1=m;
}
dx=x1-x0;
dy=y1-y0;
k=dy/dx;
if(x0==x1)
{
if(y0>y1)
{
n=y0;
y0=y1;
y1=n;
}
for(y2=y0;y2<=y1;)
{
for(n=-10;n<11;)
{
pDC->SetPixel(x0+n,y2,255);
n++;
}
y2=y2+3;
}
}
if(k>=-1&&k<=1.0)
{
y=y0;
for(x2=x0;x2<=x1;)
{
yy=(int)(y+0.5);
for(n=-10;n<11;)
{
pDC->SetPixel(x2,yy+n,255);
n++;
}
y=y+k;
x2++;
}
}
else if(k>1)
{
x=x0;
k=dx/dy;
for(y2=y0;y2<=y1;)
{
xx=(int)(x+0.5);
for(n=-10;n<11;)
{
pDC->SetPixel(xx+n,y2,255);
n++;
}
x=x+k;
y2++;
}
}
else if(k<-1)
{
x=x1;
k=dx/dy;
for(y2=y1;y2<=y0;)
{
xx=(int)(x+0.5);
for(n=-10;n<11;)
{
pDC->SetPixel(xx+n,y2,255);
n++;
}
x=x+k;
y2++;
}
}
// TODO: add draw code for native data here
}
/////////////////////////////////////////////////////////////////////////////
// CDDAView printing
BOOL CDDAView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CDDAView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CDDAView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CDDAView diagnostics
#ifdef _DEBUG
void CDDAView::AssertValid() const
{
CView::AssertValid();
}
void CDDAView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CDDADoc* CDDAView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CDDADoc)));
return (CDDADoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CDDAView message handlers
⑻ 急!用C語言斜率判斷五子棋勝負代碼
遍歷每個棋子和其他所有同色棋子 x、y的位置差距的關系。右手坐標系的話,dx == dy就是右上或者左下, dx == -dy的話就是左上或者右下,dx == 0就是上或者下,dy == 0就是左或者右。dx或者dy的絕對值是距離。但是這里一個很難搞的問題就是,過程是比較無序的,你可能先得到它左邊第四個位置有棋子,然後得到第二個位置有棋子之類。還不如基於棋盤判斷。何況棋子多的話,你這樣處理運算量也相應加大,基於棋盤的話每下一個棋子需要的運算量是恆定的。
⑼ C語言求斜率,如果坐標為(2,3)和(2,3)則會導致除0的後果,怎麼解決這種情況
你都不會寫一個if語句啊,判斷兩個數值相等時,斜率直接為0
else再計算其他情況
望採納,謝謝ớ ₃ờ
⑽ c語言程序設計中斜率用什麼表示啊謝謝高手指點……
很簡單啊!
你看y=kx+b
這個是一次函數的通式
k就是斜率,那麼k可以直接定義出來的float型值!