问题描述:新学期开始了,小明提早到自习教室帮同学占座,一本书可以占两个相邻座位,小明只想占一整排座位,求总共需要几本书来占满这一排空余座位?
作者:何知令
发表时间:2017年2月16日
输入:
题目有多组测试数据
先输入一个数据n,表示这一排总共有多少个座位,再输入一行座位状态,"*"为不能占座,"@"为可以占座。
输出;
作者:何知令
发表时间:2017年2月16日
输入:
题目有多组测试数据
先输入一个数据n,表示这一排总共有多少个座位,再输入一行座位状态,"*"为不能占座,"@"为可以占座。
输出;
输出需要几本书占座,如果没有座位可以来占座,则输出"Oh no!"
代码:
/*
问题描述:新学期开始了,小明提早到自习教室帮同学占座,一本书可以占两个相邻座位,小明只想占一整排座位,求总共需要几本书来占满这一排空余座位?
作者:何知令
发表时间:2017年2月16日
输入:
题目有多组测试数据
先输入一个数据n,表示这一排总共有多少个座位,再输入一行座位状态,"*"为不能占座,"@"为可以占座。
输出;
输出需要几本书占座,如果没有座位可以来占座,则输出"Oh no!"
*/
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;
int i;
int len;
int seat_num;
char seat[100];
while(scanf("%d",&n)!=EOF)
{
seat_num=0;
gets(seat);
for(len=0; seat[len]!='\0'; len++);
for(i=0; seat[i]!='\0'; i+=2)
{
if(n==1)
{
if(seat[0]=='*')
printf("Oh no!\n");
if(seat[0]=='@')
printf("1\n");
break;
}
if(n==2)
{
if(seat[0]=='*'&&seat[1]=='*')
printf("Oh no!\n");
else
printf("1\n");
break;
}
if(seat[i]=='@'&&seat[i+1]=='*')
{
seat_num++;
}
if(seat[i]=='*'&&seat[i+1]=='@')
{
seat_num++;
}
if(seat[i]=='@'&&seat[i+1]=='@')
{
seat_num++;
}
if(i+1==n||i+2==n)
{
if(n%2!=0&&seat[len-2]=='*'&&seat[len-1]=='@'&&i+1==n)
seat_num++;
if(seat_num==0)
{
printf("Oh no!\n");
break;
}
else
{
printf("%d\n",seat_num);
break;
}
}
}
}
return 0;
}
程序运行结果展示:
知识点总结:数组,判断语句
学习心得:这还是简易版的,前面有个标准版的,愣是做不出来