码迷,mamicode.com
首页 > 编程语言 > 详细

C语言成长学习题(十四)

时间:2015-12-07 22:42:35      阅读:282      评论:0      收藏:0      [点我收藏+]

标签:

六十一、定义4*6的实型数组,并将各行前5列元素的平均值分别放在同一行的第6列上。

 1 #include <stdio.h>
 2 
 3 void main(void)
 4 {
 5     float a[4][6], sum;
 6     int i, j;
 7 
 8     for (i = 0; i < 4; i++)
 9         for (j = 0; j < 5; j++)
10             a[i][j] = i * j + 1;
11     for (i = 0; i < 4; i++)
12     {
13         sum = 0;
14         for (j = 0; j < 5; j++)
15             sum = sum + a[i][j];
16         a[i][5] = sum / 5;
17     }
18     for (i = 0; i < 4; i++)
19     {
20         for (j = 0; j< 6; j++)
21             printf("%5.1f", a[i][j]);
22         printf("\n");
23     }
24 }

 结果:

    1.0    1.0    1.0    1.0    1.0    1.0

    1.0    2.0    3.0    4.0    5.0    3.0

    1.0    3.0    5.0    7.0    9.0    5.0

    1.0    4.0    7.0   10.0   13.0    7.0

 

六十二、编程打印n*n阶的螺旋方阵(顺时针方向旋转)。

 1 #include <stdio.h>
 2 
 3 #define N 5
 4 
 5 void main(void)
 6 {
 7     int a[N][N], i, j, k = 1, m;
 8 
 9     if (N % 2 == 0)
10         m = N / 2;
11     else 
12         m = N / 2 + 1;
13     for (i = 0; i < m; i++)
14     {
15         for (j = i; j < N - i; j++)
16             a[i][j] = k++;
17         for (j = i + 1; j < N - i; j++)
18             a[j][N-i-1] = k++;
19         for (j = N - i - 2; j >= i; j--)
20             a[N-i-1][j] = k++;
21         for (j = N - i - 2; j >= i + 1; j--)
22             a[j][i] = k++;
23     }
24     for (i = 0; i < N; i++)
25     {
26         for (j = 0; j < N; j++)
27             printf("%5d", a[i][j]);
28         printf("\n");
29     }
30 }

 

结果:

    1     2    3     4     5

   16   17   18   19    6

   15   24   25   20    7

   14   23   22   21    8

   13   12   11   10    9

 

六十三、判断二维数组中是否存在鞍点(如果一个数组元素在改行上最大,在该列上最小,则称此元素为鞍点)。

 1 #include <stdio.h>
 2 
 3 #define N 3
 4 #define M 4
 5 
 6 void main(void)
 7 {
 8     int a[N][M], i, j, k, flag;
 9 
10     printf("请输入%d个数据: ", N*M);
11     for (i = 0; i < N; i++)
12     {
13         for (j = 0; j < M; j++)
14         {
15             scanf("%d", &a[i][j]);
16             printf("%4d", a[i][j]);
17         }
18         printf("\n");
19     }
20     for (i = 0; i < N; i++)
21     {
22         k = 0;
23         for (j = 0; j < M; j++)
24             if (a[i][k] < a[i][j])
25                 k = j;
26         flag = 1;
27         for (j = 0; j < N; j++)
28             if (a[i][k] > a[j][k])
29             {
30                 flag = 0; 
31                 break;
32             }
33         if (flag ==1)
34         {
35             printf("第%d行第%d列的%d是鞍点.\n", i, k, a[i][k]);
36             break;
37         }
38     }
39     if (i == N)
40         printf("二维数组无鞍点.\n");
41 }

 

结果:

请输入12个数据: 1 2 3 4 5 6 7 8 9 10 11 12

   1   2   3   4

   5   6   7   8

   9  10  11  12

第0行第3列的4是鞍点.

 

六十四、输出n阶魔方阵。

 1 #include <stdio.h>
 2 
 3 #define N 5
 4 
 5 void main(void)
 6 {
 7     int a[N][N] = {0}, i = 0, j, k;
 8     
 9     j = N / 2;
10     a[i][j] = 1;
11     for (k = 2; k <= N * N; k++)
12     {
13         i--,j++;
14         if (i < 0 && j ==N)
15         {
16             i = i + 2;
17             j = j - 1;
18         }
19         else
20         {
21             if (i < 0)
22                 i = N - 1;
23             if (j == N)
24                 j = 0;
25         }
26         if (a[i][j] == 0)
27             a[i][j] = k;
28         else
29         {
30             i = i + 2;
31             j = j - 1;
32             a[i][j] = k;
33         }
34     }
35     printf("%d阶魔方阵为: \n", N);
36     for (i = 0; i < N; i++)
37     {
38         for (j = 0; j < N; j++)
39             printf("%4d", a[i][j]);
40         printf("\n");
41     }
42 }

 

结果:

5阶魔方阵是:

  12  24   1   8  15

  23   5   7  14  16

   4   6  13  20  22

  10  12  19  21   3

  11  18  25   2   9

 

六十五、编写求字符串长度的程序(用指针变量处理)。

 1 #include <stdio.h>
 2 
 3 void main(void)
 4 {
 5     char a[80], *p;
 6 
 7     p = a;
 8     gets(p);
 9     puts(p);
10     while (*p != \0)
11         p++;
12     printf("长度 = %d\n", p - a);
13 }

Mark:

  程序中不能把p++改用a++,因为a是数组名,是一个固定值,不能进行a++运算。

  "while (*p != ‘\0‘)"等价于"while (*p)"。

 

C语言成长学习题(十四)

标签:

原文地址:http://www.cnblogs.com/zero-jh/p/5027582.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!