方法如下:
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等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)