高分求C++编程题(二道)

2025-05-10 02:52:36
推荐回答(5个)
回答1:

//我将两题和在了一起
#include
#include
#include
char *fun(char *,char ); //前向声明函数
void main()
{
cout<<"请输入一个字符串,以回车结束:"< char st[100];
cin.getline(st,100,'\n');
int AZ=0,az=0,num=0,none=0,els=0; //定义分别给大写,小写,数字,空格和其它字符的计数变量
for(int i=0;st[i]!='\0';i++)
{
if('A'<=st[i] && 'Z'>=st[i])
AZ++;
else if('a'<=st[i] && 'z'>=st[i])
az++;
else if('0'<=st[i] && '9'>=st[i])
num++;
else if(' '==st[i])
none++;
else
els++;
}
cout<<"大写字母个数:"< cout<<"小写字母个数:"< cout<<"数字个数:"< cout<<"空格个数:"< cout<<"其它字符个数:"<
cout<<"请输入你要删除的字符:";
char temp;
cin>>temp;
fun(st,temp);
cout<<"删除字符'"<}
char *fun(char *s,char t)
{
if(strlen(s)==0)
{
cout<<"你之前没有输入任何字符串,系统自动退出。"< exit(0);
}
else
{
for(int i=0;s[i]!='\0';i++)
if(s[i]==t)
for(int k=i;s[k]!='\0';k++)
s[k]=s[k+1];
}
return s;
}

回答2:

纯指针方法修改完毕。

第一题:

#include
#include
#include
using namespace std;

int main()
{
char s[80];
gets(s);

int i,upper,lower,number,space,other;
upper=lower=number=space=other=0;
char *p;
for(p=s;*p;p++)
{
if(isupper(*p)) upper++;
else if(islower(*p)) lower++;
else if(isdigit(*p)) number++;
else if(isspace(*p)) space++;
else other++;
}

cout<<"大写字母有"< cout<<"小写字母有"< cout<<"数字有"< cout<<"空格有"< cout<<"其他有"<
return 0;
}

第二题:

#include
#include
using namespace std;

void Func(char *p)
{
for(;*p;p++)
*p=*(p+1);
*p='\0';
}

int main()
{
char s[80],ch;

cout<<"请输入字符串: "; cin.getline(s,80);
cout<<"请输入指定字符: "; cin>>ch;

char *p;
for(p=s;*p;p++)
if(*p==ch) Func(p);

puts(s);
return 0;
}

回答3:

#include

using namespace std;
const int IsUpper=0;
const int IsLower=1;
const int IsNumber=2;
const int IsSpace=3;
const int IsOther=4;

class String
{
public:
String(char *init);
~String();
void GetSeperate();
void DeleteChar();
void Display();
private:
void Delete(char target);
int GetCharNumber(char target);
int GetCharType(char target);
char *itsChar;
int StringLength;
};

String::String(char *init)
{
int i;
for(i=0;init[i]!='\0';i++);
StringLength=i;//ABCD->length=4,space=5;0-4
itsChar=new char[i+1];
for(i=0;init[i]!='\0';i++)
{
itsChar[i]=init[i];
}
itsChar[i]='\0';
}
String::~String()
{
}

void String::Display()
{
cout<}

void String::GetSeperate()
{
int i;
int chartypecount[5]={0,0,0,0,0};//0:upper,1:lower,2:number,3:space,4:other
int chartype;
for(i=0;i {
chartype=GetCharType(itsChar[i]);
chartypecount[chartype]++;
}
cout<<"AI:Upper:"< cout<<"AI:Lower: "< cout<<"AI:Number: "< cout<<"AI:Space: "< cout<<"AI:Other "<}

int String::GetCharType(char target)
{
if(('A'<=target)&&(target<='Z'))
return IsUpper;
else if(('a'<=target)&&(target<='z'))
return IsLower;
else if(('0'<=target)&&(target<='9'))
return IsNumber;
else if((target==' '))
return IsSpace;
else
return IsOther;
}

void String::DeleteChar()
{
char temp;
cout<<"AI:Input the char you want to delete\n>";
cin>>temp;
Delete(temp);
}

void String::Delete(char target)
{
int deleted=0;
int i,j;
for(i=0;i {
if(itsChar[i]==target)
{
for(j=i;j {
itsChar[j]=itsChar[j+1];
}
StringLength--;
deleted=1;
}
}
if(deleted!=1)
{
cout<<"AI:No Such Charecter\n";
}
}
int main()
{
String *A;
char input[100];
cout<<"AI:Put~In~String:\n>";
cin.getline(input,100,'\n');
A=new String(input);
A->GetSeperate();
A->DeleteChar();
A->Display();
return 0;
}

回答4:

第一题知道ASCII的值就可以分类输出。
第二题是查找删除问题,注意删除后将删除单元后的元素全部前移一位,
很简单的,自己看看书上上机做出来最好,程序是自己写出来的,写多了就会了,呵呵
祝你成功

回答5:

哇!