该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
解释如下:#include //包含头文件stdio
#define N 10 //宏定义遇到N的地方用10代替
main() //主函数
{
int i, p, q, t, id[N]; //定义int型变量i,p,q,t其中id[10]表示有10个元素的一维数组
for (i = 0; i < N; i++) //for循环由0开始循环10次
id[i] = i; //每次给数组id赋值0,1,2,3,4,5,6,7,8,9
while (scanf("%d %d\n", &p, &q) == 2) //while循环 这里搞不懂啥意思怎么会让scanf与2相等
{
if (id[p] == id[q]) //如果id[p]和id[q]相等
continue; //跳过后面的语句,重新执行下一次的while
for (t = id[p], i = 0; i < N; i++) //for循环 t=id[p],i=0,i<10 循环10次
if (id[i] == t) //如果id[i]等于t
id[i] = id[q]; //让id[i]等于id[q];
printf(" %d %d\n", p, q); //输出p和q的值
}
}提问者评价谢谢,scanf函数返回值等于2,说明两个输入参数正确都是正确(int),=1,1个,=0,0个
说明:程序是有问题的,while (scanf("%d %d\n", &p, &q) == 2) 应该改成 while (scanf("%d %d", &p, &q) == 2)才符合编程者意思,从程序看程序的意思是想把数组中所有与id[p]数值相等的数都替换成id[q]的内容。所以作用是“查找并全部替换”!