zzulioj(1121~1130)

目录

1121电梯

1122小明的调查作业

1123 最佳校友

1124 两个有序数组合并

1125上三角矩阵判断

1126布尔矩阵的奇偶性

1127矩阵乘积

1128课程平均分

1129第几天

1130杨辉三

1121电梯

#include <stdio.h>
#define N 1001
int a[N];
int sum=0;
int main()
{
	int n,i; 
	scanf("%d",&n);
	for(i=1;i<=n;i++){
		scanf("%d",&a[i]);
	}
	sum=sum+5*n;
	for(i=0;i<n;i++){
		if(a[i]<a[i+1]){//上楼 
			sum=sum+6*(a[i+1]-a[i]); 
		}else if(a[i]>a[i+1]){//下楼 
			sum=sum+4*(a[i]-a[i+1]);
		}
	}
	printf("%d",sum);
	return 0;
}

1122小明的调查作业

#include<stdio.h>
int n,m,i,j,a[1001],t;
//定义数字总量n,中间交换变量t,循环变量j和i
//数字储存在数组a[],以及不重复数字量m 
int main()
{
    scanf("%d",&n);
    m=n;//先然不重复的数字量等于输入数字的总量 
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);//存入数组
    }
    //利用冒泡排序进行排序 
    for(i=0;i<n-1;i++)
    {
    for(j=i+1;j<n;j++)
    {
        if(a[i]>a[j])//数组排序
        {
         t=a[i];
         a[i]=a[j];
         a[j]=t;
        }
    }
 }
    for(i=0;i<n;i++)//对于排序后的数组进行处理 
    {
        if(a[i]==a[i+1])//如果有相等的值,让前一个等于零
        {
         a[i]=0;
         m=m-1;//重复出现,那么计数值减一 
        }
    }
    printf("%d\n",m);//输出没有重复的数字个数 
    for(i=0;i<n;i++)
    {
        if(a[i]==0)//为零不输出
        continue;
        else 
        printf("%d ",a[i]);
    }
    getchar();//吸收最后一个空格
    return 0;
}

1123 最佳校友

#include<stdio.h>
#define N 100
int a[N],n,i;//定义数组a作为签到册,n为编号,i为循环变量 
int max,flag=1; 
int main()
{
	while(scanf("%d",&n),n>=0){
		a[n]++;//所在编号加一 
	}
	
	for(i=0;i<N;i++){//如果a[i]>max,更新max 
		if(a[i]>=max){
			max=a[i];
		}
	} 
	
	for(i=0;i<N;i++){
		if(a[i]==max){
			printf("%d ",i);
		}
	}

    return 0;
}

1124 两个有序数组合并

注:先将数组a,倒叙插入数组,然后数组a与数组b一一比较,存放到数组c

#include<stdio.h>
#define N 1000000
int a[N],b[N];//定义数组a作为签到册,n为编号,i为循环变量 
int main()
{
	int m,n,i,j;
	scanf("%d",&m);
	for(i=m-1;i>=0;i--){//倒叙插入数组中 
		scanf("%d",&a[i]); 
	}
	scanf("%d",&n);
	for(j=0;j<n;j++){//正序遍历数组 
		scanf("%d",&b[j]); 
	}
	
	int c[m+n];	//初始化一个新的数组,数组长度为m+n
	int s=0,t=0,k=0;//循环变量 
	while(s<m&&t<n){
		if(a[s]>b[t]){
			c[k++]=a[s++]; 
		}else{
			c[k++]=b[t++];
		}
	} 
	while(s<m){//输出多余a的部分 
		c[k++]=a[s++]; 
	}
	while(t<n){//输出多余b的部分
		c[k++]=b[t++]; 
	}
	
	for(k=0;k<m+n;k++){
		printf("%d ",c[k]);
	}

    return 0;
}

1125上三角矩阵判断

注:二维数组的初始化,上下三角的判断

#include<stdio.h>
#define N 10
int a[N][N];//定义数组a作为签到册,n为编号,i为循环变量 
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;
				break;
			} 
		}
	} 
	if(flag){
		printf("YES");
	}else{
		printf("NO");
	}
}
int main()
{
	int n,i,j,flag=1;
	scanf("%d",&n);
	for(i=0;i<n;i++){//初始化二维数组 
		for(j=0;j<n;j++){
			scanf("%d",&a[i][j]);
		}
	}
	IsUpperTriMatrix(a,n);
    return 0;
}

