2011-09-21 63 views
0

我试图按字母顺序排列矩阵中的字母,然后将其写入单个字符串中。例如,您键入十个字,然后将其存储在数组中,并且每个字母都有其字母然后放在矩阵中,对吗?但是在我写完单词之后,我想将所有单词的所有字母串在一起,然后按字母顺序输入所有字母。这就是我迄今为止的内容:排序字母C编程

#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(); 
} 

我仍然在学习矩阵的过程,现在我已经非常熟悉数组了,但排序的事情让我感到困惑,这是我的尝试,但它不起作用。它可以让你写所有的的话,然后它崩溃。

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

+0

我注意到f和N不初始化这是** **危险。 –

+0

等待不知所措,想通了。谢谢你的评论。 – user956281

+0

然后大快乐编码! –

回答

3

在你的代码在这里:

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

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

+0

好thnx :) 现在它不会崩溃。但最后,而不是字母它显示一些奇数行数字。为什么? – user956281

+0

你想打印出“%c”:那就是“字符”。您正在打印“%d”,这是数字。 – evgeny

+0

好吧,把它放到%c。现在它显示字符,但嗯,我认为它会输出字的字母。像我键入单词“一,二,三”,它键入:“eeehnoorttw” – user956281

1

fn未初始化。它有垃圾,并且是在这一点上崩溃的原因。

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 
+0

感谢您的帮助,我已经修复了现在的初始化。并且我将最后一个%d更改为%c。但是现在它显示字符。我希望它会输出字母中的字母。例如:我输入单词“一二三”,并输出:“eeehnoorttw”。我该怎么做? – user956281

-1
这里

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

得到(字[1]);

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

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

0

我认为这将work..Please EXCUTE,并告诉我..

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(); 

}