关于全局变量的问题
无聊,写了一个家庭理财管理系统,如果选择进账,和支出,全局变量sum的值不管怎么样都是0.请高手解答程序代码:
#include <stdio.h> #include <stdlib.h> #include <conio.h> float sum=0.0; void password(); void help(); void lock(); void calculator(); void inquire(); void ncome(); void disburse(); void activity(); void savedata(); void load(); void main() { printf("\n"); int x; printf("\n******************************\n"); printf("\n家庭理财系统1.0 by sunyh1999\n"); printf("\n******************************\n"); printf("请选择管理项目:\n"); printf("1.详细账目输入\n"); printf("2.查询当前余额\n"); printf("3.小工具(计算器)\n"); printf("4.锁定管理系统\n"); printf("5.帮助\n"); printf("6.保存数据\n"); printf("7.导入数据\n"); printf("8.退出\n"); scanf("%d",&x); switch(x) {case 1: activity();break; case 2: inquire(); break;/*这地方敲错了少了括号*/ case 3: calculator();break; case 4: lock();break; case 5: help();break; case 6: savedata();break; case 7: load();break; case 8: printf("欢迎再次使用该系统!\n");break;break; default:printf ("输入错误!");break; break; } } void help() { printf("1.首次使用本系统时录入家庭支出输入信息后请及时保存!\n"); printf("2.保存文件默认路径和本软件是同一路径,文件名为“管理信息”.\n"); printf("3.用本系统录入过信息且保存成功,再次查看管理信息时,请先导入数据后再查看\n"); printf("4.本系统仅限交流之用,严禁用于商业,版权所有。\n\t\t\t\t\t\t编者:sunyh1999\n\t\t\t\t\t\t2010.7.30\n"); getch(); system("cls"); main(); } void lock() { long int a; printf("请输入密码!\n"); scanf("%d",&a); if(a==123456) {printf("密码输入正确,欢迎进入家庭理财系统!\n\n\n\n\n");main();} else {printf("密码输入错误!\n");} } void calculator() { int a,c; char b; printf("请输入要计算的式子:\n"); scanf("%d%c%d",&a,&b,&c); switch(b) { case '+':printf("%d",a+c);main();break; case '-':printf("%d",a-c);main();break; case '*':printf("%d",a*c);main();break; case '/':if(c==0) { printf("除数不能是负数");main(); } else printf("%f\n",(float)a/c);break; default: printf("输入有误");main(); } } void inquire() {printf("当前余额为:%d元\n",sum); getchar(); main(); } void ncome()/*多了个分号*/ {float x; printf("请输入进账数额:\n"); scanf("%f",&x); sum=sum+x; printf("按任意键返回......"); getch(); main(); } void disburse() {float x; printf("请输入支出数额:\n"); scanf("%f",&x); sum=sum-x; printf("按任意键返回......."); getch(); main(); } void activity() { int x; printf("***********************************\n"); printf("1.支出 2.进账 3.退出\n"); printf("***********************************\n"); scanf("%d",&x); switch(x) { case 1: disburse();break;activity(); case 2: ncome();break;activity(); case 3: printf("欢迎使用,再见!\n");main();break; case 4: inquire();break;activity(); } } void password() { long int a;int password=0; printf("请输入管理员密码!\n"); scanf("%d",&a); if (a==123456) { printf("密码输入正确,欢迎进入家庭理财系统!\n\n\n\n\n"); password++; if(password==1) return; } else { {printf("密码输入错误!\n");exit(0);} } } void savedata() { FILE *fp; if((fp=fopen("管理信息.txt","wb"))==NULL) {printf("不能打开\n"); return; } else {fwrite(&sum,sizeof(float),1,fp); fclose(fp); getch(); main(); } } void load() {FILE *fp; int i=0; int j; if((fp=fopen("管理信息.txt","rb"))==NULL) {printf("打不开文件!\n"); main(); } else {if(fp!=NULL) while(!feof(fp)) {fread(&sum+i,sizeof(float),1,fp); i++; } fclose (fp); i--; printf("读取成功!读取了%d个记录,任意键返回!",i); j=i; getch(); main(); } }