lead[10]空间都分配了,你没输入那么多数据,但全部输出。没输入部分内存有其它无效数据没覆盖,所以输出内容是未知的。
修改如下,供参考对照:
#include <stdio.h>
struct PERSON {
char name[10];
double a, b, c, income;
}lead[50];
int main()
{
int n, i;
scanf("%d", &n);
for (i = 0; i < n; i++) { // 输入数据
scanf("%s %lf %lf %lf", lead[i].name, &lead[i].a, &lead[i].b, &lead[i].c);
lead[i].income = lead[i].a + lead[i].b + lead[i].c;
}
for (i = 0; i < n; i++) // 输出
printf("%-10s: %lf\n", lead[i].name, lead[i].income);
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:对于代码输出与预期不符合的问题,可能的原因有很多,以下是一些可能的原因和解决方法:
代码逻辑错误:需要检查代码的实现是否符合预期,是否漏掉了某些情况的处理,是否有语法错误等。
数据类型错误:需要检查变量的数据类型是否正确,是否需要进行强制类型转换。
参数传递错误:需要检查函数调用时参数列表中的参数顺序和类型是否正确,是否需要传递指针或引用。
内存泄漏:需要检查代码中是否存在未释放的内存,是否存在循环引用等情况。
系统错误提示被屏蔽:需要根据具体的编程环境和工具,检查系统日志、调试信息等是否被屏蔽了,是否需要进行设置或调整。
针对具体的问题,可以考虑以下解决方式:
通过调试工具或输出调试信息来定位问题,例如使用gdb调试工具、增加printf语句等方式。
分析代码思路,逐步排除不可能的情况,缩小问题范围。
借鉴已有的类似问题或解决方案,在网上搜索相关资料、咨询相关专业人士等方式。
重新审视需求和功能实现,是否需要优化或重构代码。
如果以上方法都不能解决问题,那么可能需要重构代码、修改编程环境或工具、修复系统错误等措施,具体要根据具体情况进行分析和解决。