注意事项
1. 每道题最多只能提交5次;
2. 程序从标准输入 stdin('Standard Input')获取输入,并将输出结果输出到标准输出stdout('Standard Output')。
3. 输入输出均不能含有任何提示信息;
4. 测试平台的编译内核为VS2005及JDK1.7 。使用Java答题时,类名必须为"Main",不要使用package关键字声明;使用C/C++答题时,请使用VS2005支持的数据类型和函数;
5. 代码中不允许有任何文件操作;
6. 提交答案时请提交全部代码,包括main函数和所有子函数;
7. 建议您在本地编译完成后再到考试系统中提交;
8. 答案提交后,点击状态可以查看判题结果及相应提示;
9. 信息注册环节不可跳过,否则无法导出成绩。
第一个题是求输入字符串中最字符出现次数最多的字符
结果:
#include <iostream>
#include <string>
using namespace std;
char mostpresnet(char *test)
{
unsigned int app[26];
for(int j=0;j<26;j++)
{
app[j]=0;
}
while(*test!='\0')
{
++app[(unsigned char)(*test-'a')];
test++;
}
char re=0;
for(int i=0;i<26;++i)
if(app[i]>app[re]) re=(char)i;
return re+'a';
}
int main(){
string str;
char result;
// cout<<"plase enter the char:";
char *input=new char[128];
//cin>>str;
cin>>input;
/* if(str.size()>128){
return 0;
}
int len=str.size();
for(int j=0;j<len;j++)
{
if(str[j]>='a'&&str[j]<='z')
{
input[j]=str[j];
}
else{
return 0;
}
}*/
result=mostpresnet(input);
cout<<result;
return 0;
}
第二个题是括号匹配
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
//#define stacksize 128
struct stack
{
char strstack[128];
int top;
};
void InitStack(stack &s)
{
s.top=-1;
}
char Push(stack &s,char a)
{
if(s.top==128-1)
{
return 0;
}
s.top++;
s.strstack[s.top]=a;
return a;
}
char Pop(stack &s)
{
if(s.top==-1)
{
return 0;
}
char a=s.strstack[s.top];
s.top--;
return a;
}
int Empty(stack &s,int re)
{
if(s.top==-1)
{
return 1;
}
else
{
return 0;
}
}
int Check(char *str)
{
stack s;
InitStack(s);
int strn=strlen(str);
for(int i=0;i<strn;i++)
{
char a=str[i];
switch (a)
{
case '(':
Push(s,a);
break;
case ')':
if(Pop(s)!='(')
{
return 0;
}
break;
}
}
int re=0;
re=Empty(s,re);
return re;
}
int main()
{
char *str=new char[128];
// cout<<"请输入一个长度小于128的字符串:"<<endl;
cin>>str;
int re=Check(str);
cout<<re<<endl;
return 0;
}
本来在自己系统上测试都好好的,可是在HW上老是说有错误,最后觉得还是输出上的问题,一定得有cout<<result<<endl;
最后觉得HW的测试系统有待提高~