嘗試撰寫可以進行復數計算的 ac 程式。程式必須使用這個結構:
typedef struct Complex_ {
double RealPart;
double ImagPart;
} Complex;
它必須使用一個函式來讀取復數的用戶輸入,使用另一個函式將它們相加,另一個函式將它們相乘,等等。我現在正在嘗試使用該函式來添加數字,我正在嘗試弄清楚如何做到這一點。這是讀取用戶輸入的功能:
Complex read_complex(void) {
Complex user1, user2;
printf("Enter first complex number: ");
scanf("%lf %lf", &user1.RealPart, &user1.ImagPart);
printf("Enter the second complex number: ");
scanf("%lf %lf", &user2.RealPart, &user2.ImagPart);
return;
}
這就是我到目前為止添加復數的方法:
Complex add_complex(Complex z1, Complex z2) {
Complex z3;
z3 = z1 z2;//error on this line
return(z3);
}
該函式必須回傳 z3,并且 z3 需要等于 z1 z2,并且 z1 和 z2 必須是 Complex 型別的變數。我不確定如何使其與這些規范一起作業,因為您無法使用結構變數進行算術運算。
uj5u.com熱心網友回復:
您不能添加或減去資料結構。
Complex add_complex(Complex z1, Complex z2) {
Complex z3;
z3.RealPart = z1.RealPart z2.RealPart;
z3.ImagPart = z1.ImagPart z2.ImagPart;
return(z3);
}
uj5u.com熱心網友回復:
不是您要問的問題,而是您read_complex顯示的功能不起作用。建議更改為以下內容
#include <stdbool.h>
bool read_complex(Complex* user1, Complex* user2)
{
bool inputValid = false;
// weak check for validity, a non-NULL pointer isn't necessarily
// valid. In fact, probably better to skip this check and instead
// document/accept UB if user1 and/or user2 are not valid pointers.
if (user1 != NULL && user2 != NULL)
{
printf("Enter first complex number: ");
if (scanf("%lf %lf", &(user1->RealPart), &(user1->ImagPart)) == 2)
{
printf("Enter the second complex number: ");
if (scanf("%lf %lf", &(user2->RealPart), &(user2->ImagPart)) == 2)
{
inputValid = true;
} // else, print error message?
} // else, print error message?
}
return inputValid;
}
scanf回傳一個int指示與提供的格式說明符匹配的輸入數量。每個輸入應該是 2,如果不是,你就知道有問題。read_complex如果回傳 ,的呼叫者可以決定下一步做什么false。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/341535.html
下一篇:text[i]的資料型別是什么?
