标签:std 常量 exit 初始 oid 不能 detail count span
1 #include<stdio.h> 2 #include<string.h> 3 //定义一个结构体 4 struct MyAccount{ 5 double leftMoney; //余额 6 char accountDetail[3000]; //账户明细 7 }; 8 9 //定义相关的变量---全局变量 10 char isout = ‘ ‘; 11 int loop = 1; 12 char key = ‘ ‘; 13 double money=0.0;//收入或支出的金额 14 char item[100]=" "; 15 char reason[100]=" "; //收入或支出说明 16 17 18 //登记收入功能 19 void importRed(struct MyAccount* myaccount) { 20 //printf("登记收入\n");break; 21 printf("请输入一笔收入:"); 22 scanf("%lf", &money); 23 printf("请输入收入来源:"); 24 scanf("%s", reason); 25 getchar(); 26 (*myaccount).leftMoney += money; 27 sprintf(item, "收入\t%.2f\t\t%.2f\t\t%s\n", money, (*myaccount).leftMoney, reason); 28 strcat((*myaccount).accountDetail, item); 29 } 30 31 32 //登记支出功能 33 void outputRed(struct MyAccount* myaccount) { 34 printf("请输入一笔支出:"); 35 scanf("%lf",&money); 36 getchar(); 37 if (money > (*myaccount).leftMoney) { 38 printf("余额不足\n"); 39 return; 40 } 41 printf("请输入支出去向:"); 42 scanf("%s", reason); 43 getchar(); 44 (*myaccount).leftMoney -= money; 45 sprintf(item, "支出\t%.2f\t\t%.2f\t\t%s\n", money, (*myaccount).leftMoney, reason); 46 strcat((*myaccount).accountDetail, item); 47 } 48 49 //显示明细功能 50 void showDetails(struct MyAccount* myaccount) { 51 printf("%s", (*myaccount).accountDetail); 52 } 53 54 //退出功能 55 void myExit() { 56 do { 57 printf("确定退出?y/n:"); 58 scanf("%c", &isout); 59 getchar(); 60 if (isout == ‘y‘ || isout == ‘n‘) { 61 break; 62 } 63 } while (1); 64 if (isout == ‘y‘) { 65 loop = 0; 66 printf("退出家庭收支程序"); 67 } 68 } 69 70 71 //打印菜单功能 72 void printMenu(struct MyAccount* myaccount) { 73 do { 74 printf("-------家庭收支软件----\n"); 75 printf("1,收支明细----\n"); 76 printf("2,登记收入----\n"); 77 printf("3,登记支出----\n"); 78 printf("4,退出----\n"); 79 printf("请选择(1-4):"); 80 scanf("%c", &key); 81 getchar(); //过滤回车 82 switch (key) { 83 case ‘1‘: 84 //printf("收支明细\n");break; 85 showDetails(myaccount);//printMeun()中传入的实参是&myaccount,所以这里的myaccount是printMenu的形参,即&myaccount,不用再传入&myaccount 86 break; 87 case‘2‘: 88 importRed(myaccount); 89 break; 90 case‘3‘: 91 outputRed(myaccount); 92 break; 93 case‘4‘: 94 myExit(); 95 } 96 } while (loop); 97 } 98 99 void main(){ 100 struct MyAccount myaccount; 101 //初始化 102 myaccount.leftMoney = 1000.0; 103 //char accountDetail[3000] = "收支\t收支金额\t账户余额\t说明\n0.00\t0.00\t\t1000.00\n"; 104 //定义的结构体中,这个accountDetail是一个常量,不能重新赋值,所以改为拷贝的方式赋值 105 memset(myaccount.accountDetail, 3000, 0); //先清零 106 strcpy(myaccount.accountDetail, "收支\t收支金额\t账户余额\t说明\n0.00\t0.00\t\t1000.00\n"); 107 printMenu(&myaccount); 108 }
标签:std 常量 exit 初始 oid 不能 detail count span
原文地址:https://www.cnblogs.com/shanlu0000/p/12375398.html