C中的问题在if条件上带有括号
#include<stdio.h>
void TOH(int,char,char,char);
int n;
void main()
{
printf("How many plates?");
scanf("%d",&n);
TOH(n,'A','B','C');
}
if (n==1)
printf("A -> B n");
if (n==2) {
printf("A->C n");
printf("A->B n");
printf("C->B n");
}
void TOH(int n,char x,char y,char z)
{
if(n>2)
{
TOH(n-1,x,z,y);
printf("n%c -> %c",x,y);
TOH(n-1,z,y,x);
}
}
我有输出错误:
turnuri.c:12:1: error: expected identifier or '('
if (n==1)
^
turnuri.c:15:1: error: expected identifier or '('
if (n==2) {
^
1 warning and 2 errors generated.
为什么?谢谢
回答
if语句只能在函数体内使用。代码应该是这样的:
#include<stdio.h>
void TOH(int,char,char,char);
int n;
void main() {
printf("How many plates ?");
scanf("%d",&n);
TOH(n, 'A', 'B', 'C');
if (n == 1) {
printf("A -> B n");
}
if (n == 2) {
printf("A -> C n");
printf("A -> B n");
printf("C -> B n");
}
}
void TOH(int n, char x, char y, char z)
{
if (n > 2) {
TOH(n - 1, x, z, y);
printf("n%c -> %c", x, y);
TOH(n - 1, z, y, x);
}
}