小白求解,课本代码。

2301_81141171 2023-11-17 19:29:06

#include<stdio.h>
#include<stdlib.h>
int main()
{
    char str[81];
    int i=0,num=0,word=0;
    char c;
    while((str[i++]=getchar())!='\n');
    str[i]='\0';                \\就这边str[i++]不是回车,则都为\0,而下面循坏的条件是str[i]不等于\0,就这里搞不清楚
    for(i=0;(c=str[i])!='\0';i++)
        if(c==' ')word=0;
        else if(word==0)
        {
            word=1;
            num++;
        }
        printf("%d\n",num);
        system("pause");
        return 0;

}

...全文
139 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
forever74 2023-11-18
  • 打赏
  • 举报
回复 1

你漏看了一个分号。
while行末尾的分号才是它的循环体。
而红字前面那句不在循环内。

2301_81141171 2023-11-19
  • 举报
回复 1
@forever74 恍然大悟
少年黑客 2023-11-17
  • 打赏
  • 举报
回复 2

这段代码的功能是计算输入的字符串中单词的数量。具体步骤如下:

定义一个字符数组str,用于存储输入的字符串;
使用while循环读取输入的字符串,直到遇到换行符' ';
在循环结束后,将字符串末尾添加一个空字符'\0',表示字符串结束;
使用for循环遍历字符串中的每个字符,统计单词数量;
如果遇到空格字符,将word置为0,表示下一个字符不是单词的开始;
如果遇到非空格字符,且word为0,表示遇到了一个单词的开始,将word置为1,并将num加1,表示单词数量加1;
输出单词数量;
调用system("pause")函数,暂停程序运行,等待用户按键继续;
返回0,表示程序正常结束。

------- 基于 Python 的词法和LR(1)文法分析器 ## 总体说明 * 编程语言:Python 2.7.11 * 编程平台:Ubuntu16.04 * 编程环境:sublime * 完成的内容:实现了 3型文法的词法分析器和2 型文法的LR(1)语法分析器。 * 测试文法:一个类C语言的文法 * 测试程序:一个类C语言的程序。 ## 文件说明 本程序共涉及7个文件, 现将其说明如下: lexical_analyze.py 词法分析程序 syntax_analyze.py 语法分析程序 nfa_and_dfa.py 定义了 nfa 和 dfa 类以及其节点 lex_grammar.txt 词法文法文件 syn_grammar.txt 语法文法文件 source.cc 待分析的类C程序 token_table.data 词法分析输出的token表 ## 词法文法说明 我构造了一个3型文法作为程序读入的词法的文法,为了简化读入操作,我将课本上的 ->(推出符)换成了 ‘:’, ‘:’的左侧是产生式的左部, 右侧是产生式的右部, 并且将空产生式的右部的埃普西隆用 $ 来代替。 我将token的类型大体分成了 identifier、limiter、operator、number、string 等五类, 并每一类设计了表达式和推导过程。 ## 语法文法说明 直到开始写文法我才直到这个课设最难的是文法的构造, 自己YY了很久也没能设计出一个让自己满意且可用的文法, 所以中从 http://www.nongnu.org/hcb/ 这里参考了一下,最后写出来了一个2型文法。 跟词法的文法, 这里用 ‘:’ 来代替课本上的 –> 并且用 ‘$’ 来代替埃普西隆空产生式右部。 ## 词法分析器说明 词法分析器接受一个3型文法, 接受3型文法后会分析其终结符和非终结符, 分析方法是: 对于非终结符, 很明显, 所有在产生式左部的符号都是非终结符, 那么终结符就是所有的符号集合与非终结符集合的差集.分析完终结符和非终结符之后根据课本算法构造 NFA, 然后根据课本的算法构造 DFA,至此文法的处理工作结束。 接下来分析待分析的程序, 对于读入的程序, 将每个字符一次输入到 DFA 里面,当 DFA 不能接受某个字符的时候判断当前状态是否是一个终结状态, 如果是则token分析成功, 否则词法分析失败。 ## 语法分析器说明 语法分析器首先读入要分析的2型文法, 然后求出文法的终结符和非终结符, 求法与上面相同, 之后要求出每个文法符号的 first集,终结符的first 集是他本身,非终结符的 first 集的求解过程是一个记忆化搜索的过程。 然后为文法添加拓展的 S’->S,# 在此基础上进行拓展形成项目集 I0, 然后对项目集I0 进行推广, 同时构建 LR(1) 分析表。 有了 LR(1) 分析表后接下来的过程我们只需要一个一个的将词法分析生成的token读入到程序里面放在分析表中寻找移进或者归约操作即可, 如果最后的状态是 acc 则文法符合要求, 如果最后无法得到 acc,或者在分析表中找不到相应的操作, 则语法错误。 -------- 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! <项目介绍> 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------

70,026

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