|
5鱼币
问题:输入一个正整数n(3<=n<=10),再输入n个雇员的信息,输出每人的姓名和实发工资(基本工资+浮动工资支出)
- #include<stdio.h>
- void main()
- {
- struct worker {
- char name[10];
- float jbgz;
- float fdgz;
- float zc;
- float sfgz;
- };
-
- int i, n;
- struct worker workers[n];
- printf("请输入人数:");
- scanf("%d", &n);
- for (i = 0;i < n;i++) {
- scanf("%s %f %f %f", workers[i].name, &workers[i].jbgz, &workers[i].fdgz, &workers[i].zc);
- }
- for (i = 0;i < n;i++) {
- workers[i].sfgz = workers[i].jbgz + workers[i].fdgz - workers[i].zc;
- printf("%s实发数 %.2f\n", workers[i].name, workers[i].sfgz);
- }
- }
复制代码
用DEV运行后,没输出结果,VS直接在定义结构体数组时报错有没有大佬帮忙看看是啥问题啊
输入:
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[10];
- float jbgz;
- float fdgz;
- float zc;
- float sfgz;
- };
-
- int i, n;
- printf("请输入人数:");
- scanf("%d", &n);
- struct worker workers[n];
- for (i = 0;i < n;i++) {
- scanf("%f%f%f%s", &workers[i].jbgz, &workers[i].fdgz, &workers[i].zc,workers[i].name);
- //scanf("%s",workers[i].name);
- //scanf("%f%f%f", &workers[i].jbgz, &workers[i].fdgz, &workers[i].zc);
-
- }
- for (i = 0;i < n;i++) {
- workers[i].sfgz = workers[i].jbgz + workers[i].fdgz - workers[i].zc;
- printf("%s实发数 %.2f\n", workers[i].name, workers[i].sfgz);
- }
- }
复制代码
|
最佳答案
查看完整内容
两处错误。
第一处,定义结构体数组的时候还没有给n赋值。。。。
第二处,第一个for循环,scanf输入的时候先给%s赋值,后面几个就没有值了,因为%s是遇到回车才认为结束
第一个问题的解决方法,把定义结构体数组放到给n赋值之后
第二个问题,两种方法:1、把%s放到最后赋值,2、把%s单独拿出来
另外用scanf进行多个变量输入赋值的时候,格式化字符之间最好不要有任何字符。有任何字符都可能因你的输入差异导致出错,例如你 ...
|