对这个程序做一下总的分析说明:这是一个饭店的自助服务系统程序,功能就是自助预定房间和退订房间。无论是预定还是退订,都需要先输入身份z来登陆系统,房间有4种:单人间、双人间、标准间、总统套房,选择需要的房间类型以及预定或退定的天数,就会计算花费。这个程序只是提供了这样一个查询的功能,至于其他比如收费或者退钱就不关这个程序的事了~~(把程序分块后再看就比较简单啦~~lz看下)
#include<stdioh>
#include<windowsh>
void search();
main() //这个是主程序
{
int f; //定义整型变量f
printf(" \n"); //输出(即屏幕显示,作提示用)“”并换行
Sleep(1000);
printf(" 欢迎来到新疆大饭店 \n" ); //输出“ 欢迎来到新疆大饭店 ”并换行
Sleep(1000);
printf(" \n");
Sleep(1000);
printf("1进入 2退出\n"); //输出1进入 2退出并换行
scanf("%d",&f); //输入一个整数赋值给f
if(f==1)
search(); //如果输入的f为1,运行程序void search(),也就是进入了系统,要预定或者退订房间
else
printf("输入错误"); //否则,输出“输入错误”
}
void search() //以下都是void search()程序内容
{
int d[15],g[3],a,b,c,x,y,h,l; //定义整型变量d[15],g[3],a,b,c,x,y,h,l(前两个为数组)
printf("请选择您需要的号码:\n1预定房间\n2退定房间\n"); //输出“请选择您需要的号码:”并换行,再输出“1预定房间”并换行,再输出“2退定房间”并换行
scanf("%d",&a); //输入一个整数并赋值给a
if(a>=3 || a<1)
printf("您输入有误请您重试!\n"); //如果a>=3或者a<1,输出“您输入有误请您重试!”并换行
else switch(a)
{
case 1: //如果输入的a=1(即选择了1预定房间),执行下列语句
{
printf("请您输入您的身份z号码\n"); //输出“请您输入您的身份z号码”并换行
scanf("%d",&d[15]); //输入15位整数赋值给d[15]
printf("您已登陆成功^-^\n"); //输出“您已登陆成功^-^”并换行
printf("请您选择退定种类:\n"); //输出“请您选择退定种类:”并换行
printf("1单人间/夜150元\n2双人间/夜200元\n3标准间/夜300元\n4总统套房/夜600元\n"); //输出“1单人间/夜150元”并换行,输出“2双人间/夜200元”并换行,输出“标准间/夜300元”并换行,输出“4总统套房/夜600元”并换行
scanf("%d",&b); //输入一个整数并赋值给b
switch(b)
{
case 1:printf("请输入预定天数\n"); //如果b=1(即选择了1单人间/夜150元),执行下列语句
scanf("%d",&x); //输入一个整数并赋值给x(这里x表示天数)
printf("请预交款为%d元\n",x150); //输出“请预交款为x150元”(输出时,x150是一个具体的数字)
printf("1确定 2返回"); //输出“1确定 2返回”
scanf("%d",&h); //输入一个整数并赋值给h
printf("您已预定成功 房间号码为202\n");break; //输出“您已预定成功 房间号码为202”并换行;跳出switch(b)语句,即选定好了房间类型和天数
case 2:printf("请输入预定天数\n"); //下面三种b=2、3、4同b=1时
scanf("%d",&x);
printf("请预交款为%d元\n",x200);
printf("1确定 2返回");
scanf("%d",&h);
printf("您已预定成功 房间号码为305\n");break;
case 3:printf("请输入预定天数\n");
scanf("%d",&x);
printf("请预交款为%d元\n",x300);
printf("1确定 2返回");
scanf("%d",&h);
printf("您已预定成功 房间号码为208\n");break;
case 4:printf("请输入预定天数\n");
scanf("%d",&x);
printf("请预交款为%d元\n",x600);
printf("1确定 2返回");
scanf("%d",&h);
printf("您已预定成功 房间号码为306\n");break;
default :printf("您的输入有错请您重试"); //如果b不是1、2、3、4的任何一个,输出“您的输入有错请您重试”
}
}break; //跳出switch(a)语句,即退出预定房间的程序
case 2: //如果输入的a=2(即选择了1退订房间),执行下列语句 (具体意义参见case 1的部分)
{
printf("请您输入您的身份z号码\n");
scanf("%d",&d[15]);
printf("您已登陆成功^-^\n");
printf("请您选择退订服务种类:\n");
printf("1单人间/夜150元\n2双人间/夜200元\n3标准间/夜300元\n4总统套房/夜600元\n");
scanf("%d",&c);
switch(c)
{
case 1:printf("请您输入要退定的房间号码\n");
scanf("%d",&g[3]);
printf("请您输入要退订的天数\n");
scanf("%d",&y);
printf("我们将退您%d元\n",y150);
printf("您退定成功: 谢谢您的光临 !\n");break;
case 2:printf("请您输入要退定的房间号码\n");
scanf("%d",&g[3]);
printf("请您输入要退订的天数\n");
scanf("%d",&y);
printf("我们将退您%d元\n",y200);
printf("您退定成功谢谢您的光临 !");break;
case 3:printf("请您输入要退定的房间号码\n");
scanf("%d",&g[3]);
printf("请您输入要退订的天数\n");
scanf("%d",&y);
printf("我们将退您%d元\n",y300);
printf("您退定成功:谢谢您的光临 !\n");break;
case 4:printf("请您输入要退定的房间号码\n");
scanf("%d",&g[3]);
printf("请您输入要退订的天数\n");
scanf("%d",&y);
printf("我们将退您%d元\n",y600);
printf("您退定成功:谢谢您的光临 !\n");break;
default:printf("您的输入有错请您重试");
}
}break; //跳出switch(a)语句,即退出预定退订房间的程序
}
{
int n; //定义整型变量n
printf("谢谢光顾\n是否要再预定 1是2否"); //输出“谢谢光顾”并换行,输出“是否要再预定 1是2否”
scanf("%d",&n); //输入一个整数并赋值给n
if(n==1)
search(); //如果n=1,运行程序void search()
else
printf("再见"); //如果n不是1,输出“再见”
} //这部分是最后给顾客做确认用的~保证顾客不再需要其他服务了
}
uint8_t ptr uint8_t len 这是传入参数。 len可能是长度,ptr可能指向的是一个数组。
^= 按位异或后赋值。
crc ^= ptr++; //首先将数组第一位异或后复制给Crc。之后ptr再向前一步,简单理解就是指向数组的下一位。
for(i = 0;i < 8;i++) { if(crc & 0x01) crc = (crc >> 1) ^ 0x8C; else crc >>= 1; }
//将取到数组第一位值,与0x01上。如果非零,crc就需要右移一位,再与0x8C异或。否则右移1位。每位数组值要做8次。
while(len--) //表示要判断数组内len个值。或则说是取得数组内len长度的元素个数。
return crc; //len个数组值都作完以后,将Crc返回。
我想你需要了解一下 0x01的意义,0x8C的意义。
0x01 = 0000 0001
0x8c = 1000 1100
没看到啊,已经有人答完了。哎,早知道就不写这么多字了。
以上就是关于分析该程序的每一个步骤 谢谢全部的内容,包括:分析该程序的每一个步骤 谢谢、单片机C语言程序分析、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)