洛谷P1953 易语言

这是我第一道大模拟的紫题QWQ

题目不难。有几个坑:

1.数字有可能出现在拓展名末尾
2.人家给的数字是几你就要从几计数

代码:

/*
1
aa.in10 aa.ou0
aa.in1 aa.ou1
aa.in2 aa.ou2
*/
/*
enger1.in ans
abc1.in abc1.out
abc2.in abc2.out
abc3.in abc3.out
abc4.in abc4.out
*/
#include<bits/stdc++.h>
using namespace std;
char a[10005],b[10005],c[10005],name[10005],hz[10005];
char hzm[10005];
int la,lb,lc,r,fb=1,fc=1,fnum,cnt;
int main(){
	cin>>a;
	if(a[0]=='1'||a[0]=='0'){
		r=a[0]-'0';
		while(cin>>b>>c){
			fb=1,fc=1;
			lb=strlen(b);
			lc=strlen(c);
			for(int i=0;i<lb;i++){
				if(b[i]>='0'&&b[i]<='9'){
					if(!fb) continue;
					fb=0;
					cout<<r;
				}
				else cout<<b[i];
			}
			cout<<' ';
			for(int i=0;i<lc;i++){
				if(c[i]>='0'&&c[i]<='9'){
					if(!fc) continue;
					fc=0;
					cout<<r;
				}
				else cout<<c[i];
			}
			cout<<endl;
			r++;
		}
	}
	else{
		la=strlen(a);
		cin>>hz;
		for(int i=0;i<la;i++){
			if(a[i]>='0'&&a[i]<='9'){
				r*=10;
				r+=a[i]-'0';
			}
		}
		for(int i=0;i<la;i++){
			if(a[i]>='0'&&a[i]<='9'){
				fnum=1;
			}
			if(a[i]=='.'&&fnum==0){
				for(int j=0;j<i;j++){
					name[j]=a[j];
				}
				for(int j=i+1;j<la;j++){
					if(a[j]>='0'&&a[j]<='9'){
						break;
					}
					else{
						hzm[cnt]=a[j];
						cnt++;
					}
				}
				break;
			}
			if(a[i]=='.'&&fnum==1){
				for(int j=0;j<i;j++){
					if(a[j]>='0'&&a[j]<='9'){
						break;
					}
					else name[j]=a[j];
				}
				for(int j=i+1;j<la;j++){
					hzm[cnt]=a[j];
					cnt++;
				}
			}
		}
//		cout<<fnum<<endl; 
//		cout<<name<<endl<<hzm<<endl;
		while(cin>>b>>c){
			lb=strlen(b);
			lc=strlen(c);
			for(int i=0;i<lb;i++){
				if(b[i]=='.'){
					cout<<name;
					if(fnum) cout<<r<<'.'<<hzm;
					else cout<<'.'<<hzm<<r;
					break;
				}
			}
			cout<<' ';
			for(int i=0;i<lc;i++){
				if(c[i]=='.'){
					cout<<name;
					if(fnum) cout<<r<<'.'<<hz;
					else cout<<'.'<<hz<<r;
					break;
				}
			}
			cout<<endl;
			r++;
		}
	}
	return 0;
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值