输入一串字符,若是二进制则求其模五的值。

要求:1、若输入的字符包含除0、1以外的值,则输出:invalid

2、若输入的为二进制字符串,则输出所计算的其模五的值

3、若其输入字符均为0、1,但是第一个输入的字符为0则输出:irregular

思路:可以参照所学的形式语言与自动机理论里面的自动机思想来做题:通过对输入的字符进行一个个的判断,从而输出所求的值,根据相应的状态再进行输出。

根据题意可以判断出非0、1外的输入都是invalid,所以可以根据这个特点设定它的开始状态state=invalid,后面根据输入字符判断,建议在做题目前可以先画自动机状态图,这样有助于理清思路,避免写的时候出现思绪混乱。另外值得注意的是输入的字符串可能一开始是0、1组成,后面就是其他字符再加0、1组成的字符串的情况,这个时候是invalid状态,若像我这样写的就一定要注意跳到break了,不然会导致判断错误,所以一定要注意到这个情况。

这个题也可以用if...else  if...else...等语句嵌套,也可以不用宏定义每个状态值,直接用1、2、3、4.。。。等等数字作为状态,只要语法无错误都可。

 #include<stdio.h>
#define x0 0
#define x1 1
#define x2 2
#define x3 3
#define x4 4
#define x5 5
#define invalid 6
#define irregular 7
int FA(int state,char input);
int main()
{
char a[];
int state,i=;
gets(a);
state=invalid;
while(a[i]!='\0')
{
state = FA(state,a[i]);
i++;
if (state==invalid)
break;
}
if (state==x0 || state==)
printf("0\n");
else if (state==x1)
printf("1\n");
else if (state==x2)
printf("2\n");
else if (state==x3)
printf("3\n");
else if (state==x4)
printf("4\n");
else if (state==)
printf("invalid\n");
else if (state== )
printf("irregular\n");
return ;
}
int FA(int state, char input)
{
switch(state)
{
case invalid:
if(input == '') state=x1;
else if(input == '') state=x5;
else state=invalid;
break;
case x0:
if(input == '') state=x1;
else if(input == '') state=x0;
break;
case x1:
if(input == '') state=x3;
else if(input == '') state=x2;
else state=invalid;
break;
case x2:
if(input == '') state=x0;
else if(input == '') state=x4;
else state=invalid;
break;
case x3:
if(input == '') state=x2;
else if(input == '') state=x1;
else state=invalid;
break;
case x4:
if(input == '') state=x4;
else if(input == '') state=x3;
else state=invalid;
break;
case x5:
if(input == '' || input == '') state=irregular;
else state=invalid;
break;
case irregular:
if(input == '' || input == '') state=irregular;
else state=invalid;
break;
}
return state;
}

C语言:二进制模5的更多相关文章

  1. CAD从二进流加载数据(com接口VB语言)

    主要用到函数说明: MxDrawXCustomFunction::ReadBinStreamEx 从二进流加载数据,详细说明如下: 参数 说明 IMxDrawBinStream* pBinStream ...

  2. CAD把当前图上数据保存为一个二进流对象(com接口VB语言)

    主要用到函数说明: MxDrawXCustomFunction::WriteBinStreamEx 把当前图上数据保存为一个二进流对象,详细说明如下: 参数 说明 LPCTSTR pszPasswor ...

  3. 【Java】 剑指offer(14) 二进制中1的个数

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 请实现一个函数,输入一个整数,输出该数二进制表示中1的个数.例如把 ...

  4. java语言基础-进制

    一丶Java语言基础:进制 1.进制的四种表现形式 (1).二进制:0,1 满2进1. (2).八进制0-7 :满8进1,用0开头表示. (3).十进制:0-9 满10进1. (4).十六进制:0-9 ...

  5. 统计无符号整数二进制中1的个数(Hamming weight)

    1.问题来源 之所以来记录这个问题的解法,是因为在在线编程中经常遇到,比如编程之美和京东的校招笔试以及很多其他公司都累此不疲的出这个考题.看似简单的问题,背后却隐藏着很多精妙的解法.查找网上资料,才知 ...

  6. [LeetCode] Binary Watch 二进制表

    A binary watch has 4 LEDs on the top which represent the hours (0-11), and the 6 LEDs on the bottom ...

  7. 剑指Offer面试题:9.二进制中1的个数

    一.题目:二进制中1的个数 题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数.例如把9表示成二进制是1001,有2位是1.因此如果输入9,该函数输出2. 二.可能引起死循环的解法 一个 ...

  8. c语言二维数组传递

    c语言二维数组传递,目前我总结三种方法,以及纠正一个不能使用的方法 /********************************* * 方法1: 第一维的长度可以不指定 * * 但必须指定第二维 ...

  9. 剑指Offer:二进制中1的个数

    题目:输入一个整数,输出该数二进制表示中1的个数. // 二进制中1的个数 #include <stdio.h> int wrong_count_1_bits(int n) // 错误解法 ...

随机推荐

  1. Django REST Framework API Guide 08

    1.Filtering 2.Pagination FIltering GenericAPIView的子类筛选queryset的简单方法是重写.get_quueryset()方法. 1.根据当前用户进行 ...

  2. DQL、DML、DDL、DCL区别

    DQL(data query language)数据查询语言 主要是由SELECT构成的查询语句 基本语法:select 字段名 from 表名 where 查询条件 DML(data manipul ...

  3. scikit-learn 决策树 分类问题

    1.Demo from sklearn import tree import pydotplus import numpy as np #李航p59表数据 #年龄,有工作,有自己房子,信贷情况,类别 ...

  4. 一些日期的计算方式 PHP

    一些日期的计算 某个月内的所有天数: public function getMonthDay ($date) { $stattime = strtotime(date('Ym01',strtotime ...

  5. Python-爬虫-requests

    简介 #介绍:使用requests可以模拟浏览器的请求,比起之前用到的urllib,requests模块的api更加便捷(本质就是封装了urllib3) #注意:requests库发送请求将网页内容下 ...

  6. Python-Django 模型层-多表查询

    多表操作 基于对象的跨表查询(多次查询) 一对一: -正向查询按字段 -反向查询按表名小写 一对多: -正向查询按字段(正向查询一定会查出一个来) -反向查询按表名小写_set.all()(返回结果是 ...

  7. Mac OSX 系统搭建 Java 开发环境

    转载:https://www.cnblogs.com/zjx2711904647/p/7735556.html 1. 安装JDK 双击jdk-9.0.1_osx-x64_bin.dmg文件进行安装 2 ...

  8. 浮点数运算的精度问题:以js语言为例

    在 JavaScript 中整数和浮点数都属于 Number 数据类型,所有数字都是以 64 位浮点数形式储存,即便整数也是如此. 所以我们在打印 1.00 这样的浮点数的结果是 1 而非 1.00  ...

  9. 论文阅读笔记四十:Deformable ConvNets v2: More Deformable, Better Results(CVPR2018)

    论文源址:https://arxiv.org/abs/1811.11168 摘要 可变形卷积的一个亮点是对于不同几何变化的物体具有适应性.但也存在一些问题,虽然相比传统的卷积网络,其神经网络的空间形状 ...

  10. Coverity代码扫描工具

    1.说明:Coverity代码扫描工具可以扫描java,C/C++等语言,可以和jenkins联动,不过就是要收钱,jenkins上的插件可以用,免费的,适用于小的java项目 2.这是Coverit ...