- /*****************************************************************************
- 13. 有N个硬币(N为偶数)正面朝上排成一排,每次将 N-1 个硬币翻过来放在原位
- 置, 不断地重复上述过程,直到最后全部硬币翻成反面朝上为止。编程让计算机把
- 翻币的最简过程及翻币次数打印出来(用*代表正面,O 代表反面)。
- ******************************************************************************/
- #include <stdio.h>
- #include <malloc.h>
- void output(int* states, int size)
- {
- int i;
- for(i=0; i<size; i++)
- {
- if(states[i])
- printf("O");
- else printf("*");
- }
- printf("/n");
- }
- void main()
- {
- int N;
- bool* states;
- int index;
- printf("请输入一个偶数N:");
- scanf("%d" , &N);
- if(N % 2 != 0 || N <= 0)
- {
- printf("N不符合!");
- return;
- }
- states = (int*)malloc(N*sizeof(int));
- for(index=0; index<N; index++)
- {
- states[index] = false;
- }
- output(states, N);
- for(index=0; index<N; index++)
- {
- int k;
- for(k=0; k<N; k++)
- {
- if(k != index)
- {
- states[k] = !states[k];
- }
- }
- output(states, N);
- }
- free(states);
- }
练习13
最新推荐文章于 2021-05-18 01:59:26 发布