半路学习 发表于 2021-2-24 14:09:58

退格符问题

#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:15:28

本帖最后由 昨非 于 2021-2-24 14:18 编辑

        printf("\b"); 不修改也不会多个星号啊

半路学习 发表于 2021-2-24 14:32:58

昨非 发表于 2021-2-24 14:15
printf("\b"); 不修改也不会多个星号啊

我用的Dev-c++运行结果会多个乘号*,后面加个空格就不会有*了

昨非 发表于 2021-2-24 14:34:12

半路学习 发表于 2021-2-24 14:32
我用的Dev-c++运行结果会多个乘号*,后面加个空格就不会有*了

那可能是编译器的问题吧

LAL7758 发表于 2021-2-24 14:40:18

"/b"是将输出的定位前移一个字符,printf(“/b”);后面没东西往前移自然就有*;而printf("\b ")或
者printf("\b\b")有一个空格可以移动,就把*给覆盖了

han125416866 发表于 2021-2-24 16:07:05

#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;
}
这个思路你看可好?

siaj 发表于 2021-2-24 17:11:35

\b的含义是,将光标从当前位置向前(左)移动一个字符(遇到\n或\r则停止移动),并从此位置开始输出后面的字符
页: [1]
查看完整版本: 退格符问题