我在以下代码中找不到错误:
#include <stdio.h>
#define LOOP 0
#define ENDLOOP 1
main()
{
int c, loop;
loop = LOOP;
while ((c = getchar()) loop != ENDLOOP) {
if (c == 'e'|| c == 'E') {
printf ("END LOOP\n");
loop = ENDLOOP;
}
else if (c == 'c' || c == 'C')
printf ("Cheese\n");
else
printf ("Not Cheese\n");
}
}
终端正在给我这个错误:
1-1.c: In function ‘main’:
1-1.c:8: error: syntax error before ‘loop’
1-1.c: At top level:
1-1.c:13: error: syntax error before ‘else’
答案 0 :(得分:5)
你有问题:
((c = getchar()) loop != ENDLOOP)
应该是:
((c = getchar()) && loop != ENDLOOP)
我建议以完全不同的方式编写它:
#include <stdio.h>
int main()
{
int c;
while (c = getchar()) {
if (c == 'e' || c == 'E') {
printf ("END LOOP\n");
break;
}
if (c == 'c' || c == 'C') {
printf ("Cheese\n");
} else {
printf ("Not Cheese\n");
}
}
return 0;
}
我认为这样做错误的机会较少。您可能还想考虑使用tolower
。
答案 1 :(得分:4)
您是否错过了运营商?
while ((c = getchar()) && loop != ENDLOOP) {
答案 2 :(得分:3)
至少有一个错误是你在这里错过了一个操作员:
while ((c = getchar()) loop != ENDLOOP)
我认为你的意思是“和”,因此它应该是:
while ((c = getchar()) && loop != ENDLOOP)
答案 3 :(得分:2)
你可以摆脱丑陋的loop != ENDLOOP
条件,并在此过程中简化你的程序。
#include <stdio.h>
int main()
{
int c;
while (EOF != (c = getchar())) {
if (c == 'e'|| c == 'E') {
printf ("END LOOP\n");
break;
} else if (c == 'c' || c == 'C')
printf ("Cheese\n");
else
printf ("Not Cheese\n");
}
return 0;
}
EOF
不相等的比较明确了getchar()
如何终止while循环。否则,如果从标准输入中取出“e”或“E”,则break
会起作用。
main前面的int,return 0
是为了使它干净ANSI C,所以基本上风格,但风格很好。
答案 4 :(得分:-2)
#include<stdio.h>
#include<conio.h>
int x,y,z;
int large();
int main()
{
printf("Enter the number");
scanf("%d%d%d",&x,&y,&z);
large();
return 1;
}
int large()
{
printf("large is %d\n",x);
}
{
else if (y>x;&&y>z)
{
printf("%d the larger\n",y);
}
else
{
printf("%d larger is",x);
}
}