C语言解决三色旗问题
题目
解答
#include <stdio.h>#include <stdlib.h>#include <string.h>/*'B' 'W' 'R' 分别代表蓝色、白色和红色*/#define BLUE 'B'#define WHITE 'W'#define RED 'R'/*多行宏定义,交换旗的位置*/#define swap(x,y){\char temp;\temp=color[x];\color[x]=color[y];\color[y]=temp;\}void main(){char color[]={'R','W','B','W','W','B','R','B','W','R','\0'}; /*绳子上的各种颜色的旗子*/int w=0; /*初始化白旗的指针指向color[0]*/int b=0; /*初始化蓝旗的指针指向color[0]*/int r=strlen(color)-1; /*初始化红旗的指针指向color[9]*/int i;for(i=0;i<strlen(color);i++) /*打印出最初的颜色次序*/printf("%c ",color[i]);printf("\n");/*对旗子进行分类,按照蓝色、白色、红色的顺序排列*/while(w<=r){ /*当w未超过r时*/if(color[w]==WHITE) /*w遇到白旗,w向后走一位*/w++;else{if(color[w]==BLUE){ /*w遇到蓝旗,将蓝旗交换到前面*/swap(b,w);b++; /*b向前走一步*/w++; /*w向前走一步*/}else{ /*w指向的不是白旗也不是蓝旗,只能是红旗*/while(w<r&&color[r]==RED) /*若r是红旗,则向前走,找到首个不是红旗的位置【此处若w==r,说明二者相遇,r不动】*/r--;swap(r,w); /*将w处的红旗与r处不是红旗的那个旗互换,将红旗交换到后面*/r--; /*r再向前走一步,w则没有动*/}}}for(i=0;i<strlen(color);i++)/*打印出排好序的颜色次序*/printf("%c ",color[i]);printf("\n");}
C语言解决三色旗问题相关推荐
- C语言通路寻找,用C语言解决迷宫问题设计与寻找通路问题.pdf
用c语言解决迷宫设计与寻找通路问题 摘 要:本课程设计主要解决设计一个迷宫以及在给出一组入口和出口的情况下,求出一条通路的问题.在课程 设计中,程序设计语言采用VisualC++6.0,数据结构采用顺 ...
- C语言解决关于兔子的古典问题的代码
把做工程过程经常用的一些代码段做个收藏,如下的代码是关于C语言解决关于兔子的古典问题的代码,希望对各位朋友有一些好处. #include "stdio.h" #include &q ...
- go iris 连接 mysql 异步_go语言解决并发的方法有哪些?
简单回答下! 如果你只是一个 IO 操作,没必要在处理函数(协程)再开子协程,没什么用.因为,无论你开不开协程,都需要等待这个 IO 完成.一个 IO 操作,并发启不到提高性能的作用. 如果要提高性能 ...
- c语言数字的拆解_C语言解决变态推理题
有两个数,a和b.a大于等于b,而且二者都是2到99之间的正整数. 现在我当着P和Q的面,分别悄悄告诉了P先生a和b的和,告诉了Q先生a和b的积. 接下来有这么一段对话: Q:我不知道a和b分别是啥. ...
- C语言解决约瑟夫问题详解的代码
C语言解决约瑟夫问题详解的代码 参考文章: (1)C语言解决约瑟夫问题详解的代码 (2)https://www.cnblogs.com/odsxe/p/10791049.html (3)https:/ ...
- C语言 解决CCF 二十四点问题
利用 C 语言 解决 CCF题库中的二十四点问题 特别致谢:原博主程序 编译环境: IDE:DEV-C++ 语言:C语言 CCF CSP官方往年题库链接点我进入 1. 题目如下: 解题思路: 此题难点 ...
- Go语言解决go get失败的问题
Go语言解决go get失败的问题 文章目录 Go语言解决go get失败的问题 1.临时设置 2.长久生效 3.其他代理 由于墙的原因,GitHub下载最近失败的非常频繁,而且由于go的一些库在官网 ...
- C语言解决世界杯小组赛问题
C语言解决世界杯小组赛问题 题目: 世界杯小组赛(胜得3分,平得1分,负不得分),计算每个队的积分并按排名先后输出,若积分相同,则按净球数排序(保证积分相等时输入的净球数不相等).输入M个队,出线队N ...
- 弟弟的作业c语言,用C语言解决弟弟的作业问题
题目描述 你的弟弟刚做完了"100以内数的加减法"这部分的作业,请你帮他检查一下.每道题目(包括弟弟的答案)的格式为a+b=c或者a-b=c,其中a和b是作业中给出的,均为不超过1 ...
- c语言建模的程序,C程序设计五百例--用c语言解决学建模问题.doc
PAGE PAGE 46 学会用c语言解决生活中的问题 [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位.十位.个位的数字都是1 ...
最新文章
- 访问其他应用程序的Activity
- mysql的delete的底层实现_MySQL索引的底层实现
- Arduino教程:MPU6050的数据获取、分析与处理
- STMF4x 固件库V1.25.0
- AI 智能会议系统(36)——-外呼失败场景如何处理?
- Spring Boot: SimpleCacheConfiguration
- win7+ubuntu双系统干净删除ubuntu
- 更改窗口图标并将其显示在任务栏
- windows游戏编程 (一) 了解WinMain函数,创建一个信息框
- Luogu P2525题解
- 如何设置无线网络中计算机的ip,无线网络设置方法【详细步骤】
- 链脉企业文化篇之“链脉爱的早会”
- win7 64位安装 ie10/11失败
- 【matplotlib】图片的各种渲染效果;matplotlib.cm
- 这10句诗,满满都是“江湖气”!
- 一文读懂channel设计
- oracle 12 去掉 cdb,Oracle 12c no-CDB转换为CDB
- 计算机cde盘怎么分配,windows vista的c d e盘是怎么分配的,我是新手完全不懂用途啊...
- Atcoder Beginner Contest 174(ABC174) 题解
- 2023交易猫源码跳转APP
热门文章
- 024 正交向量 正交矩阵及性质
- 使用Quick BI 制作企业数据分析报表
- springboot2.0启动报错The APR based Apache Tomcat Native library which allows optimal performance in ...
- 掌握NestJS - JavaScript Node.js 框架
- 人人网,给我个“上”你的理由吧?
- java直接控制飞鹅打印机_智慧餐厅,飞鹅智能云打印机设置教程
- html5 侧滑菜单,侧滑菜单
- 颠覆思维,你也能懂量子力学
- 银湖联手博通欲收购东芝芯片业务 出价180亿美元
- 互联网+制造业,让你的生产管理更容易