humanint 2016-11-20 08:21 采纳率: 100%
浏览 855
已采纳

请问c语言中使用模块化为什么会导致结果不同?

这个是不使用模块化的程序
#include
#include
#include
int main(void)
{
int ch, word, alpha;
double result;
alpha = word = 0;
bool inword = false;

while ((ch = getchar()) != EOF)
{
    if (isalpha(ch))
        alpha++;
    if (isalpha(ch) && !inword)
    {
        inword = true;
        word++;
    }
    if (!isalpha(ch) && inword)
        inword = false;
}
result = alpha / word;
printf("%d word and %d alpha,per %.2lf alpha in a word.", word, alpha, result);
getchar();
getchar();
return 0;

}
调试结果正常
然后我使用模块化
#include
#include
#include
int get_word(char ch);
int get_alpha(char ch);
int main(void)
{
int ch,word,alpha;
double result;

while ((ch = getchar()) != '#')
{
    word = get_word(ch);
    alpha = get_alpha(ch);
}
result = (float)alpha / (float)word;
printf("%d word and %d alpha,per %.2lf alpha in a word.", word, alpha,result );
getchar();
getchar();
return 0;

}

int get_word(char ch)
{

int word1=0;
bool inword = false;
if (isalpha(ch) && !inword)
{
    inword = true;
    word1++;
}
if (!isalpha(ch)&&inword)
    inword = false;
return word1;

}

int get_alpha(char ch)
{

int alpha1=0;
if (isalpha(ch))
    alpha1++;
return alpha1;

}
调试结果全是1
请问这是怎么回事?

  • 写回答

4条回答 默认 最新

  • shen_wei 2016-11-25 07:42
    关注

    bool inword = false;

    int get_word(char ch)
    {
    int word1=0;

    if (isalpha(ch) && !inword)
    {
    inword = true;
    word1++;
    }
    if (!isalpha(ch)&&inword)
    inword = false;
    return word1;
    }
    int get_alpha(char ch)
    {
    int alpha1=0;
    if (isalpha(ch))
    alpha1++;
    return alpha1;
    }

    int main(void)
    {
    int ch,word = 0,alpha = 0;
    double result;
    while ((ch = getchar()) != '#')
    {
    word += get_word(ch);
    alpha += get_alpha(ch);
    }
    result = (float)alpha / (float)word;
    printf("%d word and %d alpha,per %.2lf alpha in a word.", word, alpha,result );
    getchar();
    getchar();
    return 0;
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥20 iqoo11 如何下载安装工程模式
  • ¥15 flask项目,怎么使用AJAX传数据库数据到echarts图表的data里,实现异步加载数据。
  • ¥15 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 蓝桥杯单片机第十三届第一场,整点继电器吸合,5s后断开出现了问题