| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1083 人关注过本帖
标题:麻烦解释一下原因.....
只看楼主 加入收藏
狮子。
Rank: 2
来 自:湖北
等 级:论坛游民
帖 子:64
专家分:58
注 册:2010-8-1
结帖率:88.89%
收藏
已结贴  问题点数:20 回复次数:11 
麻烦解释一下原因.....
程序代码:
#include<stdio.h>

    int s(int *ws,int *lc)
{
    int c;
    *ws=*lc=0;
    while((c=getchar())!=EOF)
        switch(c)
    {
        case' ':
        case'\t':(*ws)++;break;
        case'\n':return(1);
        default:if(c>='a'&&c<='z') (*lc)++;
    }
    return(0);
}
void main()
{
    int ws,lc;
    if(s(&ws,&lc))
    {
        printf("there are %d whitespace charactors.",ws);
        printf("\nand %d lowercase letters",lc);
    }
    else
        printf("unexpected end-of-file\n");
} 
问一下,①那个循环为什么能逐个字符循环?
                 ②return(1);这句话是什么意思?
                 ③不是要求主函数和自定义函数括号里面的类型是一样的吗?主函数s(&ws,&lc)里面是地址,自定义函数int s(int *ws,int *lc)里面也是地址吗?
不好意思,我是菜鸟,麻烦了~
搜索更多相关主题的帖子: 解释 麻烦 
2010-08-07 10:58
mujiaha
Rank: 2
等 级:论坛游民
帖 子:37
专家分:65
注 册:2010-7-27
收藏
得分:3 

while(c!=EOF)
    {c=getchar();
        switch(c)
    {
        case' ':
        case'\t':(*ws)++;break;
        case'\n':return(1);
        default:if(c>='a'&&c<='z') (*lc)++;
    }
}
    return(0);个人以为,这个循环体可以这样理解,c开始有个初值,不是EOF就可以;这样他就可以一直循环。直到return(1)出现;
return(1)的意思就是你输入回车的时候函数调用结束;返回值为1;
主函数s(&ws,&lc)里面是地址,自定义函数int s(int *ws,int *lc)里面很明显是指针,接受由实参传递过来的地址,也就是变量ws和lc的地址,
函数里面的形参ws和lc之指针变量,别混淆;
2010-08-07 12:34
mujiaha
Rank: 2
等 级:论坛游民
帖 子:37
专家分:65
注 册:2010-7-27
收藏
得分:0 
int c;
    *ws=*lc=0;
意思就只把指针变量指向的内存单元赋值为0;而指针变量ws和lc所指向的不就只主函数中变量ws和变量lc内存单元的首地址么;
以上再下拙见,请各位指点,有错误之处勿批评,谢谢
2010-08-07 12:38
安普留香
Rank: 2
等 级:论坛游民
帖 子:77
专家分:62
注 册:2010-5-17
收藏
得分:3 
1  while()里面为真就循环zhixing
2 遇见return(1)返回到函数调用处(if())if语句判断值为真执行if语句后的复合语句
3 实参赋给形参。形参是指针,所以赋值时,赋给实参地址
2010-08-07 12:46
mujiaha
Rank: 2
等 级:论坛游民
帖 子:37
专家分:65
注 册:2010-7-27
收藏
得分:0 
while((c=getchar())!=EOF)
表示先给输入一个字符,再判断是否!=EOF;
2010-08-07 13:18
狮子。
Rank: 2
来 自:湖北
等 级:论坛游民
帖 子:64
专家分:58
注 册:2010-8-1
收藏
得分:0 
回复 2楼 mujiaha
哦,谢啦,问题2和3都懂了,只是还是不知道:为什么比如输入字符串比如说"yougood"的时候它是一个字母一个字母的循环?

当你小有成绩,打算沾沾自喜时。不知道有多少比你强的人正在埋头奋进!
2010-08-07 13:55
狮子。
Rank: 2
来 自:湖北
等 级:论坛游民
帖 子:64
专家分:58
注 册:2010-8-1
收藏
得分:0 
回复 4楼 安普留香
哦,谢啦,问题2和3都懂了,只是还是不知道:为什么比如输入字符串比如说"yougood"的时候它是一个字母一个字母的循环?

当你小有成绩,打算沾沾自喜时。不知道有多少比你强的人正在埋头奋进!
2010-08-07 13:55
水神之舞
Rank: 2
等 级:论坛游民
帖 子:25
专家分:10
注 册:2010-8-7
收藏
得分:3 
这哥程序的主要作用是什么啊???
2010-08-07 14:13
深蓝之恋
Rank: 2
等 级:论坛游民
帖 子:7
专家分:10
注 册:2010-8-7
收藏
得分:3 
这是原为函数的原因;你可是上网搜一下,弄清楚gets、getch、getchar这三个函数的分别
第一个是字符串,而且可以输出空格;
第二个我记得不是很清楚了;
反正第三个是输出单个的字符的;
2010-08-07 15:31
Allenhandsom
Rank: 1
等 级:新手上路
帖 子:10
专家分:4
注 册:2010-4-14
收藏
得分:3 
gets函数是从终端输入一个字符串到字符数组,并且得到一个函数值,该函数值是字符数组的起始地址;
getch函数是获取一个字符;
getchar函数是从流中读取一个字符,直到输入“enter”为止。
2010-08-07 23:52
快速回复:麻烦解释一下原因.....
数据加载中...
 
   



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

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