记账系统:根据题目字段定义结构体,用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;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!