C语言学习笔记<数组>

1,             已知数组x有5个元素{8.16.13.19.10},精组y有6个元素{24.19.28.15.17.20}.请分别对x和y排序。输出x和y排序后的元素



#include<stdio.h>
main()
{
int x[5]={8,16,13,19,10},y[6]={24,19,28,15,17,20};
int i,j,sum=0;
for(i=0;i<4;i++)
   { for(j=i+1;j<=4;j++)
     if(x[i]<x[j]){x[sum]=x[i];x[i]=x[j];x[j]=x[sum];}
  
for(i=5;i>=0;i--)
   { for(j=i-1;j>=1;j--)
     if(y[i]<y[j]){y[sum2]=y[i];y[i]=y[j];y[j]=y[sum2];}
for(i=0;i<=4;i++)
printf("%d\t",x[i]);
printf("\n");
for(i=0;i<=5;i++)
printf("%d\t";i++);
printf("\n");
}



 

CODE:
[Copy to clipboard]
2,             已知一个数组有10个元素,值分别为3.6.8.4.5.66.80.72.69.70将数组元素逆置后输出(第一个与最后一个换,第二个与倒数二个换)

#include<stdio.h>
main()
{
int a[10]={3,6,8,4,5,66,80,72,69,70};
int i,j,sum;
for(i=0;i<=9;i++)
{
     for(j=9;j>=i;j--)
        a[sum]=a[i];a[i]=a[j];a[j]=a[sum];
}
for(i=0;i<=9;i++)
printf("%d\t",a[i]);
}



 

CODE:
[Copy to clipboard]
3,             输入6个整数存入一个数组a,输入4个整数存入另一个数组b,输出所有a中有而b中没有的元素值.

#include<stdio.h>
main()
{
int a[6],b[4];
int i,j,sum;
for(i=0;i<=5;i++)
    scanf("%d",&a[i]);
for(i=0;i<=3;i++)
    scanf("%d",&b[i]);
for(i=0;i<=5;i++)
    for(j=0;j<=3;j++)
    {if(a[i]!=b[j]&&j==3)
    (printf("%d\t",a[i]);)}

}



 

CODE:
[Copy to clipboard]
4,             已知一个数组有10个元素,值分别是11.12.13.14.15.16.17.18.19.20。现将每个元素向后移一个位置,最后的元素移到开头。输出数组的所有元素.(定义一个具有11个元素的数组,最后一个位置空着。由后向前逐个将元素后移一个位置。最后的元素移到开头位置。)

#include<stdio.h>
main()
{
int a[11]={11,12,13,14,15,16,17,18,19,20,}
int i,j,t;
a[t]=a[10];
for(i=10;i>=0;i--)
a[i]=a[i-1];
a[0]=a[t];
int(i=0;i<=9;i++)
printf("%d\t");
}



 

CODE:
[Copy to clipboard]
5.              已知一个二维数组:{{14.26.18.17},{24.37.21.8},{19.31.22.16},{7.19.14.26}},输出主对角元素的和。

#include<stdio.h>
main()
{
int a[4][4];
int i,j,sum=0;
for(i=0,j=0;i<=3;i++)
a[sum]+=a[i][j]
     j++;
     }
printf("%d",a[sum]);
}



 

CODE:
[Copy to clipboard]
6.               已知一个二维数组:{{14.26.18.17},{24.8.21.37},{19.31.22.16},{7.8.11.9}},将每行元素都加上该行上的主对角元素,然后求出最大元素的下标.

#include<stdio.h>
main()
{
int a[4][4]={{14,26,18,17},{24,8,21,37},{19,31,22,16},{7,8,11,9}}
int i,j,x;
int sum=0,sum1=0,sum2=0;
for(i=0,x=0;i<=3;i++)
{
  a[sum]=a[i][x];
  for(j=0;j<=3;j++)
         a[i][j]=a[i][j]+a[sum];
         x++;}
  sum=a[0][0];
for(i=0;i<=3;i++)
    for(j=0;j<=3;j++)
    {
    if(sum<a[i][j])
    {
     sum=a[i][j];
     sum1=i;sum2=j;
     }
     }
printf("最大数的坐标为%d,%d",sum1,sum2)
}



 

CODE:
[Copy to clipboard]
7.已知一个二维数组:14.26.18.17},{24.8.21.37},{19.31.22.16},{7.8.11.9}},将每行的最大元素求出组成一个一维数组,输出该一维数组中的元素.

#include<stdio.h>
main()
{
int a[4][4]={{14,26,18,17},{24,8,21,37},{19,31,22,16},{7,8,11,9}}
int b[4];
int i,j;
int sum=0;
sum=a[0][0];
for(i=0;i<=3;i++)
{  for(j=0;j<=3;j++)
  {
if(sum<a[i][j]){sum=a[i][j];}
}
        b[i]=sum;
}
for(i=0;i<=3;i++)
printf("%d\t"b[i]);
printf("\n");
}

 

8.已知一个二维数组:14.26.18.17},{24.8.21.37},{19.31.22.16},{7.8.11.9}},将其行元素和列元素互换,输出互换后的二维数组.

此题非常感谢iamlangue姐的帮助!~

 

#include<stdio.h>
main()
{
        int a[4][4]={{14,26,18,17},{24,8,21,37},{19,31,22,16},{7,8,11,9}};
        int b[4][4]={{0,0,0,0}, {0,0,0,0}, {0,0,0,0}, {0,0,0,0}};
        int i,j;
        int sum=0;

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

你可能感兴趣的:(C语言学习笔记<数组>)