锐格实验——多维数组

 

目录

5809  七段显示器输出

5814  矩阵旋转

5808  分词输入

5816  桶排序(单词计数)

7128  每一行平均值(用指针)

7131  回型方阵

7116  判断是否为上三角矩阵


5809  七段显示器输出

int main()
{
   int max_save[10][7]={{1,1,1,1,1,1,0},
                        {0,1,1,0,0,0,0},
                        {1,1,0,1,1,0,1},
                        {1,1,1,1,0,0,1},
                        {0,1,1,0,0,1,1},
                        {1,0,1,1,0,1,1},
                        {1,0,1,1,1,1,1},
                        {1,1,1,0,0,0,0},
                        {1,1,1,1,1,1,1},
                        {1,1,1,1,0,1,1}};
   int num,col;
   scanf("%d",&num);
   /*模拟七段数码显示管分5行输出,
    *奇数行只输出空格或者-,
    *偶数行只输出空格或者|。*/
   //start
  if(max_save[num][0]) printf(" - \n");
    else printf("   \n");
    if(max_save[num][5]) printf("| ");
    else printf("  ");
    if(max_save[num][1]) printf("|\n");
    else printf(" \n");
    if(max_save[num][6]) printf(" - \n");
    else printf("   \n");
    if(max_save[num][4]) printf("| ");
    else printf("  ");
    if(max_save[num][2]) printf("|\n");
    else printf(" \n");
    if(max_save[num][3]) printf(" - \n");
    else printf("   \n");
   //end
   return 0;
}

 


5814  矩阵旋转

#include <stdio.h>
#include <stdlib.h>
#define N 5
int main(void)
{
   void transfor(int a[][N]);
   int array[N][N],i,j;
   for(i=0;i<N;i++)
      for(j=0;j<N;j++)
         scanf("%d",&array[i][j]);
   transfor(array);
   for(i=0;i<N;i++)
      for(j=0;j<N;j++)
         j!=N-1?printf("%d ",array[i][j]):printf("%d\n",array[i][j]);
    return 0;
}
void transfor(int a[][N])
{
//start
int i,j;
char b[5][5];
for(i=0;i<N;i++)
      for(j=0;j<N;j++)
      b[i][j]=a[j][i];
 for(i=0;i<N;i++)
      for(j=0;j<N;j++)
      a[i][j]=b[i][j];
//end
}

5808  分词输入

int main()
{
    char sentence[101];
    char word[15][10];
    int i,j,k,num,flag;
    while(gets(sentence)!=0)
    {
        i=j=k=0;
        flag=0;num=0;
        while(sentence[k]!='\0')
        {
            if((sentence[k]>='a'&&sentence[k]<='z')||(sentence[k]>='A'&&sentence[k]<='Z'))
            {
                word[i][j]=sentence[k];
                j++;
                flag=1;
            }
            else
            {
                if(flag==1)
                {
                    word[i][j]='\0';
                    i++;
                    j=0;
                    num++;
                }
                flag=0;
            }
            k++;
        }
        i=0;
        for(i=0;i<num;i++)
        printf("%s\n",word[i]);
    }
    return 0;
}

 


5816  桶排序(单词计数)

int main()
{
    int N,max,x,i,j;
    char str[100],a[6][100]={"green","red","blue","pink","orange","black"};
    while(~scanf("%d",&N))
    {
       int num[6]={0};
       for(i=0;i<N;i++)
       {
           scanf("%s",str);
           for(j=0;j<6;j++)
           if(strcmp(str,a[j])==0)
           num[j]++;
       }
       max=num[0];
       x=0;
       for(i=0;i<6;i++)
       {
           if(max<num[i])
           {
              max=num[i];
              x=i;
           }
       }
       printf("%s\n",a[x]);

    }
    return 0;
}

7128  每一行平均值(用指针)

 以下搬用老师代码

int n,m;
double (*p)[21],a[21][21],ans[21],ave;
void get_ans(double (*p)[21])//写*p[21]会报错,必须写(*p)[21],注意定义二维行指针时变量外一定要打括号!
{
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
        {
            ans[j]=ans[j]+p[i][j];
            ave=ave+p[i][j];
        }
    for(int i=1;i<=m;i++)
        ans[i]=ans[i]/n;
    ave=ave/(n*m);
}
int main()
{
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
                scanf("%lf",&a[i][j]);
    p=a;//将二维数组a的地址传给指针p,之后把指针当成二维数组用
    get_ans(p);
    for(int i=1;i<=m;i++)
    i==m?printf("%.2lf\n",ans[i]):printf("%.2lf ",ans[i]);
    printf("%.2lf\n",ave);
    return 0;
}

7131  回型方阵

int main()
{
    int k,i,j,n,a[100][100];
    scanf("%d",&n);
    for(k=1;k<=(n+1)/2;k++)
    {
        for(i=k;i<=n+1-k;i++)
        {
            for(j=k;j<=n+1-k;j++)
            a[i][j]=k;
        }
    }
    for(i=1;i<=n;i++)
    {
        for(j=1;j<n;j++)
        printf("%d ",a[i][j]);
        printf("%d\n",a[i][j]);
    }
    return 0;
}

 


7116  判断是否为上三角矩阵

int main()
{
    int n,i,j,flag=0,x;
    int a[100][100];
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        scanf("%d",&a[i][j]);
    }
    x=a[n-1][n-1];
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            if(j>i)
            {
                if(a[i][j]!=x)
                flag=1;
            }

        }
    }
    if(flag==0)
    printf("It is up\n");
    if(flag==1)
    printf("up false\n");
    return 0;
}

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值