#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为什嚒只会读取一次
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- Xefvan 2016-11-02 14:30关注
汗~
为什么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); }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥30 这是哪个作者做的宝宝起名网站
- ¥60 版本过低apk如何修改可以兼容新的安卓系统
- ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
- ¥50 有数据,怎么建立模型求影响全要素生产率的因素
- ¥50 有数据,怎么用matlab求全要素生产率
- ¥15 TI的insta-spin例程
- ¥15 完成下列问题完成下列问题
- ¥15 C#算法问题, 不知道怎么处理这个数据的转换
- ¥15 YoloV5 第三方库的版本对照问题
- ¥15 请完成下列相关问题!