6.13作业

1.输入一个行数,打印对应行数杨辉三角

int main(int argc, const char *argv[])
{
  printf("输入一个行数,打印出杨辉三角\n");
  int line = 0;
  scanf("%d",&line);
  int arr[line][line];
  bzero(arr,sizeof(arr));
  for(int i = 0;i<line;i++)
  {
    for(int j = 0;j<=i;j++)
    {
      if(j==0 || i==j)
      {
        arr[i][j] = 1;
      }else{
      arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
      }
    }
  }
  for(int i = 0;i<line;i++)
  {
    for(int j = 0;j<line;j++)
    {
      if(arr[i][j]!=0)
      printf("%d\t",arr[i][j]);
    }
    putchar(10);
  }
  return 0;
}

2.输入一个n个元素的一维数组,计算最大的和,最大差(不允许使用排序)

int main(int argc, const char *argv[])
{ 
  printf("输入一个N个元素的一维数组,计算最大的和,最大的差\n");
  int arr[10];
  for(int i = 0;i<10;i++)
  { 
    scanf("%d",&arr[i]);
  }
  int max = arr[0],min = arr[0],max_se  = arr[0];
  for(int i = 1;i<10;i++)
  {
    if(max < arr[i])
    {
      max = arr[i];
    } 
    if(min > arr[i])
    {
      min = arr[i];
    } 
  } 
  for(int i = 1;i<10;i++)
  {
    if(max_se < arr[i] && arr[i]<max)
    {
      max_se = arr[i];
    } 
  } 
  printf("maxdif = %d max_sum = %d\n",max - min,max + max_se);
  return 0;
} 

3.输入一个M行N列的二维数组,计算第二小值

int main(int argc, const char *argv[])
{
  printf("输入一个M行N列的二维数组,计算第二小值\n");
  int M=0,N=0;
  scanf("%d %d",&M,&N);
  printf("请输入%d个数\n",M*N);
  int arr[M][N];
  bzero(arr,sizeof(arr));
  
  for(int i = 0;i<M;i++)
  { 
    for(int j = 0;j<N;j++)
    { 
      scanf("%d",&arr[i][j]);
    }
  }
  int min_se = arr[0][0];
  for(int i = 0;i<M;i++)
  {
    for(int j = 0;j<N;j++)
    {
      if(min_se>arr[i][j])
      {
        int temp = min_se;
        min_se = arr[i][j];
        arr[i][j] = temp;
      }
    }
}
  min_se = arr[0][1];

printf("%d",min_se);
  return 0;
}

4.输入n个元素的一维数组,输入查找key的值

 int main(int argc, const char *argv[])
 {
   printf("输入n个元素的一维数组,输入查找key的值\n");
   int n =0;
   scanf("%d",&n);
   int arr[n],key = 0;
   bzero(arr,sizeof(arr));
   for(int i = 0;i<n;i++)
   { 
     scanf("%d",&arr[i]);
   }
   printf("输入key\n");
   scanf("%d",&key);
   int time = 0;
   int ti = 0; 
   for(int i = 0;i<10;i++)
   { 
     if(arr[i] == key)
     { 
       time++;
       ti = i;
     }
   }
   
   if(time == 1)
   printf("出现一次,下标为:%d\n",ti);
   if(time > 1)
   printf("出现%d次\n",time);
   if(time ==0)
   printf("不存在\n");
   
   return 0;
 }

5.输入一个m行n列的二位数组,输出每一行的和,以及每一列的和

int main(int argc, const char *argv[])
{
        printf("输入一个m行n列的二位数组,输出每一行的和,以及每一列的和\n");
        int m,n;
        scanf("%d %d",&m,&n);
        int arr[m][n];
        bzero(arr,sizeof(arr));
        int linesum = 0,rowsum = 0;
        for(int i = 0;i<m;i++)
        {
                for(int j = 0;j<n;j++)
                {
                        scanf("%d",&arr[i][j]);
                }
        }


        for(int i = 0;i<m;i++)
        {
                int sum= 0;
                for(int j =0;j<n;j++)
                {
                        sum += arr[i][j];
                }
                printf("第%d行和是:%d\n",i,sum);
        }
        for(int i = 0;i<n;i++)
        {
                int sum = 0;
                for(int j =0;j<m;j++)
                {
                        sum += arr[j][i];
                }
                printf("第%d列和是:%d\n",i,sum);
        }
        return 0;
}

6.输入一个m行n列的二维数组,输出正对角线和反对角线的差

int main(int argc, const char *argv[])
{
        printf("输入一个m行n列的二维数组,输出正对角线和反对角线的差\n")
        int m,n;
        scanf("%d %d",&m,&n);
        int arr[m][n];
        bzero(arr,sizeof(arr));
        int linesum = 0,rowsum = 0;
        int possum = 0, negnum = 0;
        for(int i = 0;i<m;i++)
        {
                for(int j = 0;j<n;j++)
                {
                        scanf("%d",&arr[i][j]);
                        if(i == j)
                        {
                          possum+=arr[i][j];
                        }
                        if((i+j) == n-1)
                        {
                          negnum+=arr[i][j];
                        }
                }
        }
        printf("正对角线和反对角线差是:%d\n",possum-negnum);
        
 
 
        return 0;
}

7.输入一个2行3列的二维数组,请实现转置(行列转换)

int main(int argc, const char *argv[])
{
        printf("7.输入一个2行3列的二维数组,请实现转置(行列转换)\n");
        int arr[2][3];
        bzero(arr,sizeof(arr));
        int arr1[3][2];
        for(int i = 0;i<2;i++)
        {
                for(int j = 0;j<3;j++)
                {
                        scanf("%d",&arr[i][j]);
                        arr1[j][i] = arr[i][j];
                }
        }     
        for(int i = 0;i<3;i++)
        {
                for(int j = 0;j<2;j++)
                {
                        printf("%d ",arr1[i][j]);
                }
                printf("\n");
        }
        return 0;
}

8.设float a=2, b=4, c=3;,C语言表达式(1/2)+(a+b)*c的计算结果是:

18.000000

g

3

8

0

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值