我想求分离出来的数,然后进行加减,但为什么这个代码只能输出每个位上的数?问题出在哪?

#include<stdio.h>
int main()
{
    int x,a,b,c,d,e,f,g;
    printf("请输入一个四位数:\n",x);
    scanf("%d",&x);
      a=(int)(x/1000);
      b=(int)(x/100)-a*10;
      c=(int)(x/10)-a*100-b*10;
      d=(int)x-a*1000-b*100-c*10;
      printf("%d %d %d %d",a,b,c,d);
        scanf("%d %d %d %d",a,b,c,d);
        e=d*10+a;
        f=c*10+b;
        printf("%d %d",&e,&f);
          scanf("%d %d",&e,&f);
          g=e-f;
          printf("%d",&g);
}
 

 

  scanf("%d %d %d %d",a,b,c,d);
        e=d*10+a;
        f=c*10+b;
        printf("%d %d",&e,&f);
          scanf("%d %d",&e,&f);
          g=e-f;
          printf("%d",&g);

这部分代码不知楼主想要表达些什么?

int x,a,b,c,d,e,f,g;

printf("请输入一个四位数:\n");

scanf("%d",&x);

//整形相除结果还是整形数,不需要强制转换,这种题目一般用相除和取模结合使用

a=x/1000;  //千位

b=x/100%10; //百位

c=x/10%10; //十位

d=x%10;  //个位

e=d*10+a;

f=c*10+b;

printf("%d %d", e, f);

scanf("%d %d",&e,&f);

g=e-f;

printf("%d", g);

有空可以看看这个视频,对你学习C语言帮助应该比较大的。https://edu.csdn.net/course/detail/2766

因为你取地址符号写的位置不太对

#include<stdio.h>
int main()
{
    int x,a,b,c,d,e,f,g;
    printf("请输入一个四位数:\n");
    scanf("%d",&x);
    a=(int)(x/1000);
    b=(int)(x/100)-a*10;
    c=(int)(x/10)-a*100-b*10;
    d=(int)x-a*1000-b*100-c*10;
    printf("%d %d %d %d",a,b,c,d);
    scanf("%d %d %d %d", &a, &b, &c, &d);
    e=d*10+a;
    f=c*10+b;
    printf("%d %d", e, f);
    scanf("%d %d",&e,&f);
    g=e-f;
    printf("%d", g);
    
}

稍微改了改

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632