C语言学习笔记第四天练习作业
作业1:定义一个5*5的二维数组并初始化,找出最小值的坐标,计算出最小值周围一圈数据之和
作业2:输入N,显示前N层杨辉三角
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
作业3:输入一个日期(yyyy-mm-dd),计算该日期距离1年1月1日过了多少天
2022-7-8
个人代码如下:
#include <stdio.h>
int main(int argc,const char* argv[])
{
/*
int arr[7][7]={};
printf("=================test01===================\n");
printf("请输入5*5数据:");
for(int i=1;i<6;i++)
{
for(int j=1;j<6;j++)
{
scanf("%d",&arr[i][j]);
}
}
int max=arr[1][1];
int max_i=1,max_j=1;
for(int i=1;i<6;i++)
{
for(int j=1;j<6;j++)
{
if(arr[i][j]>max)
{
max = arr[i][j];
max_i = i;
max_j = j;
}
}
}
int sum=0;
for(int i=max_i-1;i<=max_i+1;i++)
{
for(int j=max_j-1;j<=max_j+1;j++)
{
sum+=arr[i][j];
}
}
sum-=arr[max_i][max_j];
printf("%d\n",sum);
*/
int arr[5][5]={};
printf("=================test01===================\n");
printf("请输入5*5数据:");
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
{
scanf("%d",&arr[i][j]);
}
}
int max_i=0,max_j=0;
int max = arr[0][0];
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
{
if(arr[i][j]>max)
{
max = arr[i][j];
max_i = i;
max_j = j;
}
}
}
int sum=0;
int index_i[8]={},index_j[8]={};
index_i[0]=max_i-1;
index_i[1]=max_i-1;
index_i[2]=max_i-1;
index_i[3]=max_i;
index_i[4]=max_i;
index_i[5]=max_i+1;
index_i[6]=max_i+1;
index_i[7]=max_i+1;
index_j[0]=max_j-1;
index_j[1]=max_j;
index_j[2]=max_j+1;
index_j[3]=max_j-1;
index_j[4]=max_j+1;
index_j[5]=max_j-1;
index_j[6]=max_j;
index_j[7]=max_j+1;
for(int i=0;i<8;i++)
{
if(index_i[i]>=0&&index_j[i]<5&&index_i[i]<5&&index_j[i]>=0)
{
sum+=arr[index_i[i]][index_j[i]];
}
}
printf("%d\n",sum);
printf("=================test02===================\n");
printf("请输入杨辉三角的层数:\n");
int hight=0;
scanf("%d",&hight);
int a[hight][hight];
for(int i=0;i<hight;i++)
{
for(int j=0;j<i+1;j++)
{
a[i][j]=0;
if(j==0||i==j)
{
a[i][j]=1;
}else
{
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
}
}
for(int i=0;i<hight;i++)
{
for(int j=0;j<i+1;j++)
{
printf("%d\t",a[i][j]);
}
printf("\n");
}
printf("=================test03===================\n");
printf("请输入一个日期,格式为yyyy-mm-dd :");
int year,month,day;
scanf("%d-%d-%d",&year,&month,&day);
int day_pass=0,count_r=0;
for(int i=1;i<year;i++)
{
if(i%400==0||i%4==0 && i%100!=0)
{
count_r++;
}
}
day_pass+=(year-1)*365+count_r;
switch(month-1)
{
case 11:day_pass+=30;
case 10:day_pass+=31;
case 9:day_pass+=30;
case 8:day_pass+=31;
case 7:day_pass+=31;
case 6:day_pass+=30;
case 5:day_pass+=31;
case 4:day_pass+=30;
case 3:day_pass+=31;
case 2:day_pass+=28;
case 1:day_pass+=31;
case 0:break;
}
day_pass+=day-1;
printf("已经过了%d天了\n",day_pass);
return 0;
}
新手,写的有点烂,见谅