当前位置:首页 » 编程语言 » c语言插件实现逻辑
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言插件实现逻辑

发布时间: 2022-08-14 17:18:36

‘壹’ 怎样用C实现逻辑右移,和算术左移

c语言中移位操作符实现的是逻辑左移和算术右移,但是算术左移和逻辑左移的效果相同,算术右移和逻辑右移的效果不同,要实现逻辑右移可将操作数强制类型转化为无符号数

‘贰’ 如何用C语言编一个小程序,直接控制计算机的9针串口线,一直输出逻辑0。

一般来讲,你说的这种功能是这样实现的:用VB或者VC在计算机上面编写一个应用程序操作界面,一般称为上位机,通过COM串口和下位机(一般是一个单片机系统)物理连接,通过上位机发出指令,也就是通过计算机COM串口发出一些数据。通常是要约定好波特率、数据位、校验等,下位机根据上位机的指令做出执行操作,I/O口输出一个电平去控制继电器,再去控制强电。
如果你只保留计算机,用计算机的COM串口直接作为输出驱动,是有问题的。分析如下,因为计算机的串口主要用途是通讯,即传送一些RS232电平的信号,比如传送数字1、2、3。。。或者是字母A、B、C。。。。。等,即使是传送一位也会同时有0逻辑和1逻辑出现,即不能一直让串口线的TX线一直输出逻辑0的,所以无法实现你说的功能。

‘叁’ 在C语言中如何用程序输出逻辑表达式的值

