华为机试(2018年4月18日)

C++程序:

第一种解法:

#include<iostream>
#include<string>

using namespace std;

void main()
{
	string str;
	int num;
	while(getline(cin,str))
	{   
		cin>>num;
		string s;
		for(int i=0;i<str.size()&&i<num;i++)
		{
			s=s+str[i];
		}
	        for(int i=0;i<s.size();i++)
		{
			if(s[i]<'0'||s[i]>'9')
			      cout<<s[i];%%%cout会自动判断最后一个是否是半个汉字,如果是,则不输出。
		}
		cout<<endl;
		s.clear();
		str.clear();
	}
}

第二种解法:判断截取到的汉字个数,如果存在半个汉字,则一定最后一个字符,忽略它

#include<iostream>
#include<string>

using namespace std;

void main()
{
	string str;
	int num;
	int hz_num=0;
	while(getline(cin,str))
	{   
		cin>>num;
		string s;
		hz_num=0;
		for(int i=0;i<str.size()&&i<num;i++)
		{
			s=s+str[i];
			if(str[i]<0)
			{
				hz_num++;
			}
		}
		if(hz_num%2==1)
			hz_num=1;
		else
			hz_num=0;
	        for(int i=0;i<s.size()-hz_num;i++)
		{
			if(s[i]<'0'||s[i]>'9')
				cout<<s[i];
		}
		cout<<endl;
		s.clear();
		str.clear();
	}
}

#include<iostream>
#include<string>

using namespace std;

int month[]={31,31,28,31,30,31,30,31,31,30,31,30};
void main()
{
	int year;
	int week;

	while(cin>>year)
	{   
		int week_start=6;
		int weeks[]={0,0,0,0,0,0,1};//1990年1月13日是星期六
		if(year>400||year<1)
		{
			cout<<-1<<endl;
		}
		else
		{
			cin>>week;
			if(week>6||week<0)
				cout<<-1<<endl;
			else
			{
				for(int i=1;i<=year;i++)
				{   
					int y=(1900+i-1);
					if((y%4==0&&y%100!=0)||y%400==0)
						month[2]=29;
					else
					    month[2]=28;

					for(int j=0;j<12;j++)
					{
						if(i==1&&j==0) continue;
						week_start=(week_start+month[j])%7;
					    weeks[week_start]++;
					}
				}
			 }
		 }
		cout<<weeks[week]<<endl;
	  }
}



猜你喜欢

转载自blog.csdn.net/suijue9389/article/details/80207737