錯誤代碼:
struct emp s[10] // 錯誤:結構體類型 emp 尚未定義
{
char name[10];
float jbg, fdg, zc;
};
// 方式 1:先定義結構體類型
struct emp {
char name[10];
float jbg, fdg, zc;
};
struct emp s[10]; // 聲明變量
// 方式 2:定義同時聲明 (推薦)
struct emp {
char name[10];
float jbg, fdg, zc;
} s[10];
// 方式 3:typedef 簡化
typedef struct {
char name[10];
float jbg, fdg, zc;
} Emp;
Emp s[10];
struct emp s[10] 時,嘗試查找 emp 標籤對應的結構體定義
#include
struct Emp {
char name[10];
float jbg, fdg, zc;
};
int main() {
struct Emp s[10];
int n, i;
printf("n="); scanf("%d", &n);
for (i = 0; i < n; i++)
scanf("%s %f %f %f", s[i].name, &s[i].jbg, &s[i].fdg, &s[i].zc);
for (i = 0; i < n; i++)
printf("%5s 實發工資:%7.2f\n", s[i].name, s[i].jbg + s[i].fdg - s[i].zc);
return 0;
}
原代碼 scanf("%s%f%f%f", ...) 缺少空格分隔符,若輸入 Tom 1000 200 300 會因無分隔符導致解析錯誤。建議 scanf("%s %f %f %f", ...)。