C语言编译系统在表示逻辑运算结果时,以数值1代表“真”,以0代表“假”。所以说逻辑表达式的值是int类型的,可以通过输出时格式%d控制输出,例如printf(“%d",1>2).

‘肆’ c语言怎样编写逻辑算术表达式

首先介绍一下,在计算机的逻辑预算中,0表示false,1表示true.
!是"不"的意思, !(true)=false
>是判断大于, a>b的结果是false,a<b的结果是true;
&&是做与运算, true&&true=true,false&&false=false,true&&false=false;
当数字做&&运算时,需要将数字转成二进制, 比如在做3&&4时,可以这样:
011(3的二进制)
&& 100(4的二进制)
------------------
000
000就是10进制的0,所以3&&4=0
||是或运算,true || true=true,true||false=true,false||false=false.
数字运算同上面方法.

对于逻辑运算的优先级如下:
括号 最高级
! 第二
&& 第三
|| 第四

‘伍’ 用c语言编写ATM的程序,实现开户、存款、取款、查询余额、转账的业务逻辑。

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>

void regist();
void login();
void quite();
void inputpassword(char mima[]);
void service();

struct bank
{
char name[20];
char password[7];
int account;
double money;
}kehu;

int find;
int a[10];
struct bank one;
FILE *fp;

void main()
{
int i;
int t=1;
for(i=0;i<100;i++)
{
printf("\t\t\t\t\t\t欢迎使用青软ATM系统\n");
printf("\t\t\t\t\t\t正在进入主界面,请稍等");
int j;
for(j=1;j<t;j++)
{
printf(".");
}
t++;
if(t==10)
{
t=1;
}
printf("\n\t\t\t\t\t\t%d%%",i);
system("cls");
}

while(1)
{

printf("\t\t\t\t\t\t服务类型: \n");
printf("\t\t\t\t\t\t[a]: 用户注册\n");
printf("\t\t\t\t\t\t[b]: 用户登录\n");
printf("\t\t\t\t\t\t[c]: 退出系统\n");
printf("\t\t\t\t\t\t请选择服务: ");

fflush(stdin);
char xz;
scanf("%c",&xz);
if(xz=='a'||xz=='A')
{
regist();
} else if (xz=='b'||xz=='B')
{
login();
} else if(xz=='c'||xz=='C')
{
quite();
} else
{
printf("输入有误,请重新输入");
}
getch();
system("cls");

}

}

void inputpassword(char mima[])
{
int i=0;
char ch;
while(1)
{
ch=getch();
if(ch!='\r')
{
if(ch!='\b'){
mima[i]=ch;
i++;
printf("*");
}else{
if(i>0){
i--;
printf("\b \b");
}
}
}else{
break;
}
}
mima[i]='\0';
printf("\n");

}

void regist()
{
fp=fopen("atm.txt","ab+");
if(fp==NULL)
{
printf("\n\t\t\t文件打开失败!");
return;
}

system("cls");
printf("\t\t\t现在执行的是注册函数的使用\n");
printf("\t\t请输入用户名: ");
fflush(stdin);
gets(kehu.name);
char password1[7];
while(1)
{
while(1)
{
printf("\n\n\t\t请输入密码:");
fflush(stdin);
inputpassword(kehu.password);
int n=strlen(kehu.password);
if(n==6)
{
break;
}else
{
printf("\n\t\t密码必须为6位!");
}

}
printf("\n\t\t请输入正确密码!: ");
fflush(stdin);
inputpassword(password1);
if(strcmp(kehu.password,password1)==0)
{
break;
}else{
printf("\n\n\t\t两次密码必须相同!");
}
}

rewind(fp);
struct bank k;
if(fread(&k,sizeof(struct bank),1,fp)==1)
{
fseek(fp,-sizeof(k),2);
fread(&k,sizeof(k),1,fp);
kehu.account=k.account+1;

}else{
kehu.account=20170001;
}

kehu.money=0;
fseek(fp,0,2);
fwrite(&kehu,sizeof(struct bank),1,fp);

fclose(fp);
printf("\n\n\t\t开户成功! ");
printf("\n\t\t您的账号为%d!",kehu.account);
printf("\n\t\t现在请您重新登录!");
}

void searchmoney()
{
system("cls");
printf("您现在使用的是查询余额功能: \n");
printf("\n\n\t\t您的余额是%0.2lf",one.money);

}

void savemoney()
{
system("cls");
double inmoney;
printf("请您选择您要存款的金额 \n");
scanf("%lf",&inmoney);

int q;
int r=1;
for(q=0;q<100;q++)
{
int w;
for(w=1;w<r;w++)
{
printf(".");
}
r++;
if(r==10)
{
r=1;
}
printf("\n\t\t\t\t\t\t正在存款%d%%",q);
system("cls");
}

one.money=one.money+inmoney;
fseek(fp,-sizeof(one),1);
fwrite(&one,sizeof(one),1,fp);
printf("\n\n\t\t\t\t\t\t您已存款成功!");
}

void withdrawalmoney()
{

system("cls");
double outputsomemoney;
printf("请您选择您要取款的金额 \n");
scanf("%lf",&outputsomemoney);
if(one.money<outputsomemoney){
printf("您的余额已不足,请您注意!");
}else {

int q;
int r=1;
for(q=0;q<100;q++)
{
int w;
for(w=1;w<r;w++)
{
printf(".");
}
r++;
if(r==10)
{
r=1;
}
printf("\n\t\t\t\t\t\t正在取款%d%%",q);
system("cls");
}
one.money=one.money-outputsomemoney;

fseek(fp,-sizeof(one),1);
fwrite(&one,sizeof(one),1,fp);

printf("\n\n\t\t\t\t\t\t您已取款成功!请点清钞票!");
printf("\n\n\t\t\t\t\t\t您现在的余额为%lf",one.money);
}
}

void transfermoney()
{
system("cls");
int ifang;
int qian;
fflush(stdin);
printf("\n\n\n\t\t您现在使用的是转账功能");
printf("\n\t\t\t请输入您要转账的账户:");
scanf("%d",&ifang);

int n=ftell(fp);
rewind(fp);

int flag=0;
struct bank temp;

while(fread(&temp,sizeof(temp),1,fp)==1)
{
if(temp.account==ifang)
{
flag=1;
break;
}
}

if(flag==1)
{
printf("请输入转账金额:");
scanf("%d",&qian);
if(one.money>=qian)
{
int q;
int r=1;
for(q=0;q<100;q++)
{
int w;
for(w=1;w<r;w++)
{
printf(".");
}
r++;
if(r==10)
{
r=1;
}
printf("\n\t\t\t\t\t\t正在转账,请稍后!%d%%",q);
system("cls");
}
temp.money=temp.money+qian;

fseek(fp,-sizeof(temp),1);
fwrite(&temp,sizeof(temp),1,fp);
one.money=one.money-qian;
fseek(fp,n-sizeof(one),0);
fwrite(&one,sizeof(one),1,fp);

printf("\n\t\t\t\t转账成功!");
}else{
printf("\n\t\t\t\t您的余额已不足!");
}
}

}

void xiugai(){
system("cls");
printf("\n\n\t\t 现在进行的是修改密码功能\n");
char oldpassword[7];
char newpassword[7];
char newpassword1[7];
int i;
for(i=0;i<3;i++){
printf("\n\t\t\t 请输入旧密码:\n");
inputpassword(oldpassword);
if(strcmp(oldpassword,one.password)==0){
printf("\n\t\t\t 输入成功!\n");
break;
}else{
printf("\n\t\t\t 密码输入有误,请重新输入!\n");
}
}
if(i<3){
while(1){
printf("\n\t\t\t 请输入您的新密码:\n");
inputpassword(newpassword);
printf("\n\t\t\t 请输入您的确认密码:\n ");
inputpassword(newpassword1);
if(strcmp(newpassword,newpassword1)==0){
strcpy(one.password,newpassword);

fseek(fp,-sizeof(one),1);
fwrite(&one,sizeof(one),1,fp);

printf("\n\t\t\t 密码修改成功!");
break;
}else{
printf("\n\t\t\t 两次密码输入不一致!");
}
}
}else{
printf("\n\t\t\t 密码输入错误!");
}
}

int zhuxiaozhanghao()
{
system("cls");
int zhuxiaoxitong;
char sf;
printf("你要注销的账号是%d",one.account);
printf("你是否要对此账号进行注销?\n\n\t\t请您选择:注销(Y)or不注销(N):");
fflush(stdin);
scanf("%c",&sf);
if(sf=='y'||sf=='Y')
{
printf("正在为您注销!\n",one.account);
zhuxiaoxitong=1;
}else{
printf("不注销系统!\n",one.account);
}
return zhuxiaoxitong;

}

void service()
{

while(1){
system("cls");

printf("\n\n\n\t\t\t\t\t\t现在是服务系统,本系统有以下服务");
printf("\n\t\t\t\t\t\t[a] 查询余额\n");
printf("\n\t\t\t\t\t\t[b] 存款服务\n");
printf("\n\t\t\t\t\t\t[c] 转账服务\n");
printf("\n\t\t\t\t\t\t[d] 取款服务\n");
printf("\n\t\t\t\t\t\t[e] 修改密码\n");
printf("\n\t\t\t\t\t\t[f] 注销 \n");
printf("\n\t\t\t\t\t\t[g] 退出系统\n");
char e;
printf("\n\t\t\t\t\t\t您要选择的服务是:");
fflush(stdin);
scanf("%c",&e);

switch(e)
{ case'A':
case'a': searchmoney() ;break;
case'B':
case'b': savemoney() ;break;
case'C':
case'c': transfermoney() ;break;
case'D':
case'd': withdrawalmoney() ;break;
case'E':
case'e': xiugai() ;break;
case'F':
case'f': {int zhuxiaoxitong=zhuxiaozhanghao();{if(zhuxiaoxitong==1) return;}break;}
case'G':
case'g': quite();break;
}
printf("\n\n\n\t\t\t\t按任意键继续......\n");
getch();
}
}

void login()
{
fp=fopen("atm.txt","rb+");
if(fp==NULL)
{
printf("\n\n\n\t\t\t\t文件打开失败!");
return;
}

system("cls");
printf("\n\t\t\t\t\t\t现在执行的是登录函数的使用\n");
int zhanghao;

printf("\n\t\t\t\t\t\t请输入账号:");
scanf("%d",&zhanghao);
int flag=0;

while(fread(&one,sizeof(one),1,fp)==1)
{
if(zhanghao==one.account){
flag=1;
break;
}
}
char password2[7];

if(flag==1){
int h;
for(h=0;h<3;h++){
printf("\n\t\t\t\t\t\t请输入密码:");
fflush(stdin);
inputpassword(password2);
if(strcmp(password2,one.password)==0)
{
printf("\n\t\t\t\t\t\t登陆成功!");
service();
break;
}else{
printf("密码不正确!");
}
}
if(h==3){
printf("\n\t\t\t您的密码三次输入有误,返回");
}
}else{
printf("无此账号!");
}
fclose(fp);
}

void quite()
{

system("cls");
printf("\t\t\t现在执行的是退出函数的使用\n");
exit(0);
}

‘陆’ 关于C语言 逻辑表达式 逻辑运算

#include<stdio.h> int main(void) { int a,b,c,d,e; for(a=1;a<=5;a++) for(b=1;b<=5;b++) for(c=1;c<=5;c++) for(d=1;d<=5;d++) for(e=1;e<=5;e++) if(a^b&&a^c&&a^d&&a^e&&b^c&&b^d&&b^e&&c^d&&c^e&&d^e&&(b==2^a==3)&&(b==2^e==4)&&(c==1^d==2)&&(c==5^d==3)&&(e==4^a==1)) printf("A:%d B:%d: C:%d D:%d E:%d\n",a,b,c,d,e); return 0; }

‘柒’ Java 和 Python 有哪些区别

Java PK Python

Java是一种面向对象语言,具有许多程序员熟悉的类似于C / C ++的语法。其吸引力和价值所在是其具有的可移植性和相对效率。Java作为一种编译语言,执行模式与解释性语言(比如Python和Perl)相比更加以机器为中心。Java不仅仅是一种语言和库:它也是一个虚拟机,一个生态系统。Java虚拟机(JVM)是运行Java代码的理想化和便携式平台。程序员不必担心硬件细节,并且不必将代码移植到新平台,Java承诺“一次写入,到处编译(WORA)”。同时,JVM语言有很多,比如Groovy、Clojure、Scala、Python或者Jython。

Python起源于一种脚本语言,它的语法体现了一种可读性的理念,具有简单而规则的界限,鼓励简洁和一致的代码布局。Python的参考实现(以C编写,被称为CPython)在许多平台上可用,并且是众多实现中最常用的。Python的动态类型有助于代码简化和组合,是许多平台的解释性语言,成为众多程序员编程首选的便携式选项。Python是围绕可扩展对象模型构建的通用语言。其面向对象的核心并不意味着对象定向是开发人员在用Python编程时最常用的方式。它支持程序化编程,模块化编程和部分函数式编程。
Java PK Python之一:速度
在网络I / O成本或数据库访问占主导地位的情况下,语言的具体效率不如技术选择和设计方面的整体效率重要。Java和Python都不适合高性能计算,但在性能上,Java还是略胜一筹。虽然一些Python实现(如PyPy)可以针对性能进行微调,但原始的便携式性能Python不占优势。
Java的效率优势体现在虚拟机执行。程序执行时,JVM可以将字节码转换为本地机器码。这种即时(JIT)编译让Java的性能略胜Python。Java从其第一个公开版本起就支持并发,而Python则是按序执行。在当前多核处理的趋势下,Java代码更易实现。
Java PK Python之二:实用敏捷性
漫长的发展中,Java和Python都受益匪浅。Java通常被认为与敏捷开发及其社区有更密切的联系。Python在敏捷领域一直存在,并且受到诸多原因的影响而更加普及,包括DevOps运动的兴起。
Java比Python具备更一致的重构支持,一方面,它的静态类型使自动化重构更可预测和可靠,另一方面是Java开发中IDE(例如IntelliJ,Eclipse和NetBeans)的普及。Python的动态类型在代码中鼓励使用不同类型的敏捷性,其重点在于简洁和流动。然而,Pythonic文化倾向于多种编辑器,而不是基于IDE,这意味着对强自动重构的支持较低。
JUnit的早期知名度及其与测试驱动开发(TDD)的关联意味着,在所有语言中,Java可能是唯一一个单元测试受到程序员一致欢迎的语言。在IDE中自动包含JUnit已经在很大程度上对此有所帮助了。
Python的脚本起源和在其标准库中包含测试功能意味着Python对现代开发中自动化测试相当重视,尽管它更有可能是集成而不是单元测试。在Java世界中,传统Java代码库可以通过采用另一种JVM语言来加以改善,例如使用Groovy或Clojure进行自动化测试,或者完全跨越Java Universe,例如使用Python来处理系统方面操作 。
Java PK Python之三:架构
围绕Python Web框架构思的软件体系架构与Java的不会相差甚远。Java和Python都有各自的开源社区,并有很多程序员一直在源源不断的贡献源代码,这些代码已经解决了常见或者不常见的问题,事实上,这两种语言都因开源社区而受益匪浅。
Java PK Python之四:历史遗留问题
历史遗留问题在其技术上具有惯性。当企业选择了一种编程语言,就很难再次更换。例如,更多的企业项目后端可能会使用Java代码来扩展其功能,也许可以迁移到更新版本的语言,或者通过其他JVM语言(如Scala和Groovy)添加新功能。Java在企业中的历史比Python更久,这也是招聘Java程序员的企业比招Python更多的原因。
Java PK Python之五:市场普及度
Java和Python都是TIOBE编程语言排行榜上的前十名,并且是稳稳地占据前十名。 但Java一直比Python更受欢迎,但是Python的受欢迎程度已经超过了两种编程语言:Perl和Ruby。
此外,两种语言在教育中都具有强大的立足点,但Java比Python更常用于大学课程中。
结论
Java和Python都是富有活力的编程语言,这两种语言与开放性相关联,所以公司,团队和程序员在做出决定时最好保持开放的态度。

‘捌’ C语言这个函数是怎么实现逻辑右移的

没有问题,1与1 = 1,1与0 = 0,所以(~(1>>n))&(a>>n);,实际上就是a>>n,(~(1>>n))不起作用,只是这种书写格式比较醒目,直接用z=a>>n;也是可以的。

‘玖’ C语言中逻辑运算符的规则是什么

1、逻辑运算符运算规则:

||或:比如两个条件中,只要有一个成立,则结果就成立;

&&与:比如两个条件中,两个同时成立,则结果成立,否则不成立;

!非,就是取反之意,如果是真,结果是假,如果是假,结果是真。

2、逻辑运算符是根据表达式的值来返回真值或是假值。其实在C语言中没有所谓的真值和假值,只是认为非0为真值,0为假值。下为C语言逻辑运算||和&&的真值表: