1字典编码
题目内容:
编写程序,给一段文本中的每个单词一个整数编码,输出文本的整数编码序列。要求(1)编码从1开始,按单词出现的先后顺序依次编码;(2)重复单词不重复编码;(3)输出的每个编码占3位,不足的前面补0。
输入:一段英文文本,一行,其中只有单词,单词由一个或多个空格分隔末尾可能有多于的空格,文本中没有标点和数字。文本长度不超过1000,单词数不超过300,每个单词的字符个数不超过20,字母均小写。
输出:整数编码序列。
样例1输入:
hello hello how are you
样例1输出:
001001002003004
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
int main()
{
string s, base[300], code[300];
getline(cin, s);
int i = 0, count = 0, start;
while(i < s.length())
{
start = i;
while(i < s.length() && s[i] != ' ')
{
i ++;
}
if(i != start)
{
base[count ++] = s.substr(start, i - start);
}
i ++;
}
int countCode = 0, j;
bool b;
for(i = 0; i < count; i ++)
{
b = false;
for(j = 0; j < countCode; j ++)
{
if(code[j].compare(base[i]) == 0)
{
b = true;
break;
}
}
if(b)
{
cout<<setw(3)<<setfill('0')<<j + 1;
}
else
{
code[countCode] = base[i];
countCode ++;
cout<<setw(3)<<setfill('0')<<countCode;
}
}
return 0;
}
2成绩统计
题目内容:
输入若干学生的成绩,统计各班的成绩的平均值,并按班级名称的机内码从小到大排序输出。
学生成绩信息包括:班级,学号和成绩。班级名称是"000"'时表示成绩输入结束。
班级名称不超过20字符,学号不超过10个字符,成绩为整数,平均成绩为双精度实数,保留三位小数。班级数不超过10个,总人数不超过100个。
输入格式:
若干行,每行信息包括班级,学号和成绩,用空格隔开,
最后一行为:000 000 000
输出格式:
若干行,每行信息包括:班级和平均成绩,中间用一个空格隔开。行数由输入中的班级数确定。
输入样例:
航天 001 80
信计 001 90
航天 002 70
航天 003 80
信计 002 91
000 000 000
输出样例:
航天 76.667
信计 90.500
#include<iostream>
#include<cstring>
using namespace std;
class su{
public :
string name;
string nub;
double sum;
int nuber;
su()
{
nuber=0;
sum =0;
}
};
int main()
{
su *chu=new su[10];
string name;
string nub;
int fenshu;
int j = 0, t = 0, i, flag = 0;
while(1){
flag=0;
cin>>name>>nub>>fenshu;
if(name=="000")
{
break;
}
for(i=0;i<j;i++)
{
if(name==chu[i].name) //如果找到,归类
{
flag=1;
chu[i].sum+=fenshu;
chu[i].nuber++;
}
}
if(flag==0) //如果没找到就创建新的
{
chu[j].name=name;
chu[j].sum+=fenshu;
chu[j].nuber++;
j++;
}
}
for(i=0;i<j;i++) //排序
{
for(t=0;t<j-i-1;t++)
{
if(chu[t].name>chu[t+1].name)
{
su tt;
tt=chu[t];
chu[t] = chu[t+1];
chu[t+1]=tt;
}
}
}
for(i=0;i<j;i++)
{
cout<<chu[i].name<<" ";
cout.setf(ios::fixed);
cout.precision(3);
cout<<1.0*chu[i].sum/chu[i].nuber<<endl;
}
delete []chu;
return 0;
}
3矩形类
题目内容:
定义一个矩形类,数据成员有宽度、高度和组成矩形的字符,类型分别为整型、整型和字符型,成员函数有void set(int,int,char)设置数据成员的值,void show()显示矩形。若宽度为7,高度为4,字符为“*”,则show()显示的矩形如下(四周为*,中间是空格):
*******
* *
* *
*******
编写主程序,声明矩形类的对象,输入矩形的宽度、高度和组成字符,调用成员函数set()设置矩形参数,调用成员函数show()显示矩形。
输入格式:
两个正整数和一个字符,用空格隔开。
输出格式:
由字符组成的空心矩形。
输入样例:
7 4 *
输出样例:
*******
* *
* *
*******
注意:(1)需考虑一些极端情况,(2)要用类实现。(3)可能由于显示格式的问题,题目页面的矩形会错位。只要按格式要求输出。如对样例来说,第2行,两头是“*”,中间是5个空格。
#include<iostream>
using namespace std;
class Rectangle
{
int width,length;
char a;
public:
Rectangle(int width,int length,char a)
{
this->width=width;
this->length=length;
this->a=a;
}
void set(int width,int length,char a)
{
this->width=width;
this->length=length;
this->a=a;
}
void show()
{
for(int i=0; i<length; i++)
{
if(i==0||i==length-1)
{
for(int j=0; j<width; j++)
cout<<a;
}
else
for(int x=0; x<width; x++)
if(x==0||x==width-1)cout<<a;
else cout<<" ";
cout<<endl;
}
}
};
int main()
{
int width,length;
char a;
cin>>width>>length>>a;
Rectangle b(width,length,a);
b.show();
}