黑马程序员技术交流社区

标题: 求解一个for循环的问题 [打印本页]

作者: 离渊    时间: 2014-3-18 17:27
标题: 求解一个for循环的问题
本帖最后由 离渊 于 2014-3-20 14:58 编辑

/*
题目:提示用户输入一个小于10的正整数n,如果n是5,就输出下列图形,其他n值以此类推
1
22
333
4444
55555
*/
#include <stdio.h>

int main()
{
    int n = 0;
    while (n >= 10 || n <= 0) {

        printf("输入一个小于10的正整数\n");

        scanf("%d",&n);
    }

    for (int a = 1; a<=n; a++) {

        for (int b = 1;b <=a;b++)

            printf("%d",a);

        printf("\n");

    return 0;
}     
这个是正确的写法   我写的时候 漏写printf换行前面 我标红的大括号  但结果r仍是一样的   
我想了下  如果漏掉那个括号 结果不应该是这样的么
1
2
2
3
3
3
4
4
4
4
但为什么输出来 不是这样子  还是跟正确输出的一样呢?


作者: lixiangzhou    时间: 2014-3-18 17:33
for循环结束的标记并非只有{ },如果for循环后面只有一条语句的话,效果是一样的。
如:
for(int i = 0; i < 5; i++)  //此处注意不要有;号
    printf("hello");
与下面的是一样的效果
for(int i = 0; i < 5; i++)
{
    printf("hello");
}


作者: bubuatt    时间: 2014-3-18 17:34
在循环和判断语句中,如果只有一句执行的,可以去掉括号,如果执行语句多于一条则需要括号,所以那对括号可以去掉
作者: 离渊    时间: 2014-3-19 11:17
bubuatt 发表于 2014-3-18 17:34
在循环和判断语句中,如果只有一句执行的,可以去掉括号,如果执行语句多于一条则需要括号,所以那对括号可 ...

可是这是两句都执行的啊
作者: bubuatt    时间: 2014-3-19 11:23
如果你没加括号,默认循环只会执行一句,另一句就在循环体外,所以一句可以不加,2句或者以上必须加
作者: 舒华    时间: 2014-3-19 14:28
这个要学习一点编译的知识;在运行c程序必须进行编译程序,就要先进行语法分析,语义分析;当有一条语句的时候编译器会自动的,默认认为执行一条语句;需要进行两条以上的语句执行,必须使用“{}”;设计编译原理的永动机知识。理解要点:一条语句默认有“{}”;两条以上不能省略;必须用”{}“。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2