如何在循环的最后停止换行?
How Can I Stop Newline at the Very End of a Loop?
我有一个 class 的编程作业,其中输出必须与文件的内容完全匹配。对于这个问题,我必须使用一个循环来连续打印出具有指定格式的值。我的问题是在循环完成时停止出现最后一个换行符。
由于 class 政策,我无法包含我的实际代码或我试图实现的最终目标,但假设我正在尝试使用 for-环形。我想用行分隔答案,除了我不希望最后一个在它下面开始一个新行。我怎样才能解决这个问题而不提前停止新的或者之后必须创建另一个循环?
int count;
int number; // some random value
int sum = 1;
for(count = 1; count <= number; count++)
{
sum *= count;
printf("Current Sum: %d\n", sum);
}
假设数字是 3。
我期望输出:
Current Sum: 1
Current Sum: 2
Current Sum: 6 //ends here, no newline
但是,我得到:
Current Sum: 1
Current Sum: 2
Current Sum: 6
//new line that I don't want
int count;
int number; // some random value
int sum = 1;
for(count = 1; count <= number; count++)
{
sum *= count;
printf("Current Sum: %d", sum);
if(count+1 <= number)
printf("\n");
}
这是我目前能想到的解决这个问题最快最简单的方法。
这是因为 printf("Current Sum: %d\n", sum)
,你每次循环都会生成新行。当使用 count <= number 时,我的回答如下:
int count;
int number; // sum random value
int sum = 1;
for(count = 1; count <= number; count++)
{
sum *= count;
printf("Current Sum: %d", sum);
if(count!=number){
printf("\n");
}
}
但是如果你使用的是 count < number :
int count;
int number; // sum random value
int sum = 1;
for(count = 1; count < number; count++)
{
sum *= count;
printf("Current Sum: %d", sum);
if(count!=number-1){
printf("\n");
}
}
只需将那个案例(最后一行)排除在循环之外
for(count = 1; count < number; count++)
{
sum *= count;
printf("Current Sum: %d\n", sum);
}
sum *= count;
printf("Current Sum: %d", sum);
您可以在循环内添加带条件的中断词
#include <iostream>
using namespace std;
int main() {
int count;
int number=3; // sum random value
int sum = 1;
for(count = 1; count <= number; count++) {
sum *= count;
printf("Current Sum: %d", sum);
if(count==3) {
break;
}
printf("\n");
}
return 0;
}
当计数等于 3 时循环将结束,因此 printf("\n");不会在最后一次迭代中执行
解决此问题的一种常见方法是将第一种情况视为特殊情况而不是最后一种情况。因为总有第一种情况,这样其实更简单。
int count;
int number; // some random value
int sum = 1;
printf("Current Sum: %d", sum);
for (count = 2; count <= number; count++) {
sum *= count;
printf("\nCurrent Sum: %d", sum);
}
[明明是产品,为什么叫“sum
”?当 number
为 0 或负数时,你希望发生什么?]
我有一个 class 的编程作业,其中输出必须与文件的内容完全匹配。对于这个问题,我必须使用一个循环来连续打印出具有指定格式的值。我的问题是在循环完成时停止出现最后一个换行符。
由于 class 政策,我无法包含我的实际代码或我试图实现的最终目标,但假设我正在尝试使用 for-环形。我想用行分隔答案,除了我不希望最后一个在它下面开始一个新行。我怎样才能解决这个问题而不提前停止新的或者之后必须创建另一个循环?
int count;
int number; // some random value
int sum = 1;
for(count = 1; count <= number; count++)
{
sum *= count;
printf("Current Sum: %d\n", sum);
}
假设数字是 3。 我期望输出:
Current Sum: 1
Current Sum: 2
Current Sum: 6 //ends here, no newline
但是,我得到:
Current Sum: 1
Current Sum: 2
Current Sum: 6
//new line that I don't want
int count;
int number; // some random value
int sum = 1;
for(count = 1; count <= number; count++)
{
sum *= count;
printf("Current Sum: %d", sum);
if(count+1 <= number)
printf("\n");
}
这是我目前能想到的解决这个问题最快最简单的方法。
这是因为 printf("Current Sum: %d\n", sum)
,你每次循环都会生成新行。当使用 count <= number 时,我的回答如下:
int count;
int number; // sum random value
int sum = 1;
for(count = 1; count <= number; count++)
{
sum *= count;
printf("Current Sum: %d", sum);
if(count!=number){
printf("\n");
}
}
但是如果你使用的是 count < number :
int count;
int number; // sum random value
int sum = 1;
for(count = 1; count < number; count++)
{
sum *= count;
printf("Current Sum: %d", sum);
if(count!=number-1){
printf("\n");
}
}
只需将那个案例(最后一行)排除在循环之外
for(count = 1; count < number; count++)
{
sum *= count;
printf("Current Sum: %d\n", sum);
}
sum *= count;
printf("Current Sum: %d", sum);
您可以在循环内添加带条件的中断词
#include <iostream>
using namespace std;
int main() {
int count;
int number=3; // sum random value
int sum = 1;
for(count = 1; count <= number; count++) {
sum *= count;
printf("Current Sum: %d", sum);
if(count==3) {
break;
}
printf("\n");
}
return 0;
}
当计数等于 3 时循环将结束,因此 printf("\n");不会在最后一次迭代中执行
解决此问题的一种常见方法是将第一种情况视为特殊情况而不是最后一种情况。因为总有第一种情况,这样其实更简单。
int count;
int number; // some random value
int sum = 1;
printf("Current Sum: %d", sum);
for (count = 2; count <= number; count++) {
sum *= count;
printf("\nCurrent Sum: %d", sum);
}
[明明是产品,为什么叫“sum
”?当 number
为 0 或负数时,你希望发生什么?]