我在解决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
语句,后面跟着printf
和else
,这是不允许的。您必须将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(...)
这取决于你需要什么,但我想这是第一个。