练习14

  1. /******************************************************************************
  2. 14. 有黑白棋子各有N个(分别用*和O代替),按下图方式排列
  3.         ***...***OOO...OOO
  4.             N个黑棋            N个白棋
  5.  允许将相邻两个棋子互换位置,最后使队形成黑白交替排列,试编程实现该操作。
  6.  ******************************************************************************/
  7. #include <stdio.h>
  8. #include <malloc.h>
  9. //显示棋子
  10. void PrintChess(char* chess, int size)
  11. {
  12.     int i;
  13.     for(i=0; i<size; i++)
  14.     {
  15.         printf("%3c",chess[i]);
  16.     }
  17.     printf("/n");
  18. }
  19. void main()
  20. {
  21.     int i,k;
  22.     int n;
  23.     char* chess;
  24.     printf("请输入一个正整数N: ");
  25.     scanf("%d",&n);
  26.     //申请空间
  27.     chess = (char*)malloc(2*n*sizeof(char));
  28.     //初始化
  29.     for(i=0; i<n; i++)
  30.     {
  31.         chess[i] = '*';
  32.         chess[i+n] = 'o';
  33.     }
  34.     //显示棋子
  35.     PrintChess(chess,2*n);
  36.     //过程
  37.     for(i=n-1; i>=0; i--)
  38.     {
  39.         for(k=i; k<2*i; k++)
  40.         {
  41.             char temp;
  42.             temp = chess[k];
  43.             chess[k] = chess[k+1];
  44.             chess[k+1] = temp;
  45.         }
  46.     }
  47.     //显示棋子
  48.     PrintChess(chess,2*n);
  49.     //释放空间
  50.     free(chess);
  51. }
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值