4.7作业

1.输入m行n列的二维数组,输出每一行的和,以及每一列的和

  1 #include <stdio.h>
  2 #include <string.h>
  3 #include <stdlib.h>
  4 int main(int argc, const char *argv[])
  5 {
  6     int m,n;
  7     printf("请输入行和列:");
  8     scanf("%d %d",&m,&n);
  9     int arr[m][n];
 10     int i,j;
 11     printf("请输入数组元素:");
 12     for(i=0;i<m;i++)
 13     {
 14         for(j=0;j<n;j++)
 15         scanf("%d",&arr[i][j]);
 16     }
 17     for(i=0;i<m;i++)
 18     {
 19         for(j=0;j<n;j++)
 20         printf("%-4d",arr[i][j]);
 21         putchar(10);
 22     }
 23     for(i=0;i<m;i++)
 24     {
 25         int sumi=0;
 26         for(j=0;j<n;j++)
 27         sumi+=arr[i][j];
 28         printf("第%d行的和为%d\n",i+1,sumi);
 29     }
 30     for(j=0;j<n;j++)
 31     {
 32         int sumj=0;
 33         for(i=0;i<m;i++)
 34         sumj+=arr[i][j];
 35         printf("第%d列的和为%d\n",j+1,sumj);
 36     }
 37     return 0;
 38 }

2.输入n行n列的二维数组,计算四边的和减去正反对角线的和的结果

  1 #include <stdio.h>
  2 #include <string.h>
  3 #include <stdlib.h>
  4 int main(int argc, const char *argv[])
  5 {
  6     int n;
  7     printf("请输入行列:");
  8     scanf("%d",&n);
  9     int arr[n][n];
 10     int i,j;
 11     for(i=0;i<n;i++)
 12     {
 13       for(j=0;j<n;j++)
 14       scanf("%d",&arr[i][j]);
 15     }
 16     for(i=0;i<n;i++)
 17     {
 18       for(j=0;j<n;j++)
 19       printf("%d",arr[i][j]);
 20       putchar(10);
 21     }
 22     int sum1=0,sum2=0;
 23     for(i=0;i<n;i++)
 24     {
 25       for(j=0;j<n;j++)
 26       {
 27           if(i==j)                                        
 28           sum1+=arr[i][j];
 29           if(i+j==n-1)
 30           sum2+=arr[i][j];
 31       }
 32     }
 33     int sum3=0;
 34     for(i=0;i<n;i++)
 35     sum3+=arr[0][i]+arr[i][n-1]+arr[n-1][i]+arr[i][0];
 36     sum3-=arr[0][0]+arr[0][n-1]+arr[n-1][0]+arr[n-1][n-1];
 37     printf("结果为%d\n",sum3-sum1-sum2);
 38     return 0;
 39 }

3.输入m行n列的二维数组,计算二维数组第二大值

  1 #include <stdio.h>
  2 #include <string.h>
  3 #include <stdlib.h>
  4 int main(int argc, const char *argv[])
  5 {
  6     int m,n;
  7     printf("请输入行和列:");
  8     scanf("%d %d",&m,&n);
  9     int arr[m][n];
 10     int i,j;
 11     for(i=0;i<m;i++)
 12     {
 13         for(j=0;j<n;j++)
 14         scanf("%d",&arr[i][j]);
 15     }
 16     int max=arr[0][0],min=arr[0][0];
 17     for(i=0;i<m;i++)
 18     {
 19         for(j=0;j<n;j++)
 20         {
 21             if(max<arr[i][j])
 22             max=arr[i][j];
 23             if(min>arr[i][j])
 24             min=arr[i][j];
 25         }                                    
 26     }
 27     int max1=min;
 28     for(i=0;i<m;i++)
 29     {
 30         for(j=0;j<n;j++)
 31         {
 32             if(arr[i][j]==max)
 33                 continue;
 34             if(max1<arr[i][j])
 35                 max1=arr[i][j];
 36         }
 37     }
 38     printf("第二大值为%d",max1);
 39     return 0;
 40 }

4.实现二维数组转置

  1 #include <stdio.h>
  2 #include <string.h>
  3 #include <stdlib.h>
  4 int main(int argc, const char *argv[])
  5 {
  6    int m,n;
  7    printf("请输入行和列:");
  8    scanf("%d %d",&m,&n);
  9    int a[m][n];
 10    int b[n][m];
 11    int i,j;
 12    printf("请输入数组元素:");
 13    for(i=0;i<m;i++)
 14    {
 15        for(j=0;j<n;j++)
 16        scanf("%d",&a[i][j]);
 17    }
 18    for(i=0;i<m;i++)
 19    {
 20        for(j=0;j<n;j++)
 21        printf("%-4d",a[i][j]);
 22        putchar(10);
 23    }
 24    for(i=0;i<m;i++)
 25    {
 26        for(j=0;j<n;j++)
 27        b[j][i]=a[i][j];
 28    }
 29    for(j=0;j<n;j++)
 30    {
 31        for(i=0;i<m;i++)                  
 32        printf("%-4d",b[j][i]);
 33        putchar(10);
 34    }
 35     return 0;
 36 }

5.输入一个字符串,删除空格

  1 #include <stdio.h>
  2 #include <string.h>
  3 #include <stdlib.h>
  4 int main(int argc, const char *argv[])
  5 {
  6     char str[10];
  7     printf("请输入字符串:");
  8     gets(str);
  9     int count=0;
 10     for(int i=0;i<strlen(str);i++)
 11     {
 12         if(str[i]==' ')
 13         {
 14             count++;
 15             for(int j=i+1;j<strlen(str);j++)
 16             str[j-1]=str[j];
                i--;
 17         }
 18     }
        memset(str+strlen(str)-count,0,count);
 19     //str[strlen(str)-count]='\0';
 20     puts(str);
 21     return 0;
 22 }

6.输入一个字符串,实现单词逆置

  1 #include <stdio.h>
  2 #include <string.h>
  3 #include <stdlib.h>
  4 int main(int argc, const char *argv[])
  5 {
  6     char str[]="good good study";
  7     int i=0,j=strlen(str)-1;;
  8     while(i<j)
  9     {
 10         char t=str[i];str[i]=str[j];str[j]=t;
 11         i++;j--;
 12     }
 13     i=j=0;
 14     while(str[i]!='\0')
 15     {
 16         while(str[j]!=' '&&str[j]!='\0')
 17         j++;
 18         int k=j-1;
 19         while(i<k)
 20         {
 21             char t=str[i];str[i]=str[k];str[k]=t;      
 22             i++;k--;
 23         }
 24         while(str[j]==' ')
 25         j++;
 26         i=j;
 27     }
 28     puts(str);
 29     return 0;
 30 }

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值