gpt4 book ai didi

c - C 编译器正在打印负值

转载 作者:行者123 更新时间:2023-11-30 21:21:33 25 4
gpt4 key购买 nike

问题:正在打印负值

            #include<stdio.h>
//structure defination
struct complex
{
float r;
float i;
};
typedef struct complex CMPLX;
// addition is done here
CMPLX add(CMPLX a,CMPLX b)
{
CMPLX c; //structure of c
c.r = a.r+b.r;
c.i=a.i+b.i;
return c;

}
//function to read
CMPLX read(CMPLX r)
{

printf("enter real part of complex number ");
scanf("%f",&r.r);
printf("\n");
printf("enter imaganary part of complex number ");
scanf("%f",&r.i);
printf("\n");
return r;
}
//function to write
void write(CMPLX w)
{
printf("real part= %f and imaginary part is %f",w.r,w.i);
printf("\n");

}
void main()
{
CMPLX a;
CMPLX b;
CMPLX c;
printf("\n");
printf("enter first complex number");
printf("\n");
read(a);
printf("complex numbes is");
printf("\n");
write(a);
printf("\n");
printf("enter second complex number");
printf("\n");
read(b);
printf("complex numbes is");
write(b);
printf("\n");
c=add(a,b);
printf("added complex number");
printf("\n");
write(c);
}

最佳答案

read(a); 应该是 a = read();

您不使用返回值(参数在 C 中按值传递),因此您在 read() 中输入的值不会分配给 main ' s a 。您看到的值将基于存储 a 的内存中的任何垃圾。

此外,read 的参数没有任何作用,因为您只是将其视为局部变量。相反,只需在 read 中声明一个局部变量 r,然后返回该变量。

如果您使用的是 POSIX 系统,最好将您的函数命名为 readwrite 以外的名称,因为它们可能与这些名称的 POSIX 函数发生冲突。

另一个好主意是检查 scanf 是否成功或失败(在您的情况下成功时返回 1)。如果您不这样做,那么输入字母将导致您的程序出现故障。

关于c - C 编译器正在打印负值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25051198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com