检查并修改c语言程序:给定N个职员的信息,包括姓名、基本工资、浮动工资和支出,要求编写程序顺序输出每位职员的姓名和实发工资(实发工资=基本工资+浮动工资-支出)。 输入格式: 输入在一行中给出正整数N。随后N行,每行给出一位职员的信息,格式为“姓名 基本工资 浮动工资 支出”,中间以空格分隔。其中“姓名”为长度小于10的不包含空白字符的非空字符串,其他输入、输出保证在单精度范围内。 输出格式: 按照输入顺序,每行输出一位职员的姓名和实发工资,间隔一个空格,工资保留2位小数。 输入样例: 3 zhao 240 400 75 qian 360 120 50 zhou 560 150 80 输出样例: zhao 565.00 qian 430.00 zhou 630.00。#include<stdio.h> struct xinxi { char name[10]; int basegz; int movegz; int out; }; int main() { int n,i,j; double shiji[10]; struct xinxi xin[10]; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%s %d %d %d",xin[i].name,&xin[i].basegz,&xin[i].movegz,&xin[i].out); shiji[i] = (xin[i].basegz + xin[i].movegz)-xin[i].out; } for(j=0;j<n;j++) { printf("%s %.2lf \n",xin[j].name,shiji[j]); } }
时间: 2024-04-01 18:35:18 浏览: 125
存在一些问题和可以优化的地方,具体如下:
1. 实发工资应该为浮点数类型,而不是整型。
2. 数组shiji只需要定义为double类型,不需要定义为数组。
3. 姓名长度为小于10的非空字符串,因此可以将name数组定义为char类型,而不是char指针类型。
4. 输出格式要求姓名和实发工资间隔一个空格,而不是换行。
5. 可以在输入时直接计算出实发工资,不需要再定义数组shiji。
修改后的程序如下:
阅读全文