| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 400 人关注过本帖
标题:书上的代码,看不明白,请大家解释解释,c语言新手
只看楼主 加入收藏
XQwindow
Rank: 2
等 级:论坛游民
帖 子:121
专家分:64
注 册:2013-1-1
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
书上的代码,看不明白,请大家解释解释,c语言新手
是一个按字母排序的程序,书里面没怎么说,有些地方看的不是很明白, 希望各位说说,谢谢啦
程序代码:
#include <stdio.h>
#include <string.h>
#define  SIZE_A 81
#define  LIM 5
void StStr(char *str[],int num);
int main(void)
{
    char input[LIM][SIZE_A];//为什么用二维数组?
    char *pStr[LIM];
    int ct=0,k=0;
    while(ct<LIM && gets(input[ct])!=NULL&&input[ct][0]!='\0')//这里判断不太明白最后一个
    {
        pStr[ct]=input[ct];//这里也不太明白
        ct++;
    }
    StStr(pStr,ct);
    puts("Sort resule list :");
    for (k=0;k<ct;k++)
    {
        puts(pStr[k]);
    }
    return 0;
}
/*按字母顺序排序*/
void StStr(char *str[],int num)
{
    char *temp;
    int i,s;
    for (i=0;i<num-1;i++)
    {
        for (s=i+1;s<num;s++)//这里不明白
        {
            if (strcmp(str[i],str[s])>0)
            {
                temp=str[i];
                str[i]=str[s];
                str[s]=temp;
            }
        }
    }
    return;
}


[ 本帖最后由 XQwindow 于 2013-1-20 16:47 编辑 ]
搜索更多相关主题的帖子: c语言 字母 
2013-01-20 16:46
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
收藏
得分:20 
for (s=i+1;s<num;s++)//这里不明白
这是一个xian套循环,因为不用跟自己本身比较所以s = i+1跳过本身,
这个循环会将元素与其后的所有元素进行比较

就好像:
str[0] : str[1]
str[0] : str[2]
...
str[0] : str[num-1]
than:
i = 1;
到达循环,s 设为 i + 1 = 2
str[1] : str[2]
...
str[1] : str[num-1]

一直到遍历所有元素
而后面的元素无需跟其后的元素进行比较,因为前面的元素已经跟其后的所有元素都进行比较了
 char input[LIM][SIZE_A];//为什么用二维数组?
因为需要记录多个字符串,这样以便给字符串之间划分界限,利于调用
 while(ct<LIM && gets(input[ct])!=NULL&&input[ct][0]!='\0')//这里判断不太明白最后一个
如果用户直接打下回车,gets会在接收字符串后删除回车,所以当字符串的第一个元素为'\0'时表示用户没有输入信息,循环结束
pStr[ct]=input[ct];//这里也不太明白
将input[ct]的地址赋予指针数组的其中的某个指针元素pStr[ct]


I have not failed completely
2013-01-20 19:45
XQwindow
Rank: 2
等 级:论坛游民
帖 子:121
专家分:64
注 册:2013-1-1
收藏
得分:0 
回复 2楼 神龙赖了
等了一天,终于 有人回答了,谢谢你了,我明白了,20分,给你了!

我不知道我能否当程序员,但我依然热爱编程!
2013-01-20 23:09
快速回复:书上的代码,看不明白,请大家解释解释,c语言新手
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020147 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved