android-nuc / 18-C-Train

18级Android实验室(人工智能+移动互联) C语言培训
16 stars 10 forks source link

常澳 矩阵相乘 (才发现没交呢) #29

Open chuyhu opened 5 years ago

chuyhu commented 5 years ago
#include <stdio.h>
#include <stdlib.h>
struct ju{
    int a;
    struct ju*next;
}*h1,h2,*h3,*p,*q,*s,*o,*l;
//创建链表
void creat()
{
    int a,n;
    int i=1;
    scanf("%d",&n);//判断矩阵的阶数
    scanf("%d",&a);//矩阵内输入值
    h1=NULL;        //头指针为空
    //前面的矩阵  以行的形式输入
    for(int j=1;j<=1000;j++)
    {
        while(i<=1000)
        {
            s=(struct *)malloc(sizeof(stu ju));
            s->a=a;        
            //完成连接操作
            if(h1==NULL)
            {
                h1=s;
                p=s;
            }
            else
            {
                p->next=s;
                p=p->next;
            }   
            i++;
            scanf("%d",&a);
         } 
    }
    //第二个矩阵  以列的形式输入
    int b;
     for(int j=1;j<=1000;j++)
    {
        while(i<=1000)
        {
            s=(struct *)malloc(sizeof(struct ju));
            s->a=b;        
            //完成连接操作
            if(h2==NULL)
            {
                h2=s;
                q=s;
            }
            else
            {
                q->next=s;
                q=q->next;
            }   
            i++;
            scanf("%d",&b);
         } 
    }
    //乘积得值
void cheng()
{
    p=h1;
    q=h2;
    h3=NULL;
    int x=1;
    for(int m=1;p==NULL;m++)
    {
        p=p->next;
        if(m%1000==0)
        {
            for(int n=1;q==NULL;n++)
            {
                q=q->next;
                if(n%1000==0)
                {
                    while(x!=1000)
                    {
                        o=(struct *)malloc(sizeof(struct ju));
                        o->a=(p->a)*(q->a);
                        if(h3==NULL)
                        {
                            h3=o;
                            l=o;
                        }
                        else
                        {
                            l->next=o;
                            o=o->next;
                        }
                        x++;
                    }
                }   
            }
    }
}
void print()
{
    l=h3;
    while(l==NULL)
    {
        printf("%d",l->a);
        l=l->next;
    }
}
int main()
{
    creat();
    cheng();
    print();
    system("pause");
    return 0;
}
wmpscc commented 5 years ago

点评:

修改!