1126布尔矩阵的奇偶性

#include<stdio.h>
#define N 101
int P(int a[N][N],int n){
	int i,j;
	//判断是否为布尔矩阵 
	for(i=0;i<n;i++){//判断每一行 
		int sum=0;
		for(j=0;j<n;j++){
			sum=sum+a[i][j];
		}
		if(sum%2!=0){
			return 0;
		}
	}

	for(j=0;j<n;j++){//判断每一列 
		int sum=0;
		for(i=0;i<n;i++){
			sum=sum+a[i][j];
		}
		if(sum%2!=0){
			return 0;
		}
	}
	
	return 1;
} 

//判断改变一次是否符合条件
void C(int a[N][N],int n){
	int i,j,k=0;
	for(i=0;i<n&&k!=1;i++){
		for(j=0;j<n&&k!=1;j++){
			if(a[i][j]==0){//更改数目 
				a[i][j]=1;
			}else if(a[i][j]==1){
				a[i][j]=0;
			}
			if(P(a,n)){
				printf("Change bit(%d,%d)",i,j);
				k=1;//退出循环 
			} 
	
			if(a[i][j]==0){//还原矩阵 
				a[i][j]=1;
			}else if(a[i][j]==1){
				a[i][j]=0;
			}
		}
	}
	
	if(k!=1){
		printf("Corrupt");
	} 
} 

int main()
{
	int x,i,j,flag=1,a[N][N];
	
	scanf("%d",&x);
	for(i=0;i<x;i++){//初始化二维数组 
		for(j=0;j<x;j++){
			scanf("%d",&a[i][j]);
		}
	}
	if(P(a,x)){
		printf("OK");
	}else{
		C(a,x);
	}
    return 0;
}

1127矩阵乘积

注:详细看一下矩阵乘积部分

#include<stdio.h>
#define N 11


int main(){
	int m,n,p,i,j,k;
	int a[N][N],b[N][N];
	int c[N][N];
	scanf("%d %d %d",&m,&p,&n);//分别输入m,n,p
	for(i=0;i<m;i++){//初始化矩阵a  m*p 
		for(j=0;j<p;j++){
			scanf("%d",&a[i][j]);
		}
	}
	for(i=0;i<p;i++){//初始化矩阵b  p*n 
		for(j=0;j<n;j++){
			scanf("%d",&b[i][j]);
		}
	}
	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课程平均分

注:注意输出格式 

#include<stdio.h>
#define M 1001
#define N 11

int main(){
	double a[M][N];
	double b[N],y,sum;
	int m,n,i,j;
	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];
		}
		y=sum/m;
//		printf("%.2f",y);

		//注意输出格式 
		if(j!=n-1)
		  printf("%.2f ",y);
	    else
		   printf("%.2f",y);       
	}
	
	return 0;
}


1129第几天

用二维数组存放 闰年和平年的各月天数

#include<stdio.h>
#define M 1001
#define N 11
int R(int year){//判断是否为闰年 
	int i;
	if((year%4==0&&year%100!=0)||year%400==0){
		return 1; 	
	}
	return 0;
} 
int main(){
	int year,mouth,day,i;
	int a[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},
				  {0,31,29,31,30,31,30,31,31,30,31,30,31}};
	scanf("%d-%d-%d",&year,&mouth,&day);
	int k=R(year);
	for(i=1;i<mouth;i++){
		day=day+a[k][i];
	}
	printf("%d",day);
	return 0;
}


1130杨辉三角

#include<stdio.h>
#define N 31
int main(){
	int i,j,n;//循环变量i,j 以及n
	int a[N][N];
	scanf("%d",&n);
	a[0][0]=a[1][0]=a[1][1]=1;
	for(i=2;i<n;i++){//每行第一位以及对角均为1 
		a[i][0]=a[i][i]=1;
	}
	for(i=2;i<n;i++){
		for(j=1;j<i;j++){
			a[i][j]=a[i-1][j-1]+a[i-1][j];
		}
	} 

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值