郑州轻工业大学zzulioj1124~1130合集

本人小趴菜一名,大家有问题可以在评论区直接提问就行,大家一起解决,欢迎大家指出错误或者其他可借鉴的代码,让我们一起进步吧!


1124两个有序数组合并

题目描述
已知数组a中有m个按升序序排列的元素,数组b中有n个降序排列的元素,编程将a与b中的所有元素按降序存入数组c中。
输入
输入有两行,第一行首先是一个正整数m,然后是m个整数;第二行首先是一个正整数n,然后是n个整数,m, n均小于等于1000000。
输出
输出合并后的m+n个整数,数据之间用空格隔开。输出占一行。
样例输入 Copy
4 1 2 5 7
3 6 4 2
样例输出 Copy
7 6 5 4 2 2 1
代码如下(示例):

#include<stdio.h>
int a[1000000]={0},b[1000000];//防止堆栈溢出 
int main(){
   int n,m,i,j,k=0;
    scanf("%d",&n);
    for(i=n-1;i>=0;i--){
        scanf("%d",&a[i]);
}
    scanf("%d",&m);
    for(j=0;j<m;j++){
        scanf("%d",&b[j]);
    }
    //初始化 两个数组完毕
    //算法思想  a数组按照逆序遍历
    int c[n+m];
    i=0,j=0;//初始化 
  while (i < n && j < m) {
      if (a[i] >= b[j])
        c[k++] = a[i++];
      else
        c[k++] = b[j++];
    }
    while (i < n)
      c[k++] = a[i++];
    while (j < m)
      c[k++] = b[j++];
       
      for(k=0;k<m+n-1;k++)
      printf("%d ",c[k]); 
      printf("%d",c[m+n-1]);
    return 0;
}

1125上三角矩阵的判断

题目描述
编写程序,输入一个正整数n(1<=n<=10)和n阶方阵a中的元素,如果a是上三角矩阵,输出“YES”,否则,输出“NO”。
上三角矩阵即主对角线以下(不包括主对角线)的元素都为0的矩阵,主对角线为从矩阵的左上角至右下角的连线。
要求定义函数IsUpperTriMatrix()判断矩阵a是否是上三角矩阵,如果是返回1,否则返回0。函数原型如下:

int IsUpperTriMatrix(int a[][N], int n);
输入
输入一个正整数n(1<=n<=10)和n阶方阵a中的元素,均为整数。
输出
如果a是上三角矩阵,输出“YES”,否则,输出“NO”
样例输入 Copy
4
1 2 3 4
0 2 2 2
0 0 3 4
0 0 0 4
样例输出 Copy
YES
代码如下(示例):

#include <stdio.h>
#include <stdlib.h>
#define N 10
//声明函数原型 
int IsUpperTriMatrix(int a[][N], int n); 
//上三角矩阵的判断 
int main() {
	int a[N][N];
	int n, i, j;
	//输入n,表示n阶方阵
	scanf("%d", &n);
	for(i = 0; i < n; i++){
		for(j = 0; j < n; j++){
			//输入方阵a中的元素
			scanf("%d", &a[i][j]); 
		}
	}
	//调用函数判断是否是上三角矩阵 
	if(IsUpperTriMatrix(a, n) == 1)
		printf("YES");
	else
		printf("NO"); 
	return 0;
}
//判断矩阵a是否是上三角矩阵,如果是返回1,否则返回0。 
int IsUpperTriMatrix(int a[][N], int n){
	 int i, j, flag = 1;
	 for(i = 0; i < n; i++){
	 	for(j = 0; j < i; j++){
	 		if(a[i][j] != 0)
	 			flag = 0;
		 }
	 }
	 	return flag;
}

1126布尔矩阵的奇偶性

题目描述
一个布尔方阵具有奇偶均势特性,当且仅当 每行、每列总和为偶数,即包含偶数个1。如下面这个4*4的矩阵就具有奇偶均势特性:
1 0 1 0
0 0 0 0
1 1 1 1
0 1 0 1
编写程序,读入一个n阶方阵并检查它是否具有奇偶均势特性。如果没有,你的程序应当再检查一下它是否可以通过修改一位(把0改为1,把1改为0)来使它具有奇偶均势特性;如果不可能,这个矩阵就被认为是破坏了。

输入
第一行是一个整数n ( 0< n < 100 ),代表该方阵的阶数。然后输入n 行,每行n个整数(0或1)。
输出
如果矩阵是布尔矩阵,输出“OK”;如果能通过只修改该矩阵中的一位来使它成为布尔矩阵,则输出“Change bit(i,j)”,这里i和j是被修改的元素的行与列(行,列号从0开始);否则,输出“Corrupt”。
样例输入 Copy
4
1 0 1 0
0 0 0 0
1 1 1 1
0 1 0 1
样例输出 Copy
OK
代码如下(示例):

