结构体入门:工资表问题
问题:输入一个正整数n(3<=n<=10),再输入n个雇员的信息,输出每人的姓名和实发工资(基本工资+浮动工资支出)#include<stdio.h>
void main()
{
struct worker {
char name;
float jbgz;
float fdgz;
floatzc;
float sfgz;
};
int i, n;
struct worker workers;
printf("请输入人数:");
scanf("%d", &n);
for (i = 0;i < n;i++) {
scanf("%s %f %f %f", workers.name, &workers.jbgz, &workers.fdgz, &workers.zc);
}
for (i = 0;i < n;i++) {
workers.sfgz = workers.jbgz + workers.fdgz - workers.zc;
printf("%s实发数 %.2f\n", workers.name, workers.sfgz);
}
}
用DEV运行后,没输出结果,VS直接在定义结构体数组时报错有没有大佬帮忙看看是啥问题啊{:10_266:}
输入:
zhao 240 400 75
qian 360 120 50
sun 560 150 80 两处错误。
第一处,定义结构体数组的时候还没有给n赋值。。。。
第二处,第一个for循环,scanf输入的时候先给%s赋值,后面几个就没有值了,因为%s是遇到回车才认为结束
第一个问题的解决方法,把定义结构体数组放到给n赋值之后
第二个问题,两种方法:1、把%s放到最后赋值,2、把%s单独拿出来
另外用scanf进行多个变量输入赋值的时候,格式化字符之间最好不要有任何字符。有任何字符都可能因你的输入差异导致出错,例如你的这个scanf中各个%f之间最好不要有空格。
#include<stdio.h>
void main()
{
struct worker {
char name;
float jbgz;
float fdgz;
floatzc;
float sfgz;
};
int i, n;
printf("请输入人数:");
scanf("%d", &n);
struct worker workers;
for (i = 0;i < n;i++) {
scanf("%f%f%f%s", &workers.jbgz, &workers.fdgz, &workers.zc,workers.name);
//scanf("%s",workers.name);
//scanf("%f%f%f", &workers.jbgz, &workers.fdgz, &workers.zc);
}
for (i = 0;i < n;i++) {
workers.sfgz = workers.jbgz + workers.fdgz - workers.zc;
printf("%s实发数 %.2f\n", workers.name, workers.sfgz);
}
} sunrise085 发表于 2020-5-28 16:52
两处错误。
第一处,定义结构体数组的时候还没有给n赋值。。。。
第二处,第一个for循环,scanf输入的时 ...
嗯嗯,非常感谢
页:
[1]