Else之前在URI在线判断中没有C语言中的If问题



我在解决URI 1099问题时遇到了一个错误。上面写着:

main.c: In function ‘main’:
main.c:22:17: error: ‘else’ without a previous ‘if’
else{
^~~~
main.c:36:17: error: ‘else’ without a previous ‘if’
else{
^~~~

未编译代码。编译器发送了上述错误。我无法解决这个问题。完整的代码写在下面:

#include <stdio.h>
int main()
{
int N, X, Y, i, j, k, sum1=0, sum2=0;
scanf("%d", &N);
for(i=0; i<=N; i++){
scanf("%d %dn",&X,&Y);
if(X<Y){
for(j=X+1; j<Y; j++){
if(j%2!=0){
sum1=sum1+j;
}
printf("%d", sum1);
else{
printf("%d", 0);
}
}
}

else if(X>Y){
for(k=Y+1; k<X; k++){
if(k%2!=0){
sum2=sum2+k;
}
printf("%d", sum2);
else{
printf("%d", 0);
}
}
}
else{
printf("%d", 0);
}
}
return 0;
} 

如果有人注意到这个问题,对我会很有帮助。

不能在if和else条件之间写入任何内容。

if(k%2!=0){
sum2=sum2+k;
}
printf("%d", sum2);  //this will faill.

else{
printf("%d", 0);
}

在多个代码段中,您有一个if语句,后面跟着printfelse,这是不允许的。您必须将printf放置在块之后或块中。

这是要更正的代码段之一,其他代码段与非常相似

if(j%2!=0){
sum1=sum1+j;
}
// This printf causes the error
printf("%d", sum1);

else {
printf("%d", 0);
}

这可以是一个解决方案

if(j%2!=0) {
sum1=sum1+j;
printf("%d", sum1);
} else {
printf("%d", 0);
}

您不能在else之前编写任何其他命令,因为如果else阻塞,则该命令将结束。

#include <stdio.h>
int main()
{
int N, X, Y, i, j, k, sum1=0, sum2=0;
scanf("%d", &N);

for(i=0; i<=N; i++){
scanf("%d %dn",&X,&Y);

if(X<Y){
for(j=X+1; j<Y; j++){

if(j%2!=0){
sum1=sum1+j;
}
printf("%d", sum1); //this can't be here

else{
printf("%d", 0);
}
}
}

else if(X>Y){
for(k=Y+1; k<X; k++){

if(k%2!=0){
sum2=sum2+k;
}
printf("%d", sum2); //this can't be here

else{
printf("%d", 0);
}
}
}
else{
printf("%d", 0);
}
}
return 0;
}

正确的做法是:

if(k%2!=0){
sum2=sum2+k;
printf("%d", sum2);
}

或:

if(k%2!=0) { ... }
else {...}
printf(...)

这取决于你需要什么,但我想这是第一个。

最新更新