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; } }