當前位置:首頁 » 編程語言 » c語言插件實現邏輯
擴展閱讀
名滿天下wifi6 2022-10-04 08:05:33
重裝系統需要什麼配置 2022-10-04 08:05:31
ssni127ftp 2022-10-04 08:04:37

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語言邏輯運算||和&&的真值表: