1.请编程实现二维数组的杨慧三角
#include <stdio.h>
#define N 10
int main() {
int a[N][N], i, j;
for (i = 0; i < N; i++) {
a[i][0] = 1;
a[i][i] = 1;
}
for (i = 2; i < N; i++)
for (j = 1; j < i; j++)
a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
for (i = 0; i < N; i++) {
for (j = 0; j <= i; j++)
printf("%d ", a[i][j]);
printf("\n");
}
return 0;
}
2.请编程实现二维数组计算每一行的和以及列和
#include <stdio.h>
#define ROWS 3
#define COLS 4
int main() {
int a[ROWS][COLS] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
int row_sums[ROWS] = {0};
int col_sums[COLS] = {0};
int i, j;
for (i = 0; i < ROWS; i++)
for (j = 0; j < COLS; j++)
row_sums[i] += a[i][j];
for (j = 0; j < COLS; j++)
for (i = 0; i < ROWS; i++)
col_sums[j] += a[i][j];
for (i = 0; i < ROWS; i++)
printf("Sum of row %d = %d\n", i, row_sums[i]);
for (j = 0; j < COLS; j++)
printf("Sum of column %d = %d\n", j, col_sums[j]);
return 0;
}
3.请编程实现二维数组计算第二大值
#include <stdio.h>
#define ROWS 3
#define COLS 4
int main() {
int a[ROWS][COLS] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
int max = a[0][0], second_max = a[0][0];
int i, j;
for (i = 0; i < ROWS; i++)
for (j = 0; j < COLS; j++)
if (a[i][j] > max)
max = a[i][j];
for (i = 0; i < ROWS; i++)
for (j = 0; j < COLS; j++)
if (a[i][j] > second_max && a[i][j] < max)
second_max = a[i][j];
printf("Second maximum = %d\n", second_max);
return 0;
}
4.请使用非函数方法实现系统函数strcat,strcmp,strcpy,strlen
#include <stdio.h>
int main() {
char s1[100] = "Hello, ";
char s2[] = "world!";
char *p1, *p2;
// strcat
p1 = s1;
while (*p1) p1++;
p2 = s2;
while ((*p1++ = *p2++));
printf("%s\n", s1);
// strcmp
p1 = s1;
p2 = s2;
while (*p1 && (*p1 == *p2)) p1++, p2++;
printf("%d\n", *p1 - *p2);
// strcpy
p1 = s1;
p2 = s2;
while ((*p1++ = *p2++));
printf("%s\n", s1);
// strlen
p1 = s1;
int len = 0;
while (*p1++) len++;
printf("%d\n", len);
return 0;
}