| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 553 人关注过本帖, 1 人收藏
标题:我到底是哪错了啊,麻烦大家看一下!
只看楼主 加入收藏
狮子。
Rank: 2
来 自:湖北
等 级:论坛游民
帖 子:64
专家分:58
注 册:2010-8-1
结帖率:88.89%
收藏(1)
已结贴  问题点数:10 回复次数:7 
我到底是哪错了啊,麻烦大家看一下!
代码如下:
程序代码:
#include<stdio.h>
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");
}
    int s(ws,lc)
{
    int *ws,*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);
}
麻烦大家了~
搜索更多相关主题的帖子: 麻烦 
2010-08-06 20:50
Cbirdfly
Rank: 1
等 级:新手上路
帖 子:20
专家分:8
注 册:2010-8-6
收藏
得分:5 
呵呵 就错了一个地方
#include<stdio.h>
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");
}
    int s(ws,lc)//这里要定义在main函数前面 ,这可不是面向对象的 呵呵,
                //或者在main前先声明int s(int *,int *);还有就是你这里没有类型,ws和lc都是int型吧而且你
                //用的是引用类型应该加上*
{
    int *ws,*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);
}
这是可以运行的:
#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");
}
2010-08-06 21:10
Cbirdfly
Rank: 1
等 级:新手上路
帖 子:20
专家分:8
注 册:2010-8-6
收藏
得分:0 
printf("there are %d whitespace charactors."ws);啊 忘了说一点 这里你没有逗号.....ws前面
2010-08-06 21:11
erikyo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:270
专家分:1154
注 册:2010-6-10
收藏
得分:5 
#include<stdio.h>

void main()
{
    int ws,lc;
    int s(int *, int *);            //使用在main函数后面定义的函数需要先声明

    ws = lc = 0;                    //建议在主函数里初始化,当然你的做法也没错
    if(s(&ws,&lc))
    {
        printf("there are %d whitespace charactors.",ws);
        printf("\nand %d lowercase letters\n",lc);
    }
    else
        printf("unexpected end-of-file\n");
}

int s(int *ws, int *lc)            //函数定义需要数据类型和参数名
{
//    int *ws,*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)++;
                break;            //虽然default是最后的语句了,还是要养成加break的习惯
        }
    return(0);
}
2010-08-06 21:15
狮子。
Rank: 2
来 自:湖北
等 级:论坛游民
帖 子:64
专家分:58
注 册:2010-8-1
收藏
得分:0 
灰常感谢~

当你小有成绩,打算沾沾自喜时。不知道有多少比你强的人正在埋头奋进!
2010-08-06 21:23
狮子。
Rank: 2
来 自:湖北
等 级:论坛游民
帖 子:64
专家分:58
注 册:2010-8-1
收藏
得分:0 
回复 2楼 Cbirdfly
再问一下,①那个循环为什么能逐个字符循环?
                 ②return(1);这句话是什么意思?
                 ③不是要求主函数和自定义函数括号里面的类型是一样的吗?主函数s(&ws,&lc)里面是地址,自定义函数int s(int *ws,int *lc)里面也是地址吗?
不好意思,我是菜鸟,麻烦了~

当你小有成绩,打算沾沾自喜时。不知道有多少比你强的人正在埋头奋进!
2010-08-07 10:28
狮子。
Rank: 2
来 自:湖北
等 级:论坛游民
帖 子:64
专家分:58
注 册:2010-8-1
收藏
得分:0 
回复 4楼 erikyo
再问一下,①那个循环为什么能逐个字符循环?
                 ②return(1);这句话是什么意思?
                 ③不是要求主函数和自定义函数括号里面的类型是一样的吗?主函数s(&ws,&lc)里面是地址,自定义函数int s(int *ws,int *lc)里面也是地址吗?
不好意思,我是菜鸟,麻烦了~

当你小有成绩,打算沾沾自喜时。不知道有多少比你强的人正在埋头奋进!
2010-08-07 10:45
erikyo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:270
专家分:1154
注 册:2010-6-10
收藏
得分:0 
1、循环为什么能逐个字符进行?
    因为你的这个语句 while((c=getchar())!=EOF),只要没遇到文件结束符,就一直循环
2、return(1);这句话是什么意思?
    在你代码中的意思是遇到一个换行符'\n'之后就结束循环
3、不是要求主函数和自定义函数括号里面的类型是一样的吗?主函数s(&ws,&lc)里面是地址,自定义函数int s(int *ws,int *lc)里面也是地址吗?
    当然是一致的,自定义函数里的参数是指针类型的,所以在main函数中向他传入的必须是地址
2010-08-09 08:39
快速回复:我到底是哪错了啊,麻烦大家看一下!
数据加载中...
 
   



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

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