#include<stdio.h>
int min(int x,int y){
int temp;
if (x>y)
temp=y;
else
temp=x;
return temp;
}
int max(int x,int y){
int temp;
if (x>y)
temp=x;
else
temp=y;
return temp;
}
int main(){
int str[10]={0};
int i=0;
for(i=0;i<10;i++){
str[i]=i;
}
int t;
scanf("%d",&t);
int x,y;
for(i=0;i<t;i++){
scanf("%d %d",&x,&y);
x=min(x,y);
y=max(x,y);
str[y]=str[x];
for(i=0;i<10;i++){
printf("%d ",str[i]);
}
printf("\n");
}
return 0;
}
汗~
为什么scanf为什嚒只会读取一次?
在你的代码里
for(i=0;i<t;i++){
scanf("%d %d",&x,&y);
x=min(x,y);
y=max(x,y);
str[y]=str[x];
for(i=0;i<10;i++){
printf("%d ",str[i]);
}
printf("\n");
}
外层的i赋值为0,进入内部循环,这时会执行scanf(),也就是你说的一次scanf(),在内部存在另一个循环当循环结束的时候此时的i位10。
而你自己输入的是t为3,即
for(i=0;i<t;i++)
此时再次判断的时候不满足条件,因此退出循环,所以最终只有一次scanf()
而且这段代码这样写也有问题,当你输入的t值大于11的时候,会导致一直循环,你可以自己验证
对了,你可以在循环的最下面加上一行代码,用来显示此时i的值
for(i=0;i<t;i++){
scanf("%d %d",&x,&y);
x=min(x,y);
y=max(x,y);
str[y]=str[x];
for(i=0;i<10;i++){
printf("%d ",str[i]);
}
printf("\n");
printf("%d", i);
}
scanf("%d %d",&x,&y);
->
scanf("%d %d ",&x,&y);