目录
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;
}