检查并修改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 14:35:18 浏览: 45
存在一些问题和可以优化的地方,具体如下:
1. 实发工资应该为浮点数类型,而不是整型。
2. 数组shiji只需要定义为double类型,不需要定义为数组。
3. 姓名长度为小于10的非空字符串,因此可以将name数组定义为char类型,而不是char指针类型。
4. 输出格式要求姓名和实发工资间隔一个空格,而不是换行。
5. 可以在输入时直接计算出实发工资,不需要再定义数组shiji。
修改后的程序如下:
相关问题
给定N个职员的信息,包括姓名、基本工资、浮动工资和支出,要求编写C语言程序顺序从大到小 输出每位职员的姓名和实发工资(实发工资=基本工资+浮动工资-支出)
以下是一个C语言程序的示例,用于根据给定的N个职员的信息,按照实发工资从大到小的顺序输出每位职员的姓名和实发工资:
```c
#include <stdio.h>
typedef struct {
char name[50];
float basicSalary;
float floatingSalary;
float expenditure;
float netSalary;
} Staff;
void InputData(Staff sta[], int n) {
for (int i = 0; i < n; i++) {
printf("请输入第%d位职员的姓名:", i+1);
scanf("%s", sta[i].name);
printf("请输入第%d位职员的基本工资:", i+1);
scanf("%f", &sta[i].basicSalary);
printf("请输入第%d位职员的浮动工资:", i+1);
scanf("%f", &sta[i].floatingSalary);
printf("请输入第%d位职员的支出:", i+1);
scanf("%f", &sta[i].expenditure);
}
}
void Calculate(Staff sta[], int n, float sum[]) {
for (int i = 0; i < n; i++) {
sta[i].netSalary = sta[i].basicSalary + sta[i].floatingSalary - sta[i].expenditure;
sum[i] = sta[i].netSalary;
}
}
void Sort(Staff sta[], int n, float sum[]) {
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-i-1; j++) {
if (sum[j] < sum[j+1]) {
float temp = sum[j];
sum[j] = sum[j+1];
sum[j+1] = temp;
Staff tempStaff = sta[j];
sta[j] = sta[j+1];
sta[j+1] = tempStaff;
}
}
}
}
void OutputData(Staff sta[], int n) {
printf("按照实发工资从大到小的顺序输出每位职员的姓名和实发工资:\n");
for (int i = 0; i < n; i++) {
printf("姓名:%s,实发工资:%.2f\n", sta[i].name, sta[i].netSalary);
}
}
int main() {
int n;
printf("请输入职员的个数:");
scanf("%d", &n);
Staff sta[n];
float sum[n];
InputData(sta, n);
Calculate(sta, n, sum);
Sort(sta, n, sum);
OutputData(sta, n);
return 0;
}
```
用c语言给定N个职员的信息,包括姓名、基本工资、浮动工资和支出,要求编写程序顺序输出每位职员的姓名和实发工资(实发工资=基本工资+浮动工资-支出)。输入格式: 输入在一行中给出正整数N。随后N行,每行给出一位职员的信息,格式为"姓名 基本工资 浮动工资 支出",中间以空格分隔。其中"姓名"为长度小于10的不包含空白字符的非空字符串,其他输入、输出保证在单精度范围内。输出格式: 按照输入顺序,每行输出一位职员的姓名和实发工资,间隔一个空格,工资保留2位小数。
好的,以下是使用C语言编写的程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
char name[11];
float base_salary, floating_salary, expense, real_salary;
scanf("%s %f %f %f", name, &base_salary, &floating_salary, &expense);
real_salary = base_salary + floating_salary - expense;
printf("%s %.2f\n", name, real_salary);
}
return 0;
}
```
首先读入职员总数n,然后循环n次,每次读入职员的姓名、基本工资、浮动工资和支出,并计算实发工资。最后使用`printf()`输出姓名和实发工资,其中`%.2f`表示保留两位小数输出实发工资。
相关推荐
![c](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)