求任意两个集合的笛卡尔积

时间:2022-09-21 10:21:26
如题:用C语言写。
求任意两个集合的笛卡尔积(重点是:集合中的元素为char)
底下是元素为int的,这个可以改为char的么?(我自己做了好久都没对)
#include <stdio.h>
# define m 3
# define n 2
void main()
{
    int i,j,a[m],b[n];
    for (i=0;i<m;i++)
        scanf("%d",&a[i]);
    for (j=0;j<n;j++)
        scanf("%d",&b[j]);
printf("集合a:\n");
for (i=0;i<m;i++) printf("%d\t",a[i]);
printf("\n集合b:\n");
for (i=0;i<n;i++) printf("%d\t",b[i]);
    printf("\n{");
    for (i=0;i<m;i++)
        for (j=0;j<n;j++)
        printf("<%d,%d> ",a[i],b[j]);
    
        
        printf("}\n");
}

9 个解决方案

#1


大家是去午休了么。。。没人来啊?

#2


需要我解释一下笛卡尔积吗??
假设集合A={a,b},集合B={0,1,2},则两个集合的笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1), (b,2)}

#3


应该没有原则问题。
只是void main( )不规范,ANSI C要求是int main(void)

#4


数组是int类型的,不能存储a,b,c之类的字符,改为char数组吧

#5


scanf,printf两函数中用%c格式

#6


引用 4 楼 cao_julians 的回复:
数组是int类型的,不能存储a,b,c之类的字符,改为char数组吧
问的就是这啊。。怎么改呢??我不是很懂,能详细讲一下吗??

#7


引用 3 楼 cao_julians 的回复:
应该没有原则问题。
只是void main( )不规范,ANSI C要求是int main(void)
void main()不规范啊     书上是这样写的。。。

#8


#include <stdio.h>
#define m 3
#define n 2
int main() {
    int i,j;
    char a[m],b[n];

    for (i=0;i<m;i++) scanf("%c",&a[i]);
    getchar();//吃掉\n
    for (j=0;j<n;j++) scanf("%c",&b[j]);
    printf("集合a:\n");
    for (i=0;i<m;i++) printf("%c\t",a[i]);
    printf("\n集合b:\n");
    for (j=0;j<n;j++) printf("%c\t",b[j]);
    printf("\n{");
    for (i=0;i<m;i++)
        for (j=0;j<n;j++)
            printf("<%c,%c> ",a[i],b[j]);
    printf("}\n");
    return 0;
}
//ABC
//12
//集合a:
//A       B       C
//集合b:
//1       2
//{<A,1> <A,2> <B,1> <B,2> <C,1> <C,2> }
//

#9


引用 8 楼 zhao4zhong1 的回复:
#include <stdio.h>
#define m 3
#define n 2
int main() {
    int i,j;
    char a[m],b[n];

    for (i=0;i<m;i++) scanf("%c",&a[i]);
    getchar();//吃掉\n
    for (j=0;j<n;j++) scanf("%c",&b[j]);
    printf("集合a:\n");
    for (i=0;i<m;i++) printf("%c\t",a[i]);
    printf("\n集合b:\n");
    for (j=0;j<n;j++) printf("%c\t",b[j]);
    printf("\n{");
    for (i=0;i<m;i++)
        for (j=0;j<n;j++)
            printf("<%c,%c> ",a[i],b[j]);
    printf("}\n");
    return 0;
}
//ABC
//12
//集合a:
//A       B       C
//集合b:
//1       2
//{<A,1> <A,2> <B,1> <B,2> <C,1> <C,2> }
//
赵老师。。太感谢了!!

#1


大家是去午休了么。。。没人来啊?

#2


需要我解释一下笛卡尔积吗??
假设集合A={a,b},集合B={0,1,2},则两个集合的笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1), (b,2)}

#3


应该没有原则问题。
只是void main( )不规范,ANSI C要求是int main(void)

#4


数组是int类型的,不能存储a,b,c之类的字符,改为char数组吧

#5


scanf,printf两函数中用%c格式

#6


引用 4 楼 cao_julians 的回复:
数组是int类型的,不能存储a,b,c之类的字符,改为char数组吧
问的就是这啊。。怎么改呢??我不是很懂,能详细讲一下吗??

#7


引用 3 楼 cao_julians 的回复:
应该没有原则问题。
只是void main( )不规范,ANSI C要求是int main(void)
void main()不规范啊     书上是这样写的。。。

#8


#include <stdio.h>
#define m 3
#define n 2
int main() {
    int i,j;
    char a[m],b[n];

    for (i=0;i<m;i++) scanf("%c",&a[i]);
    getchar();//吃掉\n
    for (j=0;j<n;j++) scanf("%c",&b[j]);
    printf("集合a:\n");
    for (i=0;i<m;i++) printf("%c\t",a[i]);
    printf("\n集合b:\n");
    for (j=0;j<n;j++) printf("%c\t",b[j]);
    printf("\n{");
    for (i=0;i<m;i++)
        for (j=0;j<n;j++)
            printf("<%c,%c> ",a[i],b[j]);
    printf("}\n");
    return 0;
}
//ABC
//12
//集合a:
//A       B       C
//集合b:
//1       2
//{<A,1> <A,2> <B,1> <B,2> <C,1> <C,2> }
//

#9


引用 8 楼 zhao4zhong1 的回复:
#include <stdio.h>
#define m 3
#define n 2
int main() {
    int i,j;
    char a[m],b[n];

    for (i=0;i<m;i++) scanf("%c",&a[i]);
    getchar();//吃掉\n
    for (j=0;j<n;j++) scanf("%c",&b[j]);
    printf("集合a:\n");
    for (i=0;i<m;i++) printf("%c\t",a[i]);
    printf("\n集合b:\n");
    for (j=0;j<n;j++) printf("%c\t",b[j]);
    printf("\n{");
    for (i=0;i<m;i++)
        for (j=0;j<n;j++)
            printf("<%c,%c> ",a[i],b[j]);
    printf("}\n");
    return 0;
}
//ABC
//12
//集合a:
//A       B       C
//集合b:
//1       2
//{<A,1> <A,2> <B,1> <B,2> <C,1> <C,2> }
//
赵老师。。太感谢了!!