学C语言的大佬帮帮忙,着急啊

学C语言的大佬帮帮忙,着急啊求大佬教,跪谢,特别着急

#include <stdio.h>
void printfa(int (*p)[5]);
void sumd(int (*p)[5],int *pd);
void sumh(int (*p)[5],int *pd);
void zz(int (*p)[5]);
int main()
{
    int a[5][5],i,j,*p;
    int sd[2]={0,0},sh[5]={0,0,0,0,0};
    p=sd;
    printf("请输入5X5矩阵的数字:");
    for(i=0;i<5;i++)
        for(j=0;j<5;j++)
            scanf("%d",&a[i][j]);
    printf("输入的矩阵为:");
    printfa(a);

    sumd(a,p);
    printf("\n矩阵对角线之和为%d 和 %d",sd[0],sd[1]);

    p=sh;
    sumh(a,p);
    printf("\n矩阵每行元素之和为%d 、%d 、%d 、%d 、%d",sh[0],sh[1],sh[2],sh[3],sh[4]);

    zz(a);
    printf("\n转置的矩阵为:");
    printfa(a);
    return 0;
}
void sumd(int (*p)[5],int *pd)//对角线之和  参数1矩阵数组   参数2 接收返回值的指针
{
    int i,j;
    for(i=0;i<5;i++)
    {
        j=5-i+1;
        pd[0]=pd[0]+p[i][i];
        pd[1]=pd[1]+p[i][j];
    }
}
void printfa(int (*p)[5])//打印矩阵
{
    int i,j;
    for(i=0;i<5;i++)
    {
        printf("\n");
        for(j=0;j<5;j++)
            printf("%d ",p[i][j]);
    }
}
void sumh(int (*p)[5],int *pd)//每行元素之和
{
    int i;
    for(i=0;i<5;i++)
    {
       pd[i]=p[i][0]+p[i][1]+p[i][2]+p[i][3]+p[i][4];
    }

}
void zz(int (*p)[5])//转置矩阵
{
    int a[5][5],i,j;
    for(i=0;i<5;i++)
    {
        for(j=0;j<5;j++)
            a[i][j]=p[j][i];
    }
    for(i=0;i<5;i++)
    {
        for(j=0;j<5;j++)
            p[i][j]=a[i][j];
    }

}

追问

感谢

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-12-07

7.左边第一张图片-------

#include <stdio.h>
#include <stdlib.h>
main()
{
   int i,j,a[5][5];
   void su(int a[][5]);
   void sum(int a[][5]);
   void tr(int a[][5]);
   printf("The two-dimensional array is:\n");
   for(i=0;i<5;i++,printf("\n"))for(j=0;j<5;j++)scanf("%d",&a[i][j]);//输入
   printf("Transposition of the two-dimensional array is:\n");
   su(a);
   sum(a);
   tr(a);
   system("pause");return 0;
}
void su(int a[5][5])//求对角线和并输出 
{
   int i,c=0,d=0;
   for(i=0;i<5;i++)c+=a[i][i];
   for(i=0;i<5;i++)d+=a[i][4-i];
   printf("sum(/)=%d\tsum(\\)=%d\n",d,c);
}
void sum(int a[5][5])//求每行元素总和并输出 
{
   int i,j,b[5];
   for(i=0;i<5;i++)for(b[i]=0,j=0;j<5;j++)b[i]+=a[i][j];
   for(i=0;i<5;i++)printf("sum(a[%d][])=%d\n",i,b[i]);
}
void tr(int a[5][5])//数组转置并输出 
{
   int i,j,b[5][5];
   for(i=0;i<5;i++)for(j=0;j<5;j++)b[i][j]=a[i][j];
   for(i=0;i<5;i++)for(j=0;j<5;j++)a[i][j]=b[j][i];
   for(i=0;i<5;i++,printf("\n"))for(j=0;j<5;j++)printf("%d\t",a[i][j]);
}

7.右边第二张图片-------

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
main()
{
   char a[10][20]={"chinese666",
                   "englishasd",
                   "japan..ssss",
                   "england",
                   "britainddddd",
                   "United Kingdomjhgj.",
                   "Americadasdae",
                   "the Americas ",
                   "South Americ",
                   "South Americe"};
   void p(char a[][20]);
   p(a);
   system("pause");return 0;
}
void p(char a[10][20])
{
   int i,maxstr=0,secstr=1;char t[20];
   for(i=1;i<10;i++)maxstr=(strlen(a[maxstr])>strlen(a[i]))?maxstr:i;
   for(i=2;i<10;i++)if(i!=maxstr)
   secstr=(strlen(a[secstr])>strlen(a[i]))?secstr:i;
   printf("maxstr=%s\n",a[maxstr]);
   printf("secstr=%s\n",a[secstr]);
}

有不懂吗

第2个回答  2017-12-07
好熟悉,好有感觉,
好好学习吧,孩子,
第3个回答  2017-12-07
有你们这个行业的资源
相似回答