从键盘输入6个字符串(仅仅包含英文字母和数字),对这6个字符串从小到大排列并输出结果。(C语言)
上面是我基础测试中的一个题。我编写的代码如下:
- #include <stdio.h>
- #include <string.h>
- int main()
- {
- int i,j;
- char a[6][100];
- char temp[100];
- for(i=0;i<=5;i++) //Input six string.
- {
- printf("Please input the %dth string(within 100 words).\n",i+1);
- gets(a[i]);
- }
- printf("\nThe original six string:\n");
- for(i=0;i<=5;i++) /*Output the original six string.*/
- printf("%s\n",a[i]);
-
- for(i=0;i<=4;i++) /*Sequence the 6 string with the method of select sort.*/
- {
- for(j=i+1;j<=5;j++)
- {
- if(strcmp(a[i],a[j])>0)
- {//switch a[i] and a[j].
- strcpy(temp,a[i]);
- strcpy(a[i],a[j]);
- strcpy(a[j],temp);
- }
- }
- }
- printf("\nThe six string after Sequence:\n");
- for(i=0;i<=5;i++) /*Output the six string after Sequence.*/
- printf("%s\n",a[i]);
- return 0;
- }
复制代码
这么写的运行结果是对的。代码中第6行(char a[6][100];)对数组a的定义我用的是a[6][100]。在字符串的输入过程中只有6个,也就是按理说我只有定义a[5][100]就够了,0,1,2,3,4,5分别存放一个字符串。但是我写成a[5][100]时运行的结果不对。例如,我依次输入ff,ee,dd,cc,bb,aa这六个字符串。如果用a[6][100],运行的结果是aa,bb,cc,dd,ee,ff,这个结果是对的。但是如果用a[5][100],运行的结果中会出现一些奇怪的符号。那位大神可以给指导一下是那里出了问题。多谢了~ |
|