高学生计算机竞赛题目,计算机类竞赛题.doc

数学与计算机学院

上机报告

( 2015 / 2016 学年 第 2 学期 )

课程名称计算机类竞赛专题训练课程代码上机时间2016年03月29日指导单位计算机与软件工程学院任课教师蒋忠远

学生姓名蒋琦年 级2013级学 号3120130901327专 业计算机科学与技术成 绩

实验名称上机ACM习题练习实验地点6A-403实验类型实验学时2实验日期2016.03.29实验目的和要求

实验目的:

1. 掌握部分ACM竞赛题的算法。

实验要求:

1.给出一个由O和X组成的串(长度为1~80),统计得分。每个O的得分为目前连续出现的O的个数,X的得分为0.例如,OOXXOXXOOO的得分为1+2+0+0+1+0+0+1+2+3.

2.输入整数a和b(0<=a<=3000,1<=b<=3000),输出a/b的循环小数表示以及循环节长度。例如a=5,b=43,小数表示为0.(116279069767441860465),循环节长度为21.

3.输入两个字符串s和t,判断是否可以从t中删除0个或多个字符(其他字符顺序不变),得到字符串s。例如,abcde可以得到bce,但无法得到dc。

4.编写一个“裁判”程序,输入单词和玩家的猜测,判断玩家赢了(You win.)、输了(You lose.)还是放弃了(You chickened out.)。每组数据包含3行,第1行是游戏编号(-1为输入结束标记),第2行是计算机想的单词,第3行是玩家的猜测。后两行保证只含小写字母。

实验环境(实验设备)

Windows 7 + Visual C++ 6.0

实验原理及内容

1.实验原理

1、创建2个字符串一个用于存放字符串,一个用于存放需要相加的大小,判断第一个元素为0还是1.然后使用循环当遇到O时所数组的值便在前一个的基础上加1当遇到X时归0继续计算。最后将存放大小的数组全部相加。

2、一直相除,当遇到商相同的时候说明为一个循环,然后计算长度。

3、短串的第一个字符,去比较长传的第一个字符,如果相同,则转向短串的下一个字符,去个长串的下一个字符比较,如果不同,则接着和长串的下一个字符比较,重复这样的过程,次数为长串的长度,如果能够遍历短串的长度。则成功,否则失败。

4、通过两个变量来判断游戏的输赢,经过循环来查看字母是否猜对,将猜对的字母改成空格。

2.实验内容

1.给出一个由O和X组成的串(长度为1~80),统计得分。每个O的得分为目前连续出现的O的个数,X的得分为0.例如,OOXXOXXOOO的得分为1+2+0+0+1+0+0+1+2+3.

2.输入整数a和b(0<=a<=3000,1<=b<=3000),输出a/b的循环小数表示以及循环节长度。例如a=5,b=43,小数表示为0.(116279069767441860465),循环节长度为21.

3.输入两个字符串s和t,判断是否可以从t中删除0个或多个字符(其他字符顺序不变),得到字符串s。例如,abcde可以得到bce,但无法得到dc。

4.编写一个“裁判”程序,输入单词和玩家的猜测,判断玩家赢了(You win.)、输了(You lose.)还是放弃了(You chickened out.)。每组数据包含3行,第1行是游戏编号(-1为输入结束标记),第2行是计算机想的单词,第3行是玩家的猜测。后两行保证只含小写字母。

3.实验前准备

打开vc++6.0,建立相关控制台应用程序,为编程做准备。

4.实验过程

1.给出一个由O和X组成的串(长度为1~80),统计得分。每个O的得分为目前连续出现的O的个数,X的得分为0.例如,OOXXOXXOOO的得分为1+2+0+0+1+0+0+1+2+3.

#include

using namespace std;

int main()

{

char a[100];

int b[110];

int n;

cin>>n;

while(n--)

{

cin>>a;

b[0]=(a[0]=='O');

for(int i=1;a[i];i++)

{

b[i]=b[i-1]+1;

if(a[i]=='X')

b[i]=0;

}

int sum=0;

for(int i=0;a[i];++i)

sum+=b[i];

cout<

}

return 0;

}

2.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值