想问问大家缺少的主函数应该写在哪里怎么写?是写int main还是写void main?
另外这里不知道是不是写的有问题,跑完之后报错,没法子识别point
#include<stdio.h>
#include<math.h>
struct Point{
double x;
double y;
};
//计算两点之间的距离
double distance(Point p1, Point p2){
float x,y;
float d;
x = fabs(p1.x-p2.x);
y = fabs(p1.y-p2.y);
d = sqrt(x*x+y*y);
return d;
}
//计算两组点之间的相似性
double getSimilitude(Point arr1[], Point arr2[],int n){
int i;
double simi=0.0;
for(i=0;i<n;++i){
simi+= distance(arr1[i],arr2[i]);
}
return simi;
}
#include <stdio.h>
#include <math.h>
struct Point {
double x;
double y;
};
double distance(struct Point p1, struct Point p2) {
float x, y, d;
x = fabs(p1.x - p2.x);
y = fabs(p1.y - p2.y);
d = sqrt(x * x + y * y);
return d;
}
double getSimilitude(struct Point arr1[], struct Point arr2[], int n) {
int i;
double simi = 0.0;
for(i = 0; i < n; ++i) {
simi += distance(arr1[i], arr2[i]);
}
return simi;
}
int main() {
struct Point p1 = {1.0, 2.0};
struct Point p2 = {3.0, 4.0};
double d = distance(p1, p2);
printf("Distance: %lf", d);
struct Point arr1[] = {{1.0, 2.0}, {3.0, 4.0}};
struct Point arr2[] = {{5.0, 6.0}, {7.0, 8.0}};
double simi = getSimilitude(arr1, arr2, 2);
printf("Similarity: %lf", simi);
return 0;
}
typedef struct
{
double x;
double y;
} Point;
【以下回答由 GPT 生成】
缺少的主函数应该写在最后面。以下是一个可以正常运行的主函数示例:
#include <stdio.h>
#include <math.h>
struct Point{
double x;
double y;
};
double distance(struct Point p1, struct Point p2){
double x, y;
double d;
x = fabs(p1.x - p2.x);
y = fabs(p1.y - p2.y);
d = sqrt(x * x + y * y);
return d;
}
double getSimilitude(struct Point arr1[], struct Point arr2[], int n){
int i;
double simi = 0.0;
for(i = 0; i < n; i++){
simi += distance(arr1[i], arr2[i]);
}
return simi;
}
int main(){
// 创建两组点的数组
struct Point arr1[3];
struct Point arr2[3];
// 添加点的坐标值
arr1[0].x = 1.0;
arr1[0].y = 2.0;
arr1[1].x = 3.0;
arr1[1].y = 4.0;
arr1[2].x = 5.0;
arr1[2].y = 6.0;
arr2[0].x = 2.0;
arr2[0].y = 3.0;
arr2[1].x = 4.0;
arr2[1].y = 5.0;
arr2[2].x = 6.0;
arr2[2].y = 7.0;
// 调用getSimilitude函数计算相似性
double similarity = getSimilitude(arr1, arr2, 3);
printf("Similarity: %f\n", similarity);
return 0;
}
可能存在的问题: 1. 在distance
和getSimilitude
函数中,结构体Point
被错误地使用为Point
而不是struct Point
。必须更正为double distance(struct Point p1, struct Point p2)
和double getSimilitude(struct Point arr1[], struct Point arr2[], int n)
。 2. 在代码结束时缺少一个返回值,加上return 0;
语句。
以上是修改后的正确代码。
void main()
int main()
都可以
代码
#include <stdio.h>
#include <math.h>
typedef struct Point {
double x;
double y;
} Point;
// 计算两点之间的距离
double distance(Point p1, Point p2) {
float x, y, d;
x = fabs(p1.x - p2.x);
y = fabs(p1.y - p2.y);
d = sqrt(x * x + y * y);
return d;
}
// 计算两组点之间的相似性
double getSimilitude(Point arr1[], Point arr2[], int n) {
int i;
double simi = 0.0;
for (i = 0; i < n; ++i) {
simi += distance(arr1[i], arr2[i]);
}
return simi;
}
// 主函数
int main() {
// 定义两组点的数组
Point arr1[3] = {{1.0, 2.0}, {3.0, 4.0}, {5.0, 6.0}};
Point arr2[3] = {{2.0, 3.0}, {4.0, 5.0}, {6.0, 7.0}};
// 调用getSimilitude函数计算相似性
double simi = getSimilitude(arr1, arr2, 3);
// 打印
printf("两组点之间的相似性为 %.2f\n", simi);
// 返回0表示程序正常结束
return 0;
}
首先说明两个问题:
struct Point
定义,在c中只能struct Point a
来定义一个变量,而在c++中struct与class类似,可以Point a
来定义一个变量int main(int argc, char *argv[])
#include <stdio.h>
#include <math.h>
struct Point {
double x;
double y;
};
double distance(Point p1, Point p2) {
float x, y, d;
x = fabs(p1.x - p2.x);
y = fabs(p1.y - p2.y);
d = sqrt(x * x + y * y);
return d;
}
double getSimilitude(Point arr1[], Point arr2[], int n) {
int i;
double simi = 0.0;
for(i = 0; i < n; ++i) {
simi += distance(arr1[i], arr2[i]);
}
return simi;
}
int main(int argc, char *argv[]) {
struct Point p1 = {11.0, 12.0};
struct Point p2 = {31.0, 41.0};
double d = distance(p1, p2);
printf("Distance: %lf\n", d);
struct Point arr1[] = {{11.0, 12.0}, {23.0, 34.0}};
struct Point arr2[] = {{35.0, 26.0}, {37.0, 48.0}};
double simi = getSimilitude(arr1, arr2, 2);
printf("Similarity: %lf\n", simi);
return 0;
}
用int main,这是基础主库
struct 结构:
struct{
变量
};
仅供参考,谢谢!
#include<stdio.h>
#include<math.h>
struct Point
{
double x;
double y;
};
// 计算两点之间的距离,不能用标签Point作为类型名称这是错误用法
double distance(struct Point p1, struct Point p2)
{
double x, y;
double d;
x = fabs(p1.x - p2.x);
y = fabs(p1.y - p2.y);
d = sqrt(x * x + y * y);
return d;
}
// 计算两组点之间的相似性
double getSimilitude(struct Point arr1[], struct Point arr2[], int n)
{
int i;
double simi = 0.0;
for (i = 0; i < n; ++i)
{
simi += distance(arr1[i], arr2[i]);
}
return simi;
}
// 标准C主函数写法如下,不要用void作为返回值了。
int main(void)
{
// 定义两个点
struct Point p1 = { 1.20, 3.60 }, p2 =
{5.2, 7.82};
// 定义两组点的数组
struct Point arr1[] = { {1.5, 2.0}, {3.62, 4.0}, {5.0, 6.0}, {8.2, 9.6} };
struct Point arr2[] = { {21.0, 13.0}, {4.0, 15.0}, {6.20, 7.0}, {12.32, 14.90} };
// 调用
// distance函数和getSimilitude函数分别求两点间距离和两组点的相似性,结果直接输出。
printf
("点(%.2lf,%.2lf)到点(%.2lf,%.2lf)之间的距离为:%.2lf\n两组点之间的相似性为 %.2lf\n",
p1.x, p1.y, p2.x, p2.y, distance(p1, p2), getSimilitude(arr1, arr2, 4));
return 0;
}
主函数是写int main而不是void main
typedef struct Point {
double x;
double y;
} Point;
当然是int main表示有返回值,所以记得return 0,另外我看你的代码问题,
int main() {
struct Point p1, p2;
// 使用结构体进行计算 double dist = distance(p1, p2);
double sim = getSimilitude(p1, p2);
// 打印结果 printf("距离:%f\n", dist);
printf("相似度:%f\n", sim);
return 0;
}
在C/C++中,主函数应该写为int main()
,而不是void main()
。主函数是程序的入口点,它在程序开始运行时被调用。正确的主函数声明应该如下:
int main() {
// Your code here
return 0;
}
关于你提供的代码,有一些问题需要注意:
主函数的缺失: 你的代码中没有主函数。在主函数内部,你可以调用其他函数,包括distance
和getSimilitude
函数。确保在主函数中创建适当的点数组并调用相应函数。
Point
结构体的大小写问题: 你定义的结构体是struct Point
,但在函数参数和函数体中使用的是小写的point
。确保结构体名称大小写一致。
距离计算函数参数的类型: 你的distance
函数的参数类型是Point
,但是在函数体内使用了float
类型。确保参数类型一致,否则会导致类型错误。
getSimilitude
函数的参数: 你的getSimilitude
函数使用了两个Point
数组作为参数,但是在调用函数时没有传递数组。确保在调用函数时传入正确的数组。
以下是修复后的代码示例:
#include<stdio.h>
#include<math.h>
struct Point {
double x;
double y;
};
double distance(Point p1, Point p2) {
double x, y, d;
x = fabs(p1.x - p2.x);
y = fabs(p1.y - p2.y);
d = sqrt(x * x + y * y);
return d;
}
double getSimilitude(Point arr1[], Point arr2[], int n) {
int i;
double simi = 0.0;
for (i = 0; i < n; ++i) {
simi += distance(arr1[i], arr2[i]);
}
return simi;
}
int main() {
// Create and initialize arrays of points
Point arr1[10]; // Example size, modify as needed
Point arr2[10]; // Example size, modify as needed
// Fill in the arrays with points
// Call the getSimilitude function and print the result
double similarity = getSimilitude(arr1, arr2, 10); // Modify size accordingly
printf("Similarity: %lf\n", similarity);
return 0;
}
请根据你的具体需求和数据调整代码中的数组大小等参数。另外,确保所有函数的参数和调用都正确匹配。