备注:系统要求使用结构体存储记账信息。ID由5位数字组成。编程实现系统功能。
2条回答 默认 最新
- 技术专家团-小桥流水 2022-11-02 22:27关注
记账系统:根据题目字段定义结构体,用switch语句执行相应的操作即可,运行结果:
代码:
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <stdlib.h> #include <string.h> //定义结构体 typedef struct _stuser { int id; //用户ID char name[12]; //用户名 int income; //收入 int cost; //支出 }StUser; //输入数据 void input(StUser a[], int n) { int i; for (i = 0; i < n; i++) { printf("请输入用户%d的用户ID、用户名、收入和支出:", i + 1); scanf("%d %s %d %d", &a[i].id, a[i].name, &a[i].income, &a[i].cost); } } //根据用户名字典序逆序排列后输出 void sort(StUser a[], int n) { int i, j; StUser t; for (i = 0; i < n - 1; i++) { for (j = 0; j < n - 1 - i; j++) { if (strcmp(a[j].name, a[j + 1].name) < 0) { t = a[j]; a[j] = a[j + 1]; a[j + 1] = t; } } } //输出 printf("根据用户名字典序逆序排列后:\n"); for (i = 0; i < n; i++) printf("%5d %10s %8d %8d\n", a[i].id, a[i].name, a[i].income, a[i].cost); } //查找 void search(StUser a[], int n) { char name[12]; int i = 0, flag = 0; printf("请输入需要查找的用户名:"); scanf("%s", name); for (i = 0; i < n; i++) { if (strcmp(a[i].name, name) == 0) { flag = 1; printf("%5d %10s %8d %8d\n", a[i].id, a[i].name, a[i].income, a[i].cost); } } if (flag == 0) printf("查无此人\n"); } //计算人均收入和支出 double calculate(StUser a[], int n) { double incoume = 0, cost = 0; int i; for (i = 0; i < n; i++) { incoume += a[i].income; cost += a[i].cost; } incoume /= n; cost /= n; printf("人均收入:%.2f,人均支出:%.2f\n", incoume, cost); //保留两位小数 return cost; //返回平均支出 } //显示所有支出大于平均支出的账户 void showBig(StUser a[], int n, double cost) { int i = 0; printf("大于平均支出的用户记账信息:\n"); for (i = 0; i < n; i++) { if (a[i].cost > cost) printf("%5d %10s %8d %8d\n", a[i].id, a[i].name, a[i].income, a[i].cost); } } //输出系统中的所有记账信息 void showAll(StUser a[], int n) { int i = 0; printf("系统中的所有记账信息:\n"); for (i = 0; i < n; i++) { printf("%5d %10s %8d %8d\n", a[i].id, a[i].name, a[i].income, a[i].cost); } } int main() { int flag = 1; StUser a[10]; int n = 0; //人数 double avecost = 0; int choise; while (flag) { system("cls"); //清屏 printf("1.Input record\n"); printf("2.Sort and list records in reverse order by user name\n"); printf("3.Search records by user name\n"); printf("4.Calculate and list per capita income and expenses\n"); printf("5.List records which have more expenses than per capita expenses\n"); printf("6.List all records\n"); printf("0.Exit\n"); printf("Please enter you choise:"); scanf("%d", &choise); switch (choise) { case 1: printf("请输入用户数量:"); scanf("%d", &n); input(a, n); break; case 2: sort(a, n); break; case 3: search(a, n); break; case 4: avecost = calculate(a, n); break; case 5: if (avecost == 0) printf("请先计算平均支出\n"); else showBig(a,n,avecost); break; case 6: showAll(a, n); break; case 0: flag = 0; break; } if(flag) system("pause"); } return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 5无用