|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 湮汐 于 2012-4-14 12:20 编辑
编写一个程序,主函数读取输入10个字符串,或遇到空字符串,由二者中最先满足的那个终止读取过程。
被调用函数功能:所有字符串,按第一个单词的长度从小到大排列输出。
以下是我自己写的程序,可我实在不知道错在那里了。
我的主函数没有错,应该是被调用函数的循环有问题。
- #include <stdio.h>
- #include <ctype.h>
- void word(char (*p)[100],int i);
- int main()
- {
- char a[10][100];
- int i = 0;
- gets(a[i]);
- while(*a[i] && i < 10)
- {
- i++;
- gets(a[i]);
- }
- word(a,i);
- }
- void word(char (*b)[100],int i)
- {
- int j,k,l;
- int p,q;
- int a[10] = {0,1,2,3,4,5,6,7,8,9};
- for(j = 0;j < i-1;j++)
- for(k = j+1;k < i;k++)
- {
- for(l = 0;!isspace(b[a[j]][l]) && b[a[j]][l];l++)
- p = l+1;
- for(l = 0;!isspace(b[a[k]][l]) && b[a[k]][l];l++)
- q = l+1;
- if (p > q)
- {
- l = a[j];
- a[j] = a[k];
- a[k] = l;
- }
- }
- for(j = 0;j < i;j++)
- puts(b[a[j]]);
- putchar('\n');
- }
复制代码 我这里借用的思想是冒泡排序,先建立一个数组,并对应再将第一个单词的长度由小到大找出来。而数组a[10]的值,就相当于字符串的下标,然后对数组排序,接着把排序后的数组下标放在新的循环里面,输出字符串。
各位高手帮帮忙,我知道这道题还有不同的解法,但是我主要是想知道我错在哪,为什么调试不出来。谢谢了!
搞的我好几个晚上都没睡好了!
|
|