0

我试图使矩阵的字母按字母顺序排序,然后写在一个字符串中。例如,你输入十个单词,然后将它们存储在一个数组中,然后每个字母在矩阵中都有它的位置,对?但是在我写完这些单词之后,我想将所有单词的所有字母组合在一起,然后按字母顺序输入所有字母。这就是我目前所拥有的:

#include <stdio.h>
#include <conio.h>

int main(void){
    int i, j, k, f, n, m; 
    //was trying out various things,that's why I have so many useless ints up there
    char word[10][15],temp;

    for(i=0;i<=9;i++)
    {
        printf("Type in wword number %d: ", i+1);
        gets(word[i]);
    }

    for(k=i-1;k>=0;k--)
    {
        for(m=0;m<k;m++)
            if(word[k][f] > word[m][n])
            {
                temp=word[k][f];
                word[k][f]=word[m][n];
                word[m][n]=temp;
            }
    }
    printf("Letters alphabetically sorted: ");
    for(i=0;i<=9;i++){
        for(j=0;j<=14;j++){
            printf("%d",word[i][j]);
        }
    }
    printf("\n");
    getch();
}

我还在学习矩阵的过程中,现在我对数组已经很熟悉了。但是排序的事情让我很困惑,这是我的尝试,但它不起作用。它可以让你写下所有的单词,然后它崩溃了。

我在这里做错了什么?我该如何纠正?

4

4 回答 4

3

在您的代码中:

        temp=word[k][f];
        word[k][f]=word[m][n];
        word[m][n]=temp;

变量nf未初始化使用。这很可能是坠机的原因。

于 2011-09-21T06:38:20.237 回答
1

f,n未初始化。它有垃圾,是此时崩溃的原因。

for(k=i-1;k>=0;k--)
{
    for(m=0;m<k;m++)

    if(word[k][f] > word[m][n]) // f,n are uninitialized and are error prone
于 2011-09-21T06:38:25.437 回答
0

我认为这会起作用..请执行并告诉我..

void main()    
{

char word[10][15],temp,sorted_word[15];

int i,j,ii,k,l=0;

for(i=0;i<=9;i++)             
{                  
printf("Type in wword number %d: ", i+1);                 
gets(word[i]);            
}


for(i=0;i<=9;i++)

{

for(j=0;word[i][j]!='\0';j++)

{

ii=i;
for(k=j+1;1;k++)
{
if(ii==9 && word[ii][k]=='\0')
break;
if(word[ii][k]=='\0')
{
ii++;
k=0;
}
if(word[i][j]>word[ii][k])
{
temp=word[i][j];
word[i][j]=word[ii][k];
word[ii][k]=temp;
} 
}
sorted_word[l++]=word[i][j];
}

}

sorted_word[l]='\0';

printf("%s",sorted_word);

getch();

}
于 2011-09-22T08:11:40.980 回答
-1

这里

for(i=0;i<=9;i++)
{ printf("type in wword %d: ",i+1);
gets(word[i]); 
}

得到(字[1]);

存储从 word[1] 开始的值,但字符数组从 word[0] 开始。

可能这不是你问题的完整解决方案这个问题可能会帮助你解决你的疑问。

于 2011-09-21T06:50:02.227 回答