现在的位置: 首页 > 综合 > 正文

sdut2167 Mathman Bank

2013年09月09日 ⁄ 综合 ⁄ 共 2341字 ⁄ 字号 评论关闭

这种题考的是细心

strcmp()和memcpy()都能实现字符串的复制,但两者还是有明显区别的,详见http://www.cnblogs.com/stoneJin/archive/2011/09/16/2179248.html

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
struct cell{
	char name[15];
	char mima[15];
	int amount;
}a[1001];
int cur=0;
int check(char customer[]){
	int i;
	for(i=1;i<=cur;i++)
		if(strcmp(customer,a[i].name)==0){
			return i;
		}
	return -1;
}
int main(){
	int n;
	char order[3];
	char customer[15],sender[15],password[15],newpass[15];
	int initial;
	int No,No1;
	scanf("%d",&n);
	while(n--){
		scanf("%s",order);
		if(order[0]=='O'){
			scanf("%s%s%d",customer,password,&initial);
			No=check(customer);
			if(No==-1){
				cur++;
				memcpy(a[cur].name,customer,sizeof(customer));
				memcpy(a[cur].mima,password,sizeof(password));
				a[cur].amount=initial;
				printf("Successfully opened an account.\n");
			}
			else
				printf("Account exists.\n");
		}
		else if(order[0]=='D'){
			scanf("%s%d",customer,&initial);
			No=check(customer);
			if(No==-1)
				printf("Account does not exist.\n");
			else{
				a[No].amount+=initial;
				printf("Successfully deposited money.\n");
			}
		}
		else if(order[0]=='W'){
			scanf("%s%s%d",customer,password,&initial);
			No=check(customer);
			if(No==-1)
				printf("Account does not exist.\n");
			else{
				if(strcmp(password,a[No].mima)!=0)
					printf("Wrong password.\n");
				else if(initial>a[No].amount)
					printf("Money not enough.\n");
				else{
					a[No].amount-=initial;
					printf("Successfully withdrew money.\n");
				}
			}
		}
		else if(order[0]=='T'){
			scanf("%s%s%s%d",sender,password,customer,&initial);
			No=check(sender);
			No1=check(customer);
			if(No==-1||No1==-1)
				printf("Account does not exist.\n");
			else{
				if(strcmp(password,a[No].mima)!=0)
					printf("Wrong password.\n");
				else if(a[No].amount<initial)
					printf("Money not enough.\n");
				else{
					a[No].amount-=initial;
					a[No1].amount+=initial;
					printf("Successfully transfered money.\n");
				}
			}
		}
		else if(order[0]=='C'){
			scanf("%s%s",customer,password);
			No=check(customer);
			if(No==-1)
				printf("Account does not exist.\n");
			else{
				if(strcmp(password,a[No].mima)!=0)
					printf("Wrong password.\n");
				else
					printf("%d\n",a[No].amount);
			}
		}
		else if(order[0]=='X'){
			scanf("%s%s%s",customer,password,newpass);
			No=check(customer);
			if(No==-1)
				printf("Account does not exist.\n");
			else{
				if(strcmp(password,a[No].mima)!=0)
					printf("Wrong password.\n");
				else{
					memcpy(a[No].mima,newpass,sizeof(newpass));
					printf("Successfully changed password.\n");
				}
			}
		}
	}
	return 0;
} 



/**************************************
	Problem id	: SDUT OJ 2167 
	Result		: Accepted 
	Take Memory	: 504K 
	Take Time	: 0MS 
	Submit Time	: 2013-05-27 14:44:25  
**************************************/

抱歉!评论已关闭.