经典重庆

标题: [原创]C语言_学习题套_第三套 [打印本页]

作者: 文木四水    时间: 2007-2-1 13:15
标题: [原创]C语言_学习题套_第三套
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 标识符处理程序<br/>要求: 假设你们正在开发一种新的计算机语言的编译器。该编译器包括很多模块,其中你负责编写一个标识符的简单处理程序。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 程序的功能要求如下:<br/>从键盘输入数据到程序中;<br/>将数据写出到文本文件accp.txt中<br/>计算文件中有多少个有效的标识符。此处有效标识符的定义是:字母开头,后面只能跟字母和数字。例如文件中如下一行内容“sa,’;fgf[]][ert5354[]fd3”,那么在这行中有效的标识符是:sa, fgf,&nbsp; ert5354,&nbsp; fd3,共四个有效的标识符<br/>推荐实现步骤:<br/>以正确的模式打开文件accp.txt<br/>从键盘输入合理的测试数据;<br/>将数据写出到文件中;<br/>读取文件的内容,滤去非字母和数字的字符,将标识符计数、输出; <br/>输出标识符的个数<br/>运行时,显示如下图:</p><p>Input text for accp.txt(input x or X as end of input)<br/>Void go()<br/>{<br/>int i=9;<br/>if (i==9)<br/>{<br/>&nbsp;&nbsp;&nbsp;&nbsp; Printf(“This number is %d,”,i);<br/>}<br/>}x</p><p>Token 1: Void<br/>Token 2: go<br/>Token 3: int <br/>Token 4: i<br/>Token 5: if <br/>Token 6: i<br/>Token 7: printf<br/>Token 8: This<br/>Token 9: number<br/>Token 10: is<br/>Token 11: d<br/>Token 12: i</p><p>File accp.txt have 12 valid tokens<br/>D:\work\tcrun&gt;_</p><p>Accp文件的内容如下:<br/>&nbsp;Void go()<br/>{<br/>int i=9;<br/>if (i==9)<br/>{<br/>&nbsp;&nbsp;&nbsp;&nbsp; Printf(“This number is %d,”,i);<br/>}<br/>}</p><p>注意事项:<br/>不必考虑“有效标识符”的前面和后面是否是空格<br/>要能够将两个“有效标识符”之间的非法字符滤掉;<br/>与用户交互的格式应严格按照上图的形式进行。即:能够输出每个标识符,同时又能够正确计数;</p>
作者: 文木四水    时间: 2007-2-1 13:16
<p>解:</p><p>//过滤无效字符<br/>#include&lt;stdio.h&gt;<br/>void main()<br/>{<br/>&nbsp;FILE *fp1,*fp2;<br/>&nbsp;char num[100];<br/>&nbsp;char temp[20][5];<br/>&nbsp;char ch;<br/>&nbsp;int chal;<br/>&nbsp;int i=0,n=-1,j=0,m=0;//m用来记录共有多少个标识符<br/>&nbsp;int x;<br/>&nbsp;if((fp1=fopen("accp.txt","w"))==NULL)//创建文本文件accp.txt<br/>&nbsp;{<br/>&nbsp;&nbsp;printf("创建文件出错");<br/>&nbsp;&nbsp;exit(1);<br/>&nbsp;}<br/>&nbsp;printf("向文本文件中输入数据(提示:文本文件只写入空格符以前的数据)\n");<br/>&nbsp;scanf("%s",num);<br/>&nbsp;fputs(num,fp1);<br/>&nbsp;fclose(fp1);</p><p>&nbsp;<br/>&nbsp;getch();<br/>}<br/></p><p></p>




欢迎光临 经典重庆 (http://bbs.jdcq.net/) Powered by Discuz! X3.1
收藏本站吧
(收藏后不再显示此按纽)