• 北航 2012年考研复试题3


    3.【问题描述】

    统计关键字出现位置

    输入:

    一行标准c语言代码(字符个数小于300),统计出该字符串中关键字的if,while,for所在的位置,按照关键字出现的顺序依次输出。注意双引号内的不需要统计。
    输入:一行标准c语言代码,字符个数小于300
    输出:

    关键字if,while,for对应的位置,按照关键字出现的顺序依次输出。输出格式为:关键字,后跟冒号,然后是出现的位置。扫描到关键字就输出,每个输出占一行。
    样例输入:

    #include <stdio.h> int main() {int i = 0; if(i == 0) printf("YES"); return 0;}
    #include <stdio.h> int main() {int ifwhile = 0; int forif = 1;char if_for_while = 'a';char *str = "while"; while(ifwhile == 0) {ifwhile = 1;forif = 0;} if(forif == 0) {if_for_while = 'b';} if(ifwhile == 1) {if_for_while = 'c';} return 0;}

    样例输出:

    if:43
    while:88
    if:133
    if:170


    #include <string.h> #include <stdio.h> char s[302]; main() { int i, j, k, l, m, n, w; // freopen("2012_3_string.txt","r",stdin);// bool valid; i = 0, w = 0; while( gets(s) ){ l = strlen(s); //cout << l << endl; valid = 1; for(i=0;i<l;i++){ if( s[i] == '"' ) valid = 1 - valid; //第一次遇到双引号将valid赋值为0,下面的IF语句始终无法执行, //第二次遇双引号将valid赋值为1,下面语句开始执行 if( !valid ) continue;//屏蔽双引号内的东西 if( s[i] == 'i' ){ if( s[i+1] == 'f' && ( s[i+2] == ' ' || s[i+2] == '(' ) && ( s[i-1] == ' ' || s[i-1] == ';' ) )//无法判断第一个字符 printf("if:%d ",i+1); } else if( s[i] == 'w' ){ if( s[i+1] == 'h' && s[i+2] == 'i' && s[i+3] == 'l' && s[i+4] == 'e' && ( s[i+5] == ' ' || s[i+5] == '(' ) && ( s[i-1] == ' ' || s[i-1] == ';' ) ) printf("while:%d ",i+1); } else if( s[i] == 'f' ){ if( s[i+1] == 'o' && s[i+2] == 'r' && ( s[i+3] == ' ' || s[i+3] == '(' ) && ( s[i-1] == ' ' || s[i-1] == ';' ) ) printf("for:%d ",i+1); } } } }
  • 相关阅读:
    基于asp.net + easyui框架,一步步学习easyui-datagrid——实现分页和搜索(二)
    Build CRUD Application with jQuery EasyUI
    sql里的ROW_NUMBER() OVER是啥意思?
    EasyUI实战篇之datagrid:如何重新设置datagrid所配置的属性(options)并重新查询列表(relaod)
    UNIX基础知识之程序和进程
    UNIX基础知识之输入和输出
    UNIX基础知识之文件和目录
    输出至标准出错文件的出错处理函数
    apue.h
    目录操作函数opendir、readdir和closedir
  • 原文地址:https://www.cnblogs.com/Xilian/p/3826428.html
Copyright © 2020-2023  润新知