请懂C的帮我看看到底程序在哪里出了问题

#include<stdio.h>#include<stdlib.h>#include<time.h>int ttemp;void main(){ int sum,temp; int rerand_ten(); temp=rerand_ten(); int Add(float y,char flag,int i); sum=Add(temp,1,1)+temp; printf("%d\n",sum);}int rerand_ten(){ int x; srand((unsigned)time(NULL)); x=rand()%10; return x;}int Add(float y,char flag,int i){ int x,sum; if(flag=='1') x=rerand_ten(); sum=x+y; if(i) printf("\t%d+%d=",y,x); else ttemp=x; if(i==2) printf("%d",x); return sum;}
这上面是我简写的部分源码,下面是我运行的结果截图.

下面是我调试过程中的一些信息

问题就纠结在Add函数里
当我使用printf("%d+%d=",y,x);的时候,不知道哪里跑出来的莫民奇妙的值。
另外,我的y是使用float,使用%d的时候应该会自动转换成整型输出。现在也不正确,即使换成%3.2f也没用。也就是说程序的问题应该不是出在这句输出上面,但奇怪的是,我的值都是确定的,但为什么会输出乱七八糟的东西来?也用了fflush(stdin)清空过缓存了,但还是没用。
修正一下主函数里的第五行。
调用add的句子应该改成
sum=add(temp,'1',1);

对下面这句,加上类型强制转换  (int)

  if(i)
        printf(" %d+%d=",(int)y,(int)x);

 

修改后的程序:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int ttemp;
int main(){
    int sum,temp;
    int rerand_ten();
    temp=rerand_ten();
    int Add(float y,char flag,int 漏做i);
    sum=Add(temp,'1',1)+temp;
    printf("%d ",sum);
}
int rerand_ten(){ 
  余猛  int x;
    srand((unsigned)time(NULL));
    x=rand()%10;
    return x;
}
int Add(float y,char flag,int i){
    int x,sum;
    if(flag=='1')
        x=rerand_ten();
    sum=x+y;
    if(i)
   竖搜桥     printf(" %d+%d=",(int)y,(int)x);
    else 
        ttemp=x;
    if(i==2)
        printf("%d",x);

    return sum;
}

int Add(float y,char flag,int i){
int x,sum;
if(flag=='1') ---> 你传的是1,不等于'1'哦世蚂罩,所以这个分支进物段不去,x是搜闹个未初始化的随机值
x=rerand_ten();
sum=x+y;
if(i)
printf("\t%d+%d=",y,x);
else
printf("\t%3.2f+%d=",y,x);
运行没问题?
4.00+4=12