输出必须像这样(例子):
1+2+3+4
我得到的是:
1+2+3+4+
我没有使用任何函数添加'+',我只是在创建'num'的循环中执行以下操作:
printf("%d+", num);
如何删除最后一个'+'?有没有其他充分的方法与 printf?我搜索了一堆,只得到了将数字存储在数组中然后打印它们的结论;使用删除最后一个字符的函数。问题是,我不允许在这种情况下使用数组..
编辑:我尝试的另一种方法是使用'%d'中的'+'标记:
printf("%+d", num);
虽然这似乎比我正在做的方法更好,但我仍然需要在开头删除'+':
+1+2+3+4
任何帮助都会很好!
编辑:以下是我的循环功能:
int perfectNumGen(int num)
{
int perfNumAlgo = pow(2, num - 1)*(pow(2, num) - 1);
int factorNum = 1;
printf("%d=", num);
while (factorNum < num)
{
if (num % factorNum == 0)
printf("%+d", factorNum); //this is where i need help
factorNum++;
}
}
答案 0 :(得分:2)
在没有&#34; +&#34;
之前打印一个数字printf("%d", num);
然后循环
printf("+%d", num);
根据你的代码。这应该工作
int perfectNumGen(int num)
{
int perfNumAlgo = pow(2, num - 1)*(pow(2, num) - 1);
int factorNum = 1;
printf("%d=", num);
if (num % factorNum == 0)
printf("%d", factorNum);
factorNum++;
while (factorNum < num)
{
if (num % factorNum == 0)
printf("+%d", factorNum); //this is where i need help
factorNum++;
}
}
我同意这不是最好的方法..它确实使代码看起来有点脏......但是执行时间没有受到影响..
答案 1 :(得分:0)
在循环中,根据迭代次数打印行。即:
int lim = 4;
for (int num = 0; num < lim; num++)
{
if (num < lim)
{
printf("%d+", num);
}
else
{
printf("%d", num);
}
}
答案 2 :(得分:0)
我有一个花哨的技巧:
您可以在所有数字后打印"\b "
(不可见的退格符号和空格)。
\b
会将不可见光标向后移动一个符号。然后空格会在上面+
“上方”打印并删除它。