| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5882 人关注过本帖
标题:[判断C语言算术表达式的合法性]
只看楼主 加入收藏
casual0402
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2008-5-11
收藏
 问题点数:0 回复次数:10 
[判断C语言算术表达式的合法性]
基本要求:
     从文件读入整数 N,  后跟2*N行字符串,两行一组。
每组第一行是预定义的变量(可以多个)。第二行字符串为一个预期的C语言算术表达式。
程序分别判断每个字符串,如果是正确的C语言算术表达式,输出OK;否则,输出其错误类型。如果一个表达式有多个错误,输出一个即可。
用N-S流程图表示处理逻辑(算法)。
设计10个测试数据。
     完成解题报告。


没有点思路,请指教,谢谢
搜索更多相关主题的帖子: C语言 算术 合法性 判断 表达 
2008-09-09 22:36
shade1220
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2008-8-5
收藏
得分:0 
感觉跟代码解释器挺像.大量采用switch函数

踏踏实实学习,认认真真编程
2008-09-09 22:58
qfyzy
Rank: 2
等 级:论坛游民
威 望:1
帖 子:380
专家分:86
注 册:2008-2-17
收藏
得分:0 
典型的编译原理啊~去看编译原理的书吧,短时间讲不清的

当对C的经验增加时,它会显的很好用.----Dennis M Ritche如是说
2008-09-09 23:05
casual0402
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2008-5-11
收藏
得分:0 
回复 3# qfyzy 的帖子
要求用C语言写的  判断 【算术】表达式
2008-09-09 23:08
qfyzy
Rank: 2
等 级:论坛游民
威 望:1
帖 子:380
专家分:86
注 册:2008-2-17
收藏
得分:0 
[bo][un]casual0402[/un] 在 2008-9-9 22:36 的发言:[/bo]

基本要求:
     从文件读入整数 N,  后跟2*N行字符串,两行一组。
每组第一行是预定义的变量(可以多个)。第二行字符串为一个预期的C语言算术表达式。
程序分别判断每个字符串,如果是正确的C语言算术表达式,输 ...

这不就是语法解析么~我不知道你是怎么会碰到这种问题的,如果不是高年级的信息学院的学生,根本不会有这样的题。

当对C的经验增加时,它会显的很好用.----Dennis M Ritche如是说
2008-09-09 23:19
casual0402
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2008-5-11
收藏
得分:0 
回复 5# qfyzy 的帖子
很抱歉……这是我们C程序设计的作业题
2008-09-10 19:11
snakealpha
Rank: 1
来 自:扬州
等 级:新手上路
威 望:1
帖 子:267
专家分:0
注 册:2005-11-5
收藏
得分:0 
-_-|||
对于作业题偶们的一贯方针是...自己想吧,反正对你比较不利就是了

天涯也有江南信
梅破知春近
夜阑风细得香迟
不道晓来开遍向南枝
2008-09-10 19:15
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
= =其实阿……这个题目可以很简单:

程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 4096
char buf[N];

int main(void)
{
    int i, n;
    scanf("%d ", &n);
    for (i = 0; i < n; i++)
    {
        FILE *fp;
        strcpy(buf, "main(){int ");
        fgets(buf + strlen(buf), N, stdin);
        strcat(buf, ";");
        fgets(buf + strlen(buf), N, stdin);
        strcat(buf, ";}");

        fp = fopen("tmp.c", "w");
        fwrite(buf, 1, strlen(buf), fp);
        fclose(fp);

        if (system("gcc -o tmp tmp.c 2>tmp.log") == 0)
            printf("OK!\n");
        else
        {
            fp = fopen("tmp.log", "r");
            fgets(buf, N, fp);
            fgets(buf, N, fp);
            puts(buf + 9);
            fclose(fp);
        }
    }

    return 0;
}




我的运行结果:
starwing@starwing-desktop:~$ ./a
2
aa,bb,vv
aa=bb+vv;
OK!
aa,cc
aa+cc+dd
错误: ‘dd’未声明 (在此函数内第一次使用)

starwing@starwing-desktop:~$

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-09-11 01:54
qfyzy
Rank: 2
等 级:论坛游民
威 望:1
帖 子:380
专家分:86
注 册:2008-2-17
收藏
得分:0 
回复 8# StarWing83 的帖子
我晕哦~拿重定向来做。。。。

当对C的经验增加时,它会显的很好用.----Dennis M Ritche如是说
2008-09-11 03:49
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
回复 9# qfyzy 的帖子
他又没规定要用什么来做……

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-09-11 10:08
快速回复:[判断C语言算术表达式的合法性]
数据加载中...
 
   



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

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