online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code   
Language
#include <stdio.h> #define STEPPING 1 #define MAX_LEVEL 10 typedef struct { int index; int numbers[MAX_LEVEL]; int count; } Column; Column A, B, C; int steps; void init(int levels_count) { steps = 0; A.count = B.count = C.count = 0; A.index = 1; B.index = 2; C.index = 3; for (int number = levels_count; number > 0; --number) { A.numbers[A.count] = number; A.count++; B.numbers[number] = C.numbers[number] = 0; } } int top(Column* src) { return src->numbers[src->count - 1]; } void push(Column *dst, int number) { dst->numbers[dst->count] = number; ++dst->count; } void pop(Column *src) { src->numbers[src->count - 1] = 0; --src->count; } void draw_cell(int number) { if (number > 0) { printf("\t~%02d~\t\t|", number); } else { printf("\t \t\t|"); } } void draw() { int row_count = A.count; if (row_count < B.count) { row_count = B.count; } if (row_count < C.count) { row_count = C.count; } for (int i=row_count-1; i >= 0; --i) { draw_cell(A.numbers[i]); draw_cell(B.numbers[i]); draw_cell(C.numbers[i]); printf("\n"); } printf("\t----------------------------------------------\n"); } void move(int pile, Column *src, Column *tmp, Column *dst) { if (pile == 1) { int number = top(src); printf("\n第%d步:(%d号盘) 柱%d ==> 柱%d\n", ++steps, number, src->index, dst->index); #if STEPPING printf("按任意键执行...\n"); getchar(); #endif pop(src); push(dst, number); draw(); return; } move(pile-1, src, dst, tmp); move(1, src, tmp, dst); move(pile - 1, tmp, src, dst); } int main() { int levels = 0; printf("请输入汉诺塔共几层(1~10):"); scanf("%d", &levels); if (levels <= 0 || levels > 10) { printf("非法的层数:%d。", levels); return -1; } getchar(); init(levels); printf("初始状态:\n"); draw(); move(levels, &A, &B, &C); printf("\n======[大功告成]=======\n"); printf("[%d层]汉诺塔移动完成,共%d步。\n", levels, steps); return 0; }

Compiling Program...

Command line arguments:
Standard Input: Interactive Console Text
×

                

                

Program is not being debugged. Click "Debug" button to start program in debug mode.

#FunctionFile:Line
VariableValue
RegisterValue
ExpressionValue