啊哈磊_编程从这里起步

标题: 新人又有个问题 [打印本页]

作者: coolllyy    时间: 2013-11-8 11:04
标题: 新人又有个问题
#include <stdio.h>
#include <stdlib.h>
int main()
{
        int a;
    scanf("%d",&a);
    if(a%2==1)
                printf("%d",a+1);
                printf("%d",a+2);
                printf("%d",a+3);
    else
                printf("%d",a-1);
                printf("%d",a-2);
                printf("%d",a-3);
        system("pause");
        return 0;
}

书本第三章的大家来找茬  有2处错误,找了半天不知道错在哪,编译都不能通过。求援助。

作者: rosynirvana    时间: 2013-11-8 11:04
if和else后面都只能放一个语句,如果需要放多条语句就要用大括号括起来,组合成一条复合语句

这里的
if
  语句a

  语句b
  语句c
else
  语句d

  语句e
  语句f
是这样被编译器理解的,在else找不到紧邻的if了,于是通不过编译,改法就是加上大括号

当然其实这段代码的问题不止这些,根据作者用意这么改就行了
作者: coolllyy    时间: 2013-11-8 15:21
#include <stdio.h>
#include <stdlib.h>
int main()
{
        int a;
    scanf("%d",&a);
    if(a%2==1)
                {printf("%d",a+1);
                printf("%d",a+2);
                printf("%d",a+3);}
    else
                {printf("%d",a-1);
                printf("%d",a-2);
                printf("%d",a-3);}
        system("pause");
        return 0;
}

果然编译通过了,多谢了~
作者: Doctorly    时间: 2013-11-8 16:13
if/else后面只能控制一个语句,要想控制多个语句必须加{}
作者: 827443469    时间: 2013-11-8 23:24
在没有补充{}的情况下,if;for;while后面只有出现;就默认该判断或循环结束,如:
unsigned int i;
for(i=0;i<10;i++);

for(i=0;i<10;i++);
{
   ;
}是一样的
初学者的一点挫见




欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) Powered by Discuz! X3.2