#include <iostream>
using namespace std;
class Num
{
private:
int a;
public:
Num() {}
Num(int a):a(a){}
//设置a的值
void set(int a){
this->a=a;
}
//1-a的和
void Sum(){
if(a<1){
cout<<"a<1"<<endl;
return;
}
int sum=0;
for(int i=1;i<=a;i++){
sum+=i;
}
cout<<"Sum="<<sum<<endl;
}
//1-a的乘积
void Porduct(){
if(a<1){
cout<<"a<1"<<endl;
return;
}
int product=1;
for(int i=1;i<=a;i++){
product*=i;
}
cout<<"Product="<<product<<endl;
}
//1-a的所有质数
void PrimeNumber(){
if(a<1){
cout<<"a<1"<<endl;
return;
}
cout<<"PrimeNumber:";
for(int i=2;i<=a;i++){
int flag=0;
for(int j=2;j<i;j++){
if(i%j==0){
flag++;
}
}
if(0==flag){
cout<<i<<" ";
}
}
cout<<endl;
}
};
int main()
{
Num num1;
num1.set(10);
num1.Sum();
num1.Porduct();
num1.PrimeNumber();
return 0;
}
2. 已知C风格的字符串,完成对字符串通过下标访问时的异常处理机制(越界访问)
#include <iostream>
#include <cstring>
using namespace std;
class Str
{
private:
char *str;
int size;
public:
Str() {}
Str(const char *str):str(nullptr),size(0){
size=strlen(str);
this->str=new char[size+1];
strcpy(this->str,str);
}
char &at(int pos){
if(pos>=size){
throw char(1);
}
return *(str+pos);
}
};
int main()
{
Str s1("hello");
cout<<s1.at(3)<<endl;
cout<<s1.at(5)<<endl;
return 0;
}
#include <iostream>
using namespace std;
class A
{
private:
static char a;
public:
A() {}
static void MyGetChar(){
if(a>'9'){
a='0';
}
cout<<a;
a++;
}
};
char A::a='0';
class B
{
private:
static char b;
public:
B() {}
static void MyGetChar(){
if(b>'z'){
// cout<<endl;
b='a';
}
cout<<b;
b++;
}
};
char B::b='a';
int main()
{
for(int i=0;i<26;i++){
if(i<20){
A().MyGetChar();
}
B().MyGetChar();
}
cout<<endl;
for(int i=0;i<26;i++){
if(i<20){
A().MyGetChar();
}
B().MyGetChar();
}
return 0;
}
#include <iostream>
using namespace std;
class A
{
private:
string str;
public:
A() {}
A(string str):str(str){
int j=0;
for(unsigned int i=0;i<this->str.size();i++){
if(this->str.at(i)>='a'&&this->str.at(i)<='z'){
this->str.at(j)=this->str.at(i);
j++;
}
}
this->str.resize(j);
}
void dump(){
char temp;
for(unsigned int i=0;i<str.size()-1;i++){
for(unsigned int j=0;j<str.size()-1-i;j++){
if(str.at(j)>str.at(j+1)){
temp=str.at(j);
str.at(j)=str.at(j+1);
str.at(j+1)=temp;
}
}
}
cout<<str<<endl;
}
};
class B
{
private:
string str;
public:
B() {}
B(string str):str(str){
int j=0;
for(unsigned int i=0;i<this->str.size();i++){
if(this->str.at(i)>='0'&&this->str.at(i)<='9'){
this->str.at(j)=this->str.at(i);
j++;
}
}
this->str.resize(j);
}
void dump(){
char temp;
for(unsigned int i=0;i<str.size()-1;i++){
for(unsigned int j=0;j<str.size()-1-i;j++){
if(str.at(j)>str.at(j+1)){
temp=str.at(j);
str.at(j)=str.at(j+1);
str.at(j+1)=temp;
}
}
}
cout<<str<<endl;
}
};
int main()
{
string str;
cin>>str;
A a(str);
a.dump();
B b(str);
b.dump();
return 0;
}