实验项目六、查询模块
实验内容:实现查询用户的当前存款余额并以人民币大写的形式输出
实验目的:掌握映射算法
容易出现的错误:算法不好
人民币大写示例:
#include<iostream.h>
#include<stdio.h>
#include <shlobj.h>
int num[8];//用于存储组成金额的数值
int length;//用于存放组成金额的数值个数
bool jy(int i)//用于验证从第i个数值后是否还存在非零数值
{
int j;
for(j=i;j<=length;j++)
if(num[j]) return true;//存在非0数值
return false;//不存在非0数值
}
void main()
{
MessageBox(0,"人民币大写示例","提示",0);
cout<<"请输入人民币数目:";
int money;
cin>>money;
if(money>99000000)
{
MessageBox(0,"金额过大","提示",0);
return;
}
//处理0元
if(money==0)
cout<<"零元";
else//非0元
{
//定义大写映射数组
char dx[10][3]={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
//定义单位映射数组
char dw[8][5]={"元","十","百","千","万","十万","百万"};
//将钱以逆序存放于数组
int i=0;
int fl=0;//用于统计非0数值的个数处理整百、千、万...的特殊数值
while(money)//将组成金额的数值分离出来
{
num[i]=money%10;//求当前金额的个位数值
cout<<num[i];
if(num[i])
fl++;//累计非0数出现次数
money/=10;//去掉当前金额的个位
i++;
}
--i;
//将金额分离完毕
length=i;
if(fl<2)//10的整数倍
{
printf(dx[num[i]]);
printf(dw[i]);
printf("元");
}
else
{
int index;
bool first=true;//第一次遇到0标识
while(i>=0)
{
index=num[i];
if(index)//非零数字
{
printf(dx[index]);//输出大写
printf(dw[i]);//输出人民币单位
first=true;//第一次遇到0标识
}
else
{
if(first&&jy(i))//如果是第一次遇到0且此位以后还存在非0数值
printf("零");
first=false;//将第一次遇到0的标识设置为假
}
i--;
}
}
}
思考:在验证用户身份时,为何用户标识和密码同时验证?
实验项目七、排序模块
实验内容 将现有储户按照余额以为降序排序。
实验目的:动态数据结构及排序训练。
知识点:
动态分配内存空间函数:
动态分配内存空间函数:
思考:动态申请的存储单元的生存期为
帮忙做个模块