搜索
查看: 1045|回复: 4
打印 上一主题 下一主题

新人又有个问题

[复制链接]
跳转到指定楼层
楼主
发表于 2013-11-8 11:04:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
#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处错误,找了半天不知道错在哪,编译都不能通过。求援助。

最佳答案

查看完整内容

if和else后面都只能放一个语句,如果需要放多条语句就要用大括号括起来,组合成一条复合语句 这里的 if 语句a 语句b 语句c else 语句d 语句e 语句f 是这样被编译器理解的,在else找不到紧邻的if了,于是通不过编译,改法就是加上大括号 当然其实这段代码的问题不止这些,根据作者用意这么改就行了
沙发
发表于 2013-11-8 11:04:07 | 只看该作者
if和else后面都只能放一个语句,如果需要放多条语句就要用大括号括起来,组合成一条复合语句

这里的
if
  语句a

  语句b
  语句c
else
  语句d

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

当然其实这段代码的问题不止这些,根据作者用意这么改就行了
板凳
 楼主| 发表于 2013-11-8 15:21:01 | 只看该作者
#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;
}

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

for(i=0;i<10;i++);
{
   ;
}是一样的
初学者的一点挫见
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表