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 }