CRC16效验的程序怎么写

CRC16效验的程序怎么写,第1张

方法如下:

CRC-16码由两个字节构成,在开始时CRC寄存器的每一位都预置为1,然后把CRC寄存器与8-bit的数据进行异或(异或:二进制运算 相同为0,不同为1;0^0=0;0^1=1;1^0=1;1^1=0), 之后对CRC寄存器从高到低进行移位,在最高位(MSB)的位置补零,而最低位(LSB,移位后已经被移出CRC寄存器)如果为1,则把寄存器与预定义的多项式码进行异或,否则如果LSB为零,则无需进行异或。重复上述的由高至低的移位8次,第一个8-bit数据处理完毕,用此时CRC寄存器的值与下一个8-bit数据异或并进行如前一个数据似的8次移位。所有的字符处理完成后CRC寄存器内的值即为最终的CRC值。

1.设置CRC寄存器,并给其赋值FFFF(hex)。

2.将数据的第一个8-bit字符与16位CRC寄存器的低8位进行异或,并把结果存入CRC寄存器。 3.CRC寄存器向右移一位,MSB补零,移出并检查LSB。

4.如果LSB为0,重复第三步;若LSB为1,CRC寄存器与多项式码相异或。

5.重复第3与第4步直到8次移位全部完成。此时一个8-bit数据处理完毕。

6.重复第2至第5步直到所有数据全部处理完成。

7.最终CRC寄存器的内容即为CRC值。

CRC(16位)多项式为 X16+X15+X2+1,其对应校验二进制位列为1 1000 0000 0000 0101。

//╮(╯▽╰)╭,写了好久的 啊

#include<stdioh>

#include<stdlibh>

#define STUDENT 4//there are 4 students

void change(struct student);

int findscore(int,struct student);

struct student

{

int no;//学号

char name[20];//姓名

int Fox,C,English,total;

}

main()

{

int i,j,check,findresult;

struct student stu;

printf("请按如下格式输入学生信息:\n");

printf("学号\n姓名\nFox成绩 C成绩 English成绩(成绩之间一个空格):\n");

printf("输入完一个学生信息后,回车,继续输入下一个学生信息,下面请输入:\n");

stu=malloc(sizeof(struct student)STUDENT);

for(i=0;i<=STUDENT-1;i++)

{

//stu[i]=malloc(sizeof(struct student));

scanf("%d",&(stu[i]no));

getchar();

gets(stu[i]name);

scanf("%d %d %d",&stu[i]Fox,&stu[i]C,&stu[i]English);

stu[i]total=stu[i]Fox+stu[i]C+stu[i]English;

}

printf("总分统计如下:\n");

for(i=0;i<=STUDENT-1;i++)

{

printf("%s的成绩是%d\n",stu[i]name,stu[i]total);

}

change(stu);

printf("\n降序排列如下\n");

for(i=0;i<=STUDENT-1;i++)

{

printf("%s的成绩是%d\n",stu[i]name,stu[i]total);

}

printf("\n\n请输入欲查询的学号(输入-1结束):\n");

scanf("%d",&check);

while(check!=-1)

{

findresult=findscore(check,stu);

printf("%s的成绩是%d\n",stu[findresult]name,stu[findresult]total);

scanf("%d",&check);

}

}

void change(struct student stu)

{

int i,j;

struct student temp;

for(j=1;j<=STUDENT-1;j++)

{

for(i=0;i<=STUDENT-1;i++)

{

if(stu[i]total<stu[i+1]total)

{

temp=stu[i];

stu[i]=stu[i+1];

stu[i+1]=temp;

}

}

}

}

int findscore(int check,struct student stu)

{

int i;

for(i=0;i<=STUDENT-1;i++)

{

if(check==stu[i]no)

break;

}

return i;

}

#include "stdioh"

#include "stringh"

void deleteChar(char a,char c)//从特定字符串中删除特定字符

{

   int i; char d=NULL;

   if((d=strchr(a,c))!=NULL)//找到这个字符,从后一位向前移位,将其覆盖,达到删除的目的

   {

        for(i=0;(d+i)!=0;i++)

         (d+i)=(d+i+1);

     }

}

int main()

{

   char Str1[100]={0};

   char Char_Check;

   int i;

   gets(Str1);

   scanf("%c",&Char_Check);

   for(i=0;i<strlen(Str1);i++)//一次只能删除一个特定字符,循环删除,最多循环字符串最大长度

        deleteChar(Str1,Char_Check);

    puts(Str1);

}

运行结果:

C语言合法标识符由数字,字母,下划线组成。

且第一个字母不能为数字。

于是,根据其定义,可以进行判断,代码如下:

#define is_upper(x) (x>='A' && x<='Z')//大写字母判断。

#define is_lower(x) (x>='a' && x<='z')//小写字母判断。

#define is_char(x) (is_upper(x) || is_lower(x)) //字母判断。

#define is_num(x) (x>='0' && x<='9')//数字判断。

#define is_down_link(x) (x == '_')//下划线判断。

int check_first_char(char x)//判断第一个字符是否合法。

{

    return is_char(x) || is_down_link(x);//当为字母或下划线时合法。

}

int check_other_char(char x)//判断其它字符是否合法。

{

    return is_char(x) || is_down_link(x) || is_num(x);//当为数字,字母或下划线时合法。

}

int check(char str)//判断标识符str是否合法,如果合法返回1,否则返回假。

{

    int i;

    if(check_first_char(str[0]) == 0) return 0;//检查第一字符。

    for(i = 1; str[i]; i ++)

        if(check_other_char(str[i]) == 0) return 0; //检查其它字符。

        

    return 1;

}

