C 提示段错误
#include <stdio.h>
#define MAXCOUNT 10
#define MAXWIDTH 10
#define HAS 1
#define BLANK 0
int main()
{
int wdlth[MAXCOUNT + 1];
int i, j, k, n, c = 0, charcount = 0, maxvalue = 0;
for (i = 0; i <= (MAXCOUNT - 1); ++i)
wdlth[i] = 0;
//遍历
while ((c = getchar()) != '\n') {
if (c == ' ' || c =='\t' || c == '.' || c == ',') {
if (charcount != 0) {
if (charcount <= MAXCOUNT) {
++wdlth[charcount - 1];
charcount = 0;
} else {
++wdlth[MAXCOUNT];
charcount = 0;
}
}
} else
++charcount;
}
//取最大值
for (i = 0; i <= MAXCOUNT; ++i) {
if (wdlth[i] > maxvalue)
maxvalue = wdlth[i];
}
printf("aaa%d---%d", maxvalue, MAXCOUNT);
//构造数组[单词数][字母数]、初始化并赋值
int position[maxvalue + 1][MAXCOUNT + 1];
for (j = 0; j <= (maxvalue + 1); j++) {
for (k = 0; k <= (MAXCOUNT + 1); k++) {
position[j][k] = BLANK;
}
}
for (j = (maxvalue - 1); j >= 0; --j) {
for (k = 0; k <= MAXCOUNT; ++k) {
if (wdlth[k] > j)
position[j][k] = HAS;
else
position[j][k] = BLANK;
}
}
//输出
printf("单词\n个数\n");
for (j = (maxvalue); j >= 0; --j) {
printf("%2d|", j + 1);
for (k = 0; k <= MAXCOUNT; ++k) {
if (position[j][k] == HAS)
printf(" *");
else if (j != 0 && position[j - 1][k] == HAS)
printf("%3d", wdlth[k]);
else
printf(" ");
}
printf("\n");
}
printf(" ");
for (n = 1; n <= ((MAXCOUNT + 1) * 3); ++n) {
printf("-");
}
printf("-->\n ");
for (n = 1; n <= MAXCOUNT; ++n) {
printf("%3d", n);
}
printf(" >%d 字母个数\n", MAXCOUNT);
return 0;
}
#include <stdio.h>
#include<malloc.h>
#define MAXCOUNT 10
#define MAXWIDTH 10
#define HAS 1
#define BLANK 0
int main()
{
int wdlth[MAXCOUNT + 1];
int i, j, k, n, c = 0, charcount = 0, maxvalue = 0;
//动态声明二维数据
int rows,columns;
int **position = NULL;
for (i = 0; i <= (MAXCOUNT - 1); ++i)
wdlth[i] = 0;
//遍历
while ((c = getchar()) != '\n') {
if (c == ' '
[解决办法]
c =='\t'
[解决办法]
c == '.'
[解决办法]
c == ',') {
if (charcount != 0) {
if (charcount <= MAXCOUNT) {
++wdlth[charcount - 1];
charcount = 0;
} else {
++wdlth[MAXCOUNT];
charcount = 0;
}
}
} else
++charcount;
}
//取最大值
for (i = 0; i <= MAXCOUNT; ++i) {
if (wdlth[i] > maxvalue)
maxvalue = wdlth[i];
}
printf("aaa%d---%d", maxvalue, MAXCOUNT);
//构造数组[单词数][字母数]、初始化并赋值
rows = maxvalue + 1;
columns = MAXCOUNT + 1;
position = (int **)malloc(sizeof(int *) * rows);
if (NULL == position)
{
return 0;
}
for(i=0;i< columns + 1;i++)
{
*(position + i) = (int *)malloc(sizeof(int) * rows);
if(NULL == *(position + i))
{
return 0;
}
}
for (j = 0; j <= (maxvalue + 1); j++) {
for (k = 0; k <= (MAXCOUNT + 1); k++) {
position[j][k] = BLANK;
}
}
for (j = (maxvalue - 1); j >= 0; --j) {
for (k = 0; k <= MAXCOUNT; ++k) {
if (wdlth[k] > j)
position[j][k] = HAS;
else
position[j][k] = BLANK;
}
}
//输出
printf("单词\n个数\n");
for (j = (maxvalue); j >= 0; --j) {
printf("%2d
[解决办法]
", j + 1);
for (k = 0; k <= MAXCOUNT; ++k) {
if (position[j][k] == HAS)
printf(" *");
else if (j != 0 && position[j - 1][k] == HAS)
printf("%3d", wdlth[k]);
else
printf(" ");
}
printf("\n");
}
printf(" ");
for (n = 1; n <= ((MAXCOUNT + 1) * 3); ++n) {
printf("-");
}
printf("-->\n ");
for (n = 1; n <= MAXCOUNT; ++n) {
printf("%3d", n);
}
printf(" >%d 字母个数\n", MAXCOUNT);
return 0;
}