C语言的一些问题(关于数组、函数、结构体什么的)

1、编写程序,它能读入构成集合A,B的两组非零整数x1,x2 ,……,xm ,y1 ,y2 ,……,yn 。计算A与B的交集A∩B,再以由小到大的顺序输出A∩B中的元素,A∩B为空时无输出。
第一行输入集合的长度,第二行输入集合A中的数字,每个数字以空格隔开,第三行输入集合B中的数字,每个数字以空格隔开。
示例1:
输入:
4 5
1 3 5 7
5 3 1 9 10
输出:
1 3 5
(我剩把交集内的元素排序不太懂,就是单独写一个还会,把它和前面的问题连起来就写不出了)
2、写一个函数,输入一串数字,长度不超过100,要求输出这串数字字符,但每两个数字间空一个空格。
如输入1990,应输出“19 90”
(这个问题我只会一个数字隔一个空格,两个数字隔一个空格属实没想到)
3、有3个学生的信息,放在结构体数组中,要求输出全部学生的信息。
[输入用例]
10101
Li Lin
M
18
10102
Zhang Fun
M
19
10104
Wang Min
F
20
注:学生姓名中可能包含空格。
[输出用例]
No. Name sex age
10101 Li Lin M 18
10102 Zhang Fun M 19
10104 Wang Min F 20
[输入用例]
21001
张三
M
20
21002
李四
F
22
21003
王五
M
19
[输出用例]
No. Name sex age
21001 张三 M 20
21002 李四 F 22
21003 王五 M 19
注:输出的数据中间有一个空格

#include<stdio.h>
#include<math.h>

void main()
{
    int n,m,i,j,k=0;
    scanf("%d%d", &n, &m);
    int a[n],b[m],c[n];
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
    for(i=0;i<m;i++)
        scanf("%d",&b[i]);
    for(i=0;i<n;i++){
        for(j=0;j<m;j++){
            if(b[j] == a[i]){
                c[k++] = a[i];
                break;
            }
        }
    }
    for(i=0;i<k-1;i++)
        for(j=0;j<k-i-1;j++)
            if(c[j] > c[j+1])
            {
                int t = c[j];
                c[j] = c[j+1];
                c[j+1] = t;
            }
    for(i=0;i<k;i++)
        printf("%d ", c[i]);
}


img