我接到了這個簡單的任務:
- “矩形”結構必須由 2 個點定義 - 對角線的邊緣。必須設定以下功能: A. 矩形輸入。B. 接收矩形并回傳其面積的函式。C. 接收一個矩形和一個點的函式。如果在矩形內找到點,則該函式回傳 TRUE,否則回傳 FALSE。
這是我的代碼:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <assert.h>
#include <string.h>
// ex1
typedef struct{
double x;
double y;
} Point;
typedef struct{
Point a;
Point b;
} Rect;
void ex1_1(Rect rect1);
double ex1_2(Rect rect1);
int ex1_3(Rect rect1, Point a);
int main()
{
Rect r;
Point p1 = {2, 2}, p2 = {10, 10};
ex1_1(r);
printf("%lf\n", ex1_2(r));
printf("%d\n", ex1_3(r, p1));
printf("%d\n", ex1_3(r, p2));
return 0;
}
void ex1_1(Rect rect1)
{
Point p1, p2;
printf("Enter the bottom left edge (x y): ");
scanf_s("%lf%lf", &p1.x, &p1.y);
printf("Enter the top right edge (x y): ");
scanf_s("%lf%lf", &p2.x, &p2.y);
rect1.a = p1; rect1.b = p2;
}
double ex1_2(Rect rect1)
{
return (rect1.b.x - rect1.a.x) *
(rect1.b.y - rect1.a.y);
}
int ex1_3(Rect rect1, Point p)
{
return rect1.a.x < p.x && p.x < rect1.b.x &&
rect1.a.y < p.y && p.y < rect1.b.y;
}
但是,當我運行我的程式時只列印零,這是為什么?
uj5u.com熱心網友回復:
您正在向ex_1_1函式傳遞一個未初始化的變數,這是未定義的行為。此外,將變數的副本傳遞給函式不會改變rinside的內容main。
傳遞一個指標:
void ex1_1(Rect *rect1);
int main()
{
Rect r;
Point p1 = {2, 2}, p2 = {10, 10};
ex1_1(&r);
...
}
void ex1_1(Rect *rect1)
{
Point p1, p2;
printf("Enter the bottom left edge (x y): ");
scanf("%lf%lf", &p1.x, &p1.y);
printf("Enter the top right edge (x y): ");
scanf("%lf%lf", &p2.x, &p2.y);
rect1->a = p1; rect1->b = p2;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/400316.html
上一篇:簡單地增加TCP序列號并將其分配給C中的發送tcp報頭確認號
下一篇:如何去掉最后一個數字中的逗號?
