这段C++怎么改成每行5个数

2025-12-17 23:38:36
推荐回答(3个)
回答1:

建议不要用("%d\n",i),这是输出格式控制,通常是用printf函数时才用输出格式控制。
你可以把if (n%5==0) cout<<("%d\n",i)<<" ";
改成if (n%5==0) cout<<"\n"<但仅仅这样改还不行,因为仅仅这样改第一行只输出四个数(具体你可以分析一下),把++n放后边,即
if (w)
{

if (n%5==0) cout<<"\n"< else cout<<("%d\t",i)<<" ";
++n;
}
最后,为了使输出的数比较整齐,你还可以用setw(),它的函数头是iomanip.h
最终建议:
#include
#include
#include
void main()
{ int n=0, i, j,w,k;
for(i=5;i<=100; i++)
{w=1;
k=sqrt(i);
for (j=2; j<=k; j++)
if (i%j==0)
{w=0;break;}
if (w)
{

if (n%5==0) cout<<"\n"< else cout< ++n;
}
}
}
补充:要指定输出列数或者对齐,可用控制符setw,其头文件是iomanip.h。如,setw(5)的作用是为后面的输出项预留5列,如输出长度不足5列,自动向右靠齐,如果超过5列,则按实际长度输出。在C中用printf函数输出时,可以指定输出格式

回答2:

cout 和printf的格式是不同的

<<("%d\n",i)<<" 里面的 \n没起到作用,所以不会回车。

应该改成
cout<
下面的
cout<<("%d\t",i)<<" ";

也改成相应的 cout<

回答3:

#include
#include
void main()
{ int n=0, i, j,w,k;
for(i=5;i<=100; i+=2)
{w=1;
k=sqrt(i);
for (j=2; j<=k; j++)
if (i%j==0)
{w=0;break;}
if (w)
{
++n;
cout << i << " ";
if (n%5==0) cout<<"\n";

}
}
}