#include <stdio.h>
#include <stdlib.h>
typedef struct moneydata
{
double n;
struct moneydata* next;
}NUM;
//main
int main()
{
NUM* initial();
NUM* build(NUM* money);
void input(NUM* income,NUM* payment);
void output(NUM* income,NUM* payment);
double incomeSum(NUM* income);
double paymentSum(NUM* income);
double toplimit;
double SUM;
char ch;
NUM *income,*payment;
printf("enter your payment toplimit\n");
scanf("%lf",&toplimit);
fflush(stdin);
printf("*************************************************\n\n");
income=initial();
payment=initial();
for(;;)
{
printf("please choose what you want to do\n");
printf("1.input 2.analyse 3.quit\n");
scanf("%c",&ch);
fflush(stdin);
printf("*************************************************\n\n");
switch(ch)
{
//输入函数,对收入和支出的输入处理
case '1':
input(income,payment);
printf("*************************************************\n\n");
break;
//数据分析,包括输出收入总和,支出总和,对收入支出比较,输出利润和提醒是否要存钱了
case '2':
printf("please choose what you want to do\n");
printf("1.output income's sum 2.output payment's sum 3.compare with toplimit\n");
scanf("%c",&ch);
fflush(stdin);
switch(ch)
{
case '1':
SUM=incomeSum(income);
printf("%f\n",SUM);
break;
case '2':
SUM=paymentSum(payment);
printf("%f\n",SUM);
break;
case '3':
double profit;
SUM=incomeSum(income);
profit=SUM;
printf("your income's sum is:");
printf("%f\n",SUM);
SUM=paymentSum(payment);
printf("your payment's sum is:");
printf("%f\n",SUM);
profit=profit - SUM;
printf("your profit is:");
printf("%f\n",profit);
if(profit<=0)
{
printf("you shoule save money!!\n");
}
else
{
printf("you can spend your money as you like\n");
}
break;
}
printf("*************************************************\n\n");
break;
case '3':
system("pause");
exit(0);
}
}
return 0;
}
//table initial
//链表初始化
NUM* initial()
{
NUM* money;
money=(NUM*)malloc(sizeof(NUM));
money->n=0;
money->next=money;
return money;
}
//build
//链表扩展
NUM* build(NUM* money)
{
NUM* temp;
temp=(NUM*)malloc(sizeof(NUM));
temp->n=0;
money->next=temp;
temp->next=money;
return temp;
}
//input
//数据输入
void input(NUM* income,NUM* payment)
{
NUM* build(NUM* money);
printf("please choose what you want to enter:\n");
printf("1.income 2.payment\n");
char ch;
NUM* temp1,*temp2;
scanf("%c",&ch);
fflush(stdin);
temp1=income;
temp2=payment;
switch(ch)
{
case '1':
printf("please enter your income today:\n");
temp1=build(temp1);
scanf("%lf",&temp1->n);
fflush(stdin);
break;
case '2':
printf("please enter your payment today:\n");
temp2=build(temp2);
scanf("%lf",&temp2->n);
fflush(stdin);
break;
default :printf("enter ERROR!\n");
return ;
}
}
//output
//数据输出
void output(NUM* income,NUM* payment)
{
printf("please choose what you want to do\n");
printf("1.output all income 2.output all payment\n");
char ch;
NUM *temp1,*temp2;
scanf("%c",&ch);
temp1=income;
temp2=payment;
switch(ch)
{
case '1':
for(;temp1!=income;temp1=temp1->next)
{
printf("%f",temp1->n);
}
break;
case '2':
for(;temp2!=payment;temp2=temp2->next)
{
printf(" %f",temp2->n);
}
break;
default :printf("output ERROR!\n");
}
printf("\n");
}
//income calculate
//收入计算(收入和支出在不同的链表中,同时处理要返回两个值,这不可能)
//可以用引用,但引用是C++里面有的,楼主要求是C,所以就不用引用了,而且引用一般出错率很高
double incomeSum(NUM* income)
{
double sum;
NUM* temp;
temp=income->next;
sum=0;
for(;temp!=income;temp=temp->next)
{
sum=sum + temp->n;
}
return sum;
}
//payment calculate
//支出计算
double paymentSum(NUM* payment)
{
double sum;
NUM* temp;
temp=payment->next;
sum=0;
for(;temp!=payment;temp=temp->next)
{
sum=sum + temp->n;
}
return sum;
}
还有啥不明白的地方可以问我,写个程序不容易啊亲,满意请采纳,程序本身是不难写的,只是有点麻烦……
这个程序只能做到对数据的录入和输出,比较收入支出的大小,想要其它功能再说吧。
温馨提示:内容为网友见解,仅供参考
C语言编写一个程序,急用!!高分悬赏(正确答案追加分数)
include <stdio.h> include <stdlib.h> include <conio.h> include void Menu();void Plus();void Minus();void Multiply();void Dir();int main(){ int n, flag = 0;while(1){ Menu();do { flag = 0;scanf("%d", &n);switch(n){ case 1: Plus(); break;case 2: Min...
用C语言编程组合与排列的生成,很着急。。高分悬赏。下周要交。悬赏可以...
include <stdio.h> int m,n,k;int array[1001];int flag[1001];void combination(int now,int lenght);void arrange();int main(){ scanf("%d %d", &m, &n);combination(1, 0);k = 0;arrange(0);printf("总共有%d种排列方式\\n", k);return 0;} void combination(int now, int...
C语言大神帮帮我啊!!帮帮忙,我悬赏高分帮帮忙!!在线等待
long count=0;void Swap(int &a,int &b){ int temp=a;a=b;b=temp;} void Perm(int list[],int k,int m)\/\/k表示前缀的位置,m是要排列的数目.{ if(k==m-1)\/\/前缀是最后一个位置,此时打印排列数.{ int tag=0;for(int i=0;i<m;i++){ if(list[i]==i+1){ tag=1;brea...
C语言考试填空,急啊~~~高分悬赏~~据说是福建师范大学以前的试题,会的帮...
11.表示条件:10<x<100或x<0的C语言表达式是 【(x>10&&x<100)||x<10 】
急!!!LoginUsers.exe的问题,在线等,高分悬赏
loginusers.exe A进入安全模式,regedit—编辑—分别查找 1.termsv.exe 2.loginusers.exe 删之 B在C盘查找1.termsv.exe 2.loginusers.exe,删之 C:\\\\Documents and Settings\\\\All Users\\\\Application Data\\\\Real 我不用REAL ,也删之。重启 ,OK。不知那个WBD搞的这个玩意,浪费了我一晚上。
高分悬赏Java程序,急!!!
高分悬赏Java程序,急!!!参考题目:1.做一个写字板,要求本软件用户必须注册方可运行(注册后下次启动无需在注册,第一次使用必须注册)。2.五子棋双人对弈程序。要求:•按开始按钮双方开始下棋,当在已... 参考题目:1.做一个写字板,要求本软件用户必须注册方可运行(注册后下次启动无需在注册,第一次使用必须注册)...
急急急!如图,第九题详解!必高分悬赏!
回答:采纳后告诉你
求高手解答一些简单的C语言题目!(高分悬赏)
1、Before GlobalPlusPlus(), it is 1 Before ++, it is 1 After ++, it is 2 After GlobalPlusPlus(), it is 2 2、over!3、(1)printf("Input a year:");scanf("%d",&year);(2)(0==year%4 && 0!=year%100) || 0==year%400 4、(1)s[i]!='\\0'(2)s[j]=s[i];5...
C语言基础N多题~~~高分悬赏
14. C语言程序的基本单位是()A)程序行 B)语句 C)函数 D)字符 15. 为表示关系x>=y>=z,应使用C语言表达式()A) (x>=y) && (y>=z) B) (x>=y) AND (y>=z)C) (x>=y>=z) D) (x>=y) & (y>=z)16. 设 int a=0,b=5,c=2;选择可执行x++ 的语句是()A)if(a)...
高分悬赏急求哪位单片机C语言编程高手帮我翻译这个程序,由于要提问到...
从你的程序上看,液晶应该由上下两块显示Page组成,然后上面的Page显示4个汉字的上半段,下面显示4个汉字的下半段,所以有8个Page,和你的void lcd_clear(void) 函数也就对应了。void dispm_hz_down(uchar code * hz)