关于一道C语言的题目

两个乒乓球队进行比赛,各出三人。甲队为A,B,C三人,乙队为X,Y,Z三人。已抽签决队定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X,z比,请编程序找出三对赛手的名单。
程序:
#include<stdio.h>
int main()
{
char i,j,k;
for(i='x';i<='z';i++)
for(j='x';j<='z';j++)
if(i!=j)
for(k='x';k<='z';k++)
if(i!=k&&j!=k)
if(i!='x'&&k!='x'&&k!='z')
printf("A--%c\nB--%c\nC--%c\n",i,j,k);
return 0;
}
可是我看不懂,能帮我解释下吗,谢谢!

以下程序与你的程序是一样的,只是看着更清理一些,希望对你有帮助。
#include<stdio.h>
int main()
{
    char i,j,k; //对应三个人a b c
    for(i='x';i<='z';i++) //对手可能是xyz中的任意一人,所以三个数都要检查
        for(j='x';j<='z';j++)//同上
            for(k='x';k<='z';k++)//同上
                if ( i!=j && j!=k && k!=i ) //两个人不能有相同的对手
                    if(i!='x'&&k!='x'&&k!='z') //A说他不和X比,C说他不和X、Z比
                        printf("A--%c\nB--%c\nC--%c\n",i,j,k); //满足条件,输出对手
    return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-08-16
#include<stdio.h>
int main()
{
char i,j,k;
for(i='x';i<='z';i++) //x选手到z选手选出第一个
for(j='x';j<='z';j++) //x选手到z选手选出第二个
if(i!=j) //第一个与第二个不能是同一个人
for(k='x';k<='z';k++) //x到z选手选出第三个
if(i!=k&&j!=k) //第一个与第三个,第二个与第三个不能是相同的人
if(i!='x'&&k!='x'&&k!='z') 如果第一个与第三个都不为x以及第三个不为z时则输出组合
printf("A--%c\nB--%c\nC--%c\n",i,j,k);
return 0;
}
分析一下
A B C
x y z(不可能)
x z y(不可能)所以第一个不能为x
……第三个不为x和z同理本回答被提问者和网友采纳
第2个回答  2014-08-18
首先建一个工程为hcopy的win32 console application工程,然后写如下的代码:
#include <stdio.h>
int main(int argc, char* argv[])
{
FILE *fp1, *fp2;
if((fp1 = fopen(argv[1], "r")) == NULL)
{
printf("File Open failed\n");
return 1;
}
if((fp2 = fopen(argv[2], "w")) == NULL)
{
printf("File Open failed\n");
return 1;
}
while(feof(fp1) == 0)
{
fputc(fgetc(fp1), fp2);
}
fclose(fp1);
fclose(fp2);
return 0;
}
编译连接之后,在cmd中找到hcopy.exe文件路径,在该路径中建任意的两个txt文件(如f1.txt和f2.txt)。然后在cmd中输入hcopy f1.txt f2.txt即可
打字不易,如满意,望采纳。
相似回答