我有一个关于班级的编程作业,其中输出必须与文件的内容完全匹配。对于这个问题,我必须使用一个循环,该循环将连续打印出具有指定格式的值。我的问题是,当循环完成时,阻止最后一个换行符出现。
由于类策略的原因,我无法包含我想要实现的实际代码或最终目标,但可以说我正在尝试使用for循环输出数字的阶乘。我想用行分隔答案,但我不希望最后一个在其下开始新行。我该如何解决此问题而又不及早停止新的循环或以后必须创建另一个循环?
8321506 3912640
假设数字是3。 我期望输出:
int count;
int number; // some random value
int sum = 1;
for(count = 1; count <= number; count++)
{
sum *= count;
printf("Current Sum: %d\n", sum);
}
但是,我得到了
Current Sum: 1
Current Sum: 2
Current Sum: 6 //ends here, no newline
答案 0 :(得分:2)
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");
}
这是解决我目前能想到的问题的最快,最简单的方法。
答案 1 :(得分:2)
解决此问题的常用方法是将第一种情况视为特殊情况,而不是最后一种情况。由于总是存在第一种情况,因此实际上更简单。
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或负数时会发生什么?]
答案 2 :(得分:0)
这是因为printf("Current Sum: %d\n", sum)
会在每个循环中生成新行。当使用计数<=数字时,我的回答如下:
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 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");
}
}
答案 3 :(得分:0)
只需将这种情况(最后一行)放在循环之外
for(count = 1; count < number; count++)
{
sum *= count;
printf("Current Sum: %d\n", sum);
}
sum *= count;
printf("Current Sum: %d", sum);
答案 4 :(得分:0)
您可以在循环内添加带有条件的中断词
#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;
}
当count等于3时,循环将结束,结果是printf(“ \ n”);将不会在上一次迭代中执行