【每日编程-424期】西安电子科技大学上机题(三)

请写一个程序,对于一个m行m列的(1<m<10)的方阵,求其每一行,每一列及主对角线元素之和,最后按照从大到小的顺序依次输出。输入说明:共一组数据,输入的第一行为一个正整数,表示m,接下来的m行,每行m个整数表示方阵元素。

输入格式:

输入一个数字方阵。

输出格式:

从大到小排列的一行整数,每个整数后跟一个空格,最后换行。

输入样例:

3
1 2 3
4 5 6
7 8 9

输出样例:

24 18 15 15 15 12 6
解决方法:

(1)代码实现:

#include <stdio.h>void sort(int *a, int l) //a为数组地址,l为数组长度。{    int i, j;    int v;    //排序主体    for (i = 0; i < l - 1; i++)        for (j = i + 1; j < l; j++)        {            if (a[i] > a[j]) //如前面的比后面的大,则交换。            {                v = a[i];                a[i] = a[j];                a[j] = v;            }        }}main(){    printf("请输入方阵的行数(列数):\n");    int x;    scanf("%d", &x);    printf("\n请输入方阵元素:\n");    int a[x][x];    int i = 0, j = 0;    while (i < x)    {        j = 0;        while (j < x)        {            scanf("%d", &a[i][j]);            ++j;        }        ++i;    }    int b[2 * x + 1];    for (i = 0; i < 2 * x + 1; ++i)    {        b[i] = 0;    }    for (i = 0; i < x; ++i)    {        for (j = 0; j < x; ++j)        {            b[i] = b[i] + a[i][j];        }    }    for (i = 0; i < x; ++i)    {        for (j = 0; j < x; ++j)        {            b[i + x] = b[i + x] + a[j][i];        }    }    for (i = 0; i < x; ++i)    {        b[2 * x] = b[2 * x] + a[i][i];    }    sort(b, 2 * x + 1);    printf("\n输出结果:\n");    for (i = 2 * x; i >= 0; --i)    {        printf("%d ", b[i]);    }}
明日预告:西安电子科技大学上机题(四)

对于给定的字符序列,从左至右将所有的数字字符取出拼接成一个无符号整数(字符序列长度小于100,拼接出的整数小于2^31,),计算并输出该整数的最大因子(如果是素数,则其最大因子为自身)。

输入格式:

有多组数据,输入数据的第一行为一个正整数,表示字符序列的数目,每组数据为一行字符序列。

输出格式:

对每个字符序列,取出所得整数的最大因子,若字符序列中没有数字或者找出的整数为0,则输出0,每个整数占一行输出。

输入样例:

2qwq243dnh5

输出样例:

127
(0)

相关推荐