北航计算机机试12统计关键字位置
来源:互联网 发布:鸿鹄焉知燕雀之志图片 编辑:程序博客网 时间:2024/06/05 02:31
统计关键字出现位置
输入:
一行标准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:43while:108if:153if:190
首先你要知道C语言对于变量的命名规则:
标识符只能由英文字母,数字和下划线组成;
标识符必须以字母或者下划线开头;
不允许使用关键字。
思路:我总觉得是我太死板了,本来准备用下数据结构或者什么算法,发现还没有直接暴力来的妥当。。。。。
思路就是:
有两个封闭
#include<stdio.h>#include<string.h>#define N 300int iswhat(char sign);int main(){ char a[N]; //fgets(a,sizeof(a),stdin); FILE *fp; if((fp=fopen("demo.txt","r"))!=NULL) { fgets(a,N,fp); puts(a); fclose(fp); } int flag=0;//标志是否在双引号中 int isblack=0;//标志是否是非字母,数字,下划线和双引号 int len=strlen(a)-1; for(int i=0;i<len;i++) { if(iswhat(a[i])==4 || flag==0) { if(iswhat(a[i])==0) { isblack=1; } else if(isblack==1 && iswhat(a[i])==1)//第一个字母 { if(a[i]=='i'&& a[i+1]=='f' && iswhat(a[i+2])==0 && i+2<len) printf("if:%d\n",i+1); else if(a[i]=='w' && a[i+1]=='h' && a[i+2]=='i'&& a[i+3]=='l'&&a[i+4]=='e'&&iswhat(a[i+5])==0&&i+5<len) printf("while:%d\n",i+1); else if(a[i]=='f' && a[i+1]=='o' && a[i+2]=='r' && iswhat(a[i+3])==0 && i+3<len) printf("for:%d\n",i+1); else isblack=0; } else if(iswhat(a[i])==4) { if(flag==0) { flag=1;//禁止访问 }else { flag=0; } }else{ continue; } } } return 0;}int iswhat(char sign){ if(sign>='a' && sign<='z') return 1;//是字母 else if(sign<='9' && sign>='0') return 2;//是数字 else if(sign=='_') return 3;//是下划线 else if(sign=='"') return 4;//是冒号 else return 0;//什么都不是}
error:
error C2018: unknown character ‘0xa1’
一不小心把输入法改成了全角,全角空格是会编译出错的。
0 0
- 北航计算机机试12统计关键字位置
- 北航计算机机试07字符串统计
- 北航计算机机试17
- 北航12年机试--统计关键字的C语言实现
- 北航计算机机试16逆序数
- 北航计算机机试14阶乘数
- 北航计算机机试13真分数约分
- 北航计算机机试14五子棋
- 北航计算机机试14排版
- 北航计算机机试11替换矩阵
- 北航计算机机试08旋转矩阵
- 北航计算机机试11字符串扩展
- 北航计算机机试11孪生数
- 北航计算机机试08素数
- 北航计算机机试15相亲数
- 北航计算机机试06成绩排序
- 北航计算机机试09数组排序
- 北航计算机机试08字符串匹配
- 进程与线程之间区别
- 005.有序链表一元多项式C实例
- Linux中常用的基本操作命令
- google_hack【零碎资料整理】
- C++第二次上机作业 百钱百鸡
- 北航计算机机试12统计关键字位置
- jenkins总结
- 字符,字符串输入示例程序;屏幕清除函数实例
- Linux环境下权限简析
- 【技能库】@Cacheable @CachePut Spring 缓存示例(142)
- 机器人程序设计课程配套系统镜像使用说明( Ubuntu 14.04.5 + ROS indigo )
- 2.5.PHP7.1 女神级教程-女神的私人信息 -【数据类型】
- DAX-PowerBI系列
- I/O多路复用之select简介