c++ 问题 麻烦了

来源:百度知道 编辑:UC知道 时间:2024/06/08 16:06:26
能通过编译 但执行到 “请选择:1,存入 2,取出”时会出现错误呢
#include <stdio.h>
#include <string.h>
#include <iostream.h>
#define Max 100
class Bank
{
int top;
char date[Max][10];
int money[Max];
int rest[Max];
static int sum;
public:
Bank() {top=0;}
void bankin(char d[],int m)
{
strcpy(date[top],d);
money[top]=m;
sum=sum+m;
rest[top]=sum;
top++;
}
void bankout(char d[],int m)
{
strcpy(date[top],d);
money[top]=-m;
sum=sum-m;
rest[top]=sum;
top++;
}
void disp()
{
int i;
printf(" 日期 存入 取出 余额\n");
for (i=0;i<top;i++)
{
printf("%8s",date[i]);
if(money[i]<0)
printf(" %6d",-money[i]);
else
printf(" %6d",money[i]);
printf(" %10d\n",rest[i]);

需要修改的位置
1. char date[Max][11]; // 由于需要存储日期,加一个字符的空间以存储串尾
2. void disp()函数的输出形式需要排版
3. scanf("%s",a); // 修改scanf("%s",&a[Max]);为左边的形式
4. 以case 1为例,修改如下
case 1:
printf("输入存入的钱数:");
scanf("%d",&p);
obj.bankin(a,p); // a为a[Max]的首地址,作为实际参数
break;
5. 整个输入,switch选择的过程可以用以下语句包围,可以多次输入
do{ scanf, then switch... }while(p==1 || p==2);

直接改成 scanf("%s",&a);

或 scanf("%s",a);

都可以

输入是个字符串 如果scanf("%s",&a[Max]); 意思输入只是个 字符

也就是有点 匹配错误的意思