二维数组

上一节的二分查找法

#include

int main(void)

{

int i,mid;

int low,high;

int a[10],x,n;

scanf("%d",&n);

for(i=0;i

scanf("%d",&a[i]);

scanf("%d",&x);

low=0;

high=n-1;

while(low<=high)

{

mid=(low+high)/2;

if(x==a[mid])

break;

else if(x

{

high=mid-1;

}

else

{

low=mid+1;

}

}

if(low<=high)

{

printf("index is %d\n",mid);

}

else

{

printf("not found!\n");

}

return 0;

}

冒泡排序的具体实现:

for(i=0;i

{

    for(j=0;j

    {

        if(a[j])>a[j+1])//从小到大排序

        {

            t=a[j];

            a[j]=a[j+!];

            a[j+1]=a[j];

        }

    }

}

矩阵转置(下三角转换)

#include

int main(void)

{

int a[10][10];

int n,i,j,t;

scanf("%d",&n);

for(i=0;i

for(j=0;j

scanf("%d",&a[i][j]);

for(i=0;i

{

for(j=0;j

{

if(i>=j)

{

t=a[i][j];

a[i][j]=a[j][i];

a[j][i]=t;

}

}

}

for(i=0;i

{

for(j=0;j

printf("%d ",a[i][j]);

printf("\n");

}

return 0;

}

矩阵运算 计算除副对角线最后一行最后一列的和

#include

int main(void)

{

int a[10][10];

int n,i,j,t;

int sum=0;

scanf("%d",&n);

for(i=0;i

for(j=0;j

scanf("%d",&a[i][j]);

for(i=0;i

{

for(j=0;j

{

if(i+j!=n-1&&i!=n-1&&j!=n-1)

{

sum+=a[i][j];

}

}

}

printf("sum=%d\n",sum);

return 0;

}

方阵右移

#include

int main(void)

{

int a[10][10],b[10][10];

int n,i,j,t;

int sum=0;

int m;

scanf("%d%d",&m,&n);

for(i=0;i

for(j=0;j

scanf("%d",&a[i][j]);

m%=n;

for(i=0;i

{

for(j=0;j

{

printf("%d ",a[i][(n-m+j)%n]);

}

}

for(i=0;i

{

for(j=0;j

printf("%d ",a[i][j]);

printf("\n");

}

return 0;

}

计算天数

#include

int day(int year,int mon,int da)

{

int k;

int tab[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}

};

int flag=0;

if(year%4==0&&year%100!=0||year%400==0)

{

flag=1;

}

for(k=1;k

da=da+tab[flag][k];

return da;

}

int main(void)

{

int year,month,days;

scanf("%d%d%d",&year,&month,&days);

printf("day=%d\n",day(year,month,days));

return 0;

}

你可能感兴趣的:(二维数组)