读书人

哪位高手能帮忙解决一个c++小疑点

发布时间: 2012-04-24 14:15:38 作者: rapoo

谁能帮忙解决一个c++小问题 ?
#include<iostream>
using namespace std;
int main(){
int n=0,a,b;
for(int i=100;i<=999;i++){
a=i/100; \\这里的i为什么要除100而不是其他的数, 下面的i也是一样的
b=i%10;
if(a==b){
n++; \\这里的n为什么要++啊?
cout.width(5);
cout<<i;
if(n%5==0) cout<<endl; \\帮忙解释一下这里是什么意思啊?

return 0;
}


本人 刚学C++有许多问题不懂 , 谢谢大家帮忙解决问题

[解决办法]

C/C++ code
#include<iostream>using namespace std;int main(){    int n=0,a,b;    for(int i=100;i<=999;i++)    {        a=i/100; //看楼主的程序是要求百数与个数相等的三位数,这个a是计算出百位是多少            b=i%10;        if(a==b)        {            n++; //这里的n是计算出总共有多少个百倍与个位相等的数。                cout.width(5);            cout<<i;            if(n%5==0) cout<<endl; //每五个数换行        }                    }        return 0;    }
[解决办法]
这是个低效的3位回文算法。
C/C++ code
#include<iostream>using namespace std;int main(){    int n=0,a,b;    for(int i=100;i<=999;i++)    {        a=i/100;    //  a=i的百位值        b=i%10;     //  b=i的个位值        if(a==b)    //  当一个三位数的百位与个位相同,我们就认为这个三位数是个回文数        {            n++;    //  n用来计数,以便控制每行显示的回文数量            cout.width(5);            cout<<i;            if(n%5==0) cout<<endl;  //  每输出5个回文就换行        }    }    return 0;}
[解决办法]
恢复下,看看有没有分
[解决办法]
这是达到同样效果的另一种写法,效率高很多:
C/C++ code
#include<iostream>using namespace std;int main(){    for (int i=1;i<10;++i)        for (int j=0;j<100;j+=10)        {            cout.width(5);            cout<<i*100+j+i;            if ((j+10)%50==0)                cout<<endl;        }    return 0;}
[解决办法]
直接输出字符的方法:
C/C++ code
#include<iostream>using namespace std;int main(){    for (char i='1';i<='9';++i)        for (char j='0';j<='9';++j)        {            cout<<i<<j<<i<<' ';            if ((j-'0'+1)%5==0)                cout<<endl;        }    return 0;}
[解决办法]
怎么看有点象倒分的嫌疑。。。。

读书人网 >C++

热点推荐