#include<stdio.h>
int main()
{
    int n,i,j,sumx=0,sumy=0,isx=0,isy=0,x,y;
    scanf("%d\n",&n);
    int square[n][n];
    for(i=0;i<n;i++)
        for(j=0;j<n;j++)
            scanf("%d",&square[i][j]);//储存矩阵
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            isx+=square[i][j];
        }
        if(isx%2!=0)//行是否为奇数
        {
            sumx++;//如果是奇数,修改点加一
            x=i;//确认修改点横坐标
            isx=0;//重置行的累加和(重要)
        }
    }
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            isy+=square[j][i];
        }
        if(isy%2!=0)//列是否为奇数
        {
            sumy++;//如果是奇数,修改点加一
            y=i;//确认修改点纵坐标
            isy=0;//重置列的累加和(重要)
        }
    }
    if(sumx==0&&sumy==0)//如果没有修改点(即行,列均不是奇数)
        printf("OK");
    else if(sumx==1&&sumy==1)//如果只有一个修改点,则该矩阵可改
        printf("Change bit(%d,%d)",x,y);
    else printf("Corrupt");//否则不可改
}

1127矩阵乘积

题目描述
计算两个矩阵A和B的乘积。
输入
第一行三个正整数m、p和n,0<=m,n,p<=10,表示矩阵A是m行p列,矩阵B是p行n列;
接下来的m行是矩阵A的内容,每行p个整数,用空格隔开;
最后的p行是矩阵B的内容,每行n个整数,用空格隔开。
输出
输出乘积矩阵:输出占m行,每行n个数据,以空格隔开。
样例输入 Copy
2 3 4

1 0 1
0 0 1

1 1 1 3
4 5 6 7
8 9 1 0
样例输出 Copy
9 10 2 3
8 9 1 0
代码如下(示例):

#include<stdio.h>
int main()
{
    int m,p,n,i,j,a[100][100],b[100][100];
    scanf("%d%d%d",&m,&p,&n);
    for(i=0;i<m;i++)
    {
        for(j=0;j<p;j++)
        {
            scanf("%d",&a[i][j]);
        }
    }
    for(i=0;i<p;i++)
    {
        for(j=0;j<n;j++)
        {
            scanf("%d",&b[i][j]);
        }
    }
    int c[100][100],k=0;
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            c[i][j]=0;
            for(k=0;k<p;k++)
            {
                c[i][j]=c[i][j]+a[i][k]*b[k][j];
            }
        }
    }
    for(i=0;i<m;i++)
    {
        printf("%d",c[i][0]);
        for(j=1;j<n;j++)
        {
            printf(" %d",c[i][j]);
        }
    printf("\n");
    }
    return 0;
}

1128课程平均分

题目描述
期末考试结束,班主任拿到了本班学生的成绩汇总表,由m行n列组成(本班共有m名学生,本学期有n门课程),每行是一个同学的n门课程成绩,请编写程序,计算并输出每门课的平均分,结果保留2位小数。
输入
第一行是两个整数m和n,表示本班的人数和本学期课程数目,0<m<=1000,0<n<=10。
接下来是成绩单,有m行,每行n个实数。
输出
输出一行,有n个实数,保留两位小数,表示每门课的平均分,用空格隔开。
样例输入 Copy
5 4
80 65 70 95
99 38 59 90
30 78 81 85
90 43 13 80
65 87 79 80
样例输出 Copy
72.80 62.20 60.40 86.00

代码如下(示例):

#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    int i, j, m, n;
    double sum, a[1000][10];
    scanf("%d%d", &m, &n);
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            scanf("%lf", &a[i][j]);
        }
    }
    for(j=0;j<n;j++)
    {
        sum=0;
        for(i=0;i<m;i++)
        {
            sum=sum+a[i][j];
        }
        if(j!=n-1)
        printf("%.2f ", sum/m);
        else
         printf("%.2f ", sum/m);
    }
    return 0;
}

1129第几天

题目描述
你知道,2012-1-1是该年的第1天,而9999-9-9呢?给你一个具体的日期,计算该日期是该年的第几天。

输入
输入一个日期,格式为:Year-month-day。year是小于9999的正整数。

输出
一个整数,表示该日期是该年的第几天。

样例输入 Copy
2012-3-1
样例输出 Copy
61
代码如下(示例):

#include<stdio.h>
int main()
{
    int y,m,d,i,num=0;
    int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    scanf("%d-%d-%d",&y,&m,&d);
    if(y%400==0||(y%4==0&&y%100!=0))
    {
        a[1]=29;
    }
    for(i=0;i<m-1;i++)
    {
        num+=a[i];
    }
    num=num+d;
    printf("%d\n",num);
    return 0;
}

1130杨辉三角

题目描述
还记得中学时候学过的杨辉三角吗?具体的定义这里不再描述,你可以参考以下的图形:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1

输入
输入只包含一个正整数n(1 <= n <= 30),表示将要输出的杨辉三角的层数。

输出
输出相应层数的杨辉三角,每一层的整数之间用一个空格隔开。

样例输入 Copy
4
样例输出 Copy
1
1 1
1 2 1
1 3 3 1
代码如下(示例):

#include<stdio.h>

int main()
{
    int i,j,n,a[100][100];
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        for(j=0;j<=i;j++)
        {
            if(i==0||j==0)
            {
                a[i][0]=1;}
                else
                {
                    a[i][j]=a[i-1][j-1]+a[i-1][j];
                }

            printf("%d ",a[i][j]);
            if(i==j)
                printf("\n");
        }
    }
    return 0;
}


评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橘花猫不爱睡懒觉

你的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值