回复 7楼 hxx4137
我看到你的贴子我就知道你和那谁 "可怜的C人" 是同学, 他比你先问了.
程序代码:
程序代码:
#include <stdio.h>
#define M 100 // 数组的最大行数
#define N 100 // 数组的最大列数
void fun(char *b, char a[][N], int m, int n)
{
int i, j;
for (j = 0; j < n; ++j)
for (i = 0; i < m; ++i)
*b++ = a[i][j];
}
int main()
{
char a[M][N]; // 二维数组
char b[M*N]; // 一维数组
int c;
int i, j;
int m, n;
printf("请输入数组的行数: ");
scanf("%d", &m);
printf("请输入数组的列数: ");
scanf("%d", &n);
// 输入字符
printf("请输入 %d个字符:\n", m * n);
for (i = 0; i < m; i++)
for (j = 0; j < n; ) {
c = getchar();
if ((c <= 'z'&&c>='a') || (c <= 'Z'&& c >= 'A')){ // 如果读取的是字母才保存到数组, 其它字符都不操作.
a[i][j] = c;
j++;
}
}
printf("输入的二维数组为:\n"); // 打印二维数组
for (i = 0; i < m; i++) {
for (j = 0; j < m; j++)
putchar(a[i][j]);
putchar('\n');
}
fun(b, a, m, n); // 数组转换
printf("转换为一维数组为:\n"); // 打印一维数组
for (i = 0; i < m*n; i++)
putchar(b[i]);
putchar('\n');
return 0;
}
[
本帖最后由 pangshch 于 2013-11-19 17:09 编辑 ]