退格符问题
#include <stdio.h>int main()
{
int i=2,n;
printf("请输入需要分解的正整数:\n");
scanf("%d",&n);
printf("分解质因数的结果为:\n%d=",n);
while(n>=2)
{
if(n%i==0)
{
printf("%d*",i);
n/=i;
}
else
i++;
}
printf("\b"); //这样最后输出会多一个*号,\b后面多敲一个空格printf("\b ")或者printf("\b\b"),*号就不会多出来,怎么回事
return 0;
}
只能用退格符解决多出来的*号吗? 本帖最后由 昨非 于 2021-2-24 14:18 编辑
printf("\b"); 不修改也不会多个星号啊 昨非 发表于 2021-2-24 14:15
printf("\b"); 不修改也不会多个星号啊
我用的Dev-c++运行结果会多个乘号*,后面加个空格就不会有*了 半路学习 发表于 2021-2-24 14:32
我用的Dev-c++运行结果会多个乘号*,后面加个空格就不会有*了
那可能是编译器的问题吧 "/b"是将输出的定位前移一个字符,printf(“/b”);后面没东西往前移自然就有*;而printf("\b ")或
者printf("\b\b")有一个空格可以移动,就把*给覆盖了
#include <stdio.h>
int main()
{
int i = 2, n;
printf("请输入需要分解的正整数:\n");
scanf_s("%d", &n);
printf("分解质因数的结果为:\n%d=", n);
while (n >= 2)
{
if (n % i == 0)
{
printf("%d*", i);
n /= i;
}
else
i++;
if (n == i)
break;
}
printf("%d", n);
return 0;
}
这个思路你看可好? \b的含义是,将光标从当前位置向前(左)移动一个字符(遇到\n或\r则停止移动),并从此位置开始输出后面的字符
页:
[1]