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

六十一、定义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)"。

时间: 2024-10-22 07:01:42

C语言成长学习题(十四)的相关文章

C语言成长学习题(四)

十三.编写输出如下分段函数值的程序,要求x的值从键盘输入. 1 #include <stdio.h> 2 3 void main(void) 4 { 5 float x, y; 6 7 printf("Input x:\n"); 8 scanf("%f", &x); 9 if(x <= 0) 10 y = x + 1; 11 else if(x <= 1) 12 y = 1; 13 else 14 y = x; 15 printf(&

C语言成长学习题(十)

四十一.编写实现以下功能的程序:若从键盘输入字符Y(或y)或N(或n),则终止循环,否则一直等待输入. 1 #include <stdio.h> 2 #include <conio.h> 3 4 void main(void) 5 { 6 char c; 7 8 printf("是否继续(Y/N)?\n"); 9 do 10 { 11 c = getch(); 12 if (c == 'Y' || c == 'y' || c == 'N' || c =='n')

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

66.编写字符串复制的程序(用指针变量处理). 1 #include <stdio.h> 2 3 void main(void) 4 { 5 char a[50], b[80], *p, *q; 6 7 p = a; 8 q = b; 9 printf("Input data: "); 10 gets(a); 11 while (*p != '\0') 12 *q++ = *p++; 13 *q = '\0'; 14 puts(b); 15 } Mark: 复制操作结束后,

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

72.假设一维数组中存放互不相同的十个整数,要求根据输入的下标值,即可直接删除. 1 #include <stdio.h> 2 3 int mydel (int *a, int n, int k) 4 { 5 int i; 6 7 for (i = k; i < n - 1; i++) 8 *(a+i) = *(a+i+1); 9 n--; 10 11 return n; 12 } 13 14 void myout (int *a, int n) 15 { 16 while (n >

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

五十六.编写求字符串长度的程序. 1 #include <stdio.h> 2 3 void main(void) 4 { 5 char a[80]; 6 int i = 0, count = 0; 7 8 gets(a); 9 while (a[i] != '\0') 10 { 11 count++; 12 i++; 13 } 14 printf("%s = %d\n", a, count); 15 } 五十七.编写字符串复制的程序. 1 #include <std

C语言成长学习题(三)

十.编写一个含有逻辑表达式的程序. 1 #include <stdio.h> 2 3 void main(void) 4 { 5 int x; 6 7 x = 1; 8 printf("%d ", x>=0 && x<=2); 9 10 x = 5; 11 printf("%d ", x>=0 && x<=2); 12 printf("%d ", x<-3 || x>

C语言成长学习题(七)

二十六.输出1!.2!.3!.4!.....n!的值. 1 #include <stdio.h> 2 3 void main(void) 4 { 5 int i, n; 6 float fac; 7 8 printf("Input n: "); 9 scanf("%d", &n); 10 for (i = 1; i<=n; i++) 11 { 12 fac = fac * i; 13 printf("%d! = %.0f\n&qu

C语言成长学习题(五)

十七.求一元二次方程ax2+bx+c=0的实根(要求a.b.c的值从键盘输入,a!=0). 1 #include <stdio.h> 2 #include <math.h> 3 4 void main(void) 5 { 6 int a, b, c; 7 float delta, x1, x2; 8 9 printf("Input a, b, c:\n"); 10 scanf("%d%d%d", &a, &b, &c)

一个怂女婿的成长笔记【十四】

2014-06-25 你可以选择你的退路,但人生很长,先去做你热爱的事,不要一开始就选择退路. 又到了一年一度的填志愿的日子,中国应试教育的悲哀.不知道今年又有多少热门专业被挤爆,又有多少失望的考生被调剂到冷门专业.在中国,好像大部分的人都在做自己不爱做的事,从事自己不爱干的工作.“成功的人都在做自己想做的事”,梦想总是很美好,现实总是很残酷.我们都生活在枷锁中,很多美好的计划,都常常被现实的变化所搁置甚至抛弃.我现在越来越不相信所谓的职业规划,因为我在整个不长的职业生涯中就已经碰到了好多变数,