C/C++/Java for语句规范写法浅析(二重及以上循环)

 举个简单例子:用二重循环输出1-100 数字;

 当然我这里是举例子针对二重及以上的循环, 完全可以使用单循环,于是便飞快的完成了以下

 代码:

  如下就用C/C++举例。

 C++代码(VS2008):

 

#include "stdafx.h"
#include <iostream>

using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    int i = 0;
    int j = 0;
    int count = 0;

    cout<<"Run Result:"<< endl;
    for (;i<10;i++)
    {
        for (;j<10;j++)
        {

            count++;

            cout<< "/t"<< count<<endl;

        }
    }
    return 0;
}

 

  Run Result:
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10

观察运行结果并非是我们预想结果,经过分析调试最后明白:


     i执行 i=0时,内循环j(j=0~10)内循环结束j=10内循环;

     i = 1时,j=10;内循环被处理不再执行,直到i=10;退出循环模块,程序结束;

    所以问题的关键就是内循环只有在i=0时,j=10时被执行;所以应当在每次外循环

    开始或者每次内循环结束之时将内循环值清0;


C++正确代码:

 


#include "stdafx.h"
#include <iostream>

using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    int i = 0;
    int j = 0;
    int count = 0;

    cout<<"Run Result:"<< endl;
    for (i=0;i<10;i++)


    {
        for (
j=0 ; j<10; j++)//解决location1
        {

            count++;
            cout<<"cout: " <<count <<endl;
       

        }
            cout<<"i= "<< i<< "j= "<< j<< endl;
            //j = 0;//
//解决location2
    }
    return 0;
}

Run Result:
cout: 1
cout: 2
cout: 3
cout: 4
cout: 5
cout: 6
cout: 7
cout: 8
cout: 9
cout: 10
i= 0j= 10
cout: 11
cout: 12
cout: 13
cout: 14
cout: 15
cout: 16
cout: 17
cout: 18
cout: 19
cout: 20
i= 1j= 10
cout: 21
cout: 22
cout: 23
cout: 24
cout: 25
cout: 26
cout: 27
cout: 28
cout: 29
cout: 30
i= 2j= 10
cout: 31
cout: 32
cout: 33
cout: 34
cout: 35
cout: 36
cout: 37
cout: 38
cout: 39
cout: 40
i= 3j= 10
cout: 41
cout: 42
cout: 43
cout: 44
cout: 45
cout: 46
cout: 47
cout: 48
cout: 49
cout: 50
i= 4j= 10
cout: 51
cout: 52
cout: 53
cout: 54
cout: 55
cout: 56
cout: 57
cout: 58
cout: 59
cout: 60
i= 5j= 10
cout: 61
cout: 62
cout: 63
cout: 64
cout: 65
cout: 66
cout: 67
cout: 68
cout: 69
cout: 70
i= 6j= 10
cout: 71
cout: 72
cout: 73
cout: 74
cout: 75
cout: 76
cout: 77
cout: 78
cout: 79
cout: 80
i= 7j= 10
cout: 81
cout: 82
cout: 83
cout: 84
cout: 85
cout: 86
cout: 87
cout: 88
cout: 89
cout: 90
i= 8j= 10
cout: 91
cout: 92
cout: 93
cout: 94
cout: 95
cout: 96
cout: 97
cout: 98
cout: 99
cout: 100
i= 9j= 10
结果正确!


   所以在做for双重循环时候,最好不要先麻烦省掉第一个分号前面的域,虽然那样完全符合语

   法,不要为了那几Byte空间和时间将其省去,这样会给带来很多不必要的麻烦,或者 让你

   花常时间来调试,严重影响你工作的效率,所以作为优秀的程序员应该养成良好编写代码习

   惯和风格,你会因此而收益良多。

   就此打住,小弟也是偶遇此问题,特写成文章,供大家参考,如有错误请多指教!

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值