int main()

{

    char id[200];

    scanf("%s",id);//读入标识符。

    if(check(id)) //进行判断并输出结果。

        printf("标识符合法\n");

    else printf("标识符非法\n");

}

check 列 like “男” or “女” 这样表达。

结构化查询语言是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同 数据库系统,,可以使用相同的结构化查询语言作为数据输入与管理的接口。

1986年10月,美国国家标准协会对SQL进行规范后,以此作为关系式数据库管理系统的标准语言,1987年得到国际标准组织的支持下成为国际标准。

结构化查询语言SQL是最重要的 关系数据库 *** 作语言,并且它的影响已经超出 数据库领域,得到其他领域的重视和采用,如 人工智能领域的数据检索,第四代软件开发工具中嵌入SQL的语言等。

各种不同的 数据库对 SQL语言的支持与标准存在着细微的不同,这是因为,有的产品的开发先于标准的公布,另外,各产品开发商为了达到特殊的性能或新的特性,需要对标准进行扩展。

//用面向对象,委托一个接口去负责判断,把逻辑分离出主干程序

public class IntegerCheckDemo {

    private interface IntegerCheck{

        boolean isOdd(int i);

    }

    private static class _IntegerCheck implements IntegerCheck{

        public boolean isOdd(int i) {

            return (i&1)!=0;

        }

    }

    public static void main(String[] args) {

        IntegerCheck check = new _IntegerCheck();

        Systemoutprintln(checkisOdd(3));

        Systemoutprintln(checkisOdd(4));

        Systemoutprintln(checkisOdd(41));

        Systemoutprintln(checkisOdd(3234));

        Systemoutprintln(checkisOdd(332410));

    }

}

全部代码已发送你的邮箱。

以下是部分代码。

package zhidao;

import javautilScanner;

public class Main {

 //从控制台读入信息

 private Scanner scanner = new Scanner(Systemin);

 private StudentService ss = new StudentService();

 

 public static void main(String[] args) {

  Main main = new Main();

  mainstartService();

 }

 public void startService(){

  Systemoutprintln("欢迎使用宿舍管理系统");

  //加载之前的舍友信息

  ssgetFromFile();

  while(true){

   Systemoutprintln("1,添加室友信息\t2,显示所有室友信息\t3,按姓名查找室友\t4,保存室友信息到文件\t5,调入舍友\t6,调离舍友\t7,退出");

   Systemoutprint("请选择:");

   int choose = IntegerparseInt(scannernextLine());

   switch (choose) {

   case 1:

    thisaddRoomMates();

    break;

   case 2:

    ssprintRoomMates();

    break;

   case 3:

    thisfindRoomMatesByName();

    break;

   case 4:

    sssaveToFile();

    break;

   case 5:

    thisaddRoomMates();

    break;

   case 6:

    thisremoveRoomMatesBySno();

    break;

   case 7:

    Systemoutprintln("info -- 感谢使用,再见!");

    Systemexit(0);

    break;

   default:

    Systemoutprintln("info -- 无此项,请重新选择!");

    break;

   }

  }

  

 }

 /

   调离舍友

  /

 private void removeRoomMatesBySno() {

  while(true){

   Systemoutprintln("1,调离舍友\t2,退到上一层");

   Systemoutprint("请选择:");

   int choose = IntegerparseInt(scannernextLine());

   switch (choose) {

    case 1:

     remove();

     break;

    case 2:

     return;

    default:

     Systemoutprintln("info -- 无此项,请重新选择!");

   }

  }

 }

 /

   调离

  /

 private void remove() {

  Systemoutprint("请输入学号:");

  String sno = scannernextLine();

  ssremoveRoomMatesBySno(sno);

 }

 /

   按姓名查找

  /

 private void findRoomMatesByName() {

  while(true){

   Systemoutprintln("1,查找\t2,退到上一层");

   Systemoutprint("请选择:");

   int choose = IntegerparseInt(scannernextLine());

   switch (choose) {

    case 1:

     check();

     break;

    case 2:

     return;

    default:

     Systemoutprintln("info -- 无此项,请重新选择!");

   }

  }

 }

 /

   查找

  /

 private void check() {

  Systemoutprint("请输入姓名:");

  String name = scannernextLine();

  ssfindRoomMateByName(name);

 }

 /

   添加室友

  /

 private void addRoomMates() {

  while(true){

   Systemoutprintln("1,添加\t2,退到上一层");

   Systemoutprint("请选择:");

   int choose = IntegerparseInt(scannernextLine());

   switch (choose) {

    case 1:

     add();

     break;

    case 2:

     return;

    default:

     Systemoutprintln("info -- 无此项,请重新选择!");

   }

  }

 }

 /

   添加

  /

 private void add() {

  Systemoutprint("请输入学号:");

  String sno = scannernextLine();

  Systemoutprint("请输入姓名:");

  String name = scannernextLine();

  Systemoutprint("请输入性别:");

  String sex = scannernextLine();

  Systemoutprint("请输入年龄:");

  int age = IntegerparseInt(scannernextLine());

  ssaddRoomMates(new Student(sno,name,sex,age));

 }

}

以上就是关于CRC16效验的程序怎么写全部的内容,包括:CRC16效验的程序怎么写、学生成绩管理系统 【问题描述】 用c语言编写一个简单的学生信息管理程序,能实现对学生信息的简单管理。、用C语言编写一完整源程序,从键盘输入一个字符串Str1,在新的一行输入一个待检测字符Char_Che等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10209879.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存