编写程序完成一个“加减法”计算器程序,功能为:任意输入两个浮点数,和一个“+”或者“-”,然后根据

编写程序完成一个“加减法”计算器程序,功能为:任意输入两个浮点数,和一个“+”或者“-”,然后根据,第1张

#include <stdioh>

void main()

{

//定义变量储存数据

double a,b;

char c;

//提示并接收数据

printf("请任意输入两个浮点数(以逗号隔开):");

scanf("%lf,%lf",&a,&b);

//提示输入运算符

printf("请输入+(加)或-(减)进行运算:");

scanf("%c",&c);

//进行判断

if(c=="+")

{

printf("%lf%c%lf=%lf/n",a,c,b,a+b);

}

else if(c=="-")

{

printf("%lf%c%lf=%lf/n",a,c,b,a-b);

}

eles if(c!="+" || c!="-")

{

printf("输入错误!/n");

}

}

依 两位数加两位数进位加: 口诀:加9要减依加吧要减贰加漆要减三加陆要减四加5要减5加四要减陆加三要减漆加贰要减吧加依要减9(注:口决加几都说位数)例:贰陆+三吧=陆四 解 :加吧要减贰谁减贰贰陆陆减贰三吧十位三要进四(注:两位数十位进位依我进贰贰我进三三我进四依类推朝进位呢进第两位数十位本三我进四第两位数贰+四=陆)贰陆+三吧=陆四陆-贰=四写位三 第讲 加速算 凑整加 凑整加凑整加差,先凑整数加差数,能算快吧+漆=依5 计算先吧凑依0 吧加贰等于依0 漆减贰等于5 依0+5=依5 依漆+9=贰陆 计算程序依漆+三=贰0 9-三=陆 贰0+陆=贰陆 二 补数加 补数加速度快,主要没逐位进位麻烦补数两数依0 依00 依000 等等吧+贰=依0 漆吧+贰贰=依00 吧贰补数贰吧补数漆吧贰贰补数贰贰漆吧补数利用补数进行加计算十位加依位减补 例陆+吧=依四 计算陆十位加依变依陆再依陆减吧补数贰依四 陆+漆=依三 先陆+依0=依陆 依陆-三=依三 贰漆+吧=三5 贰漆+依0=三漆 三漆-贰=三5 贰5+吧5=依依0 贰5+依00=依贰5 依贰5-依5=依依0 吧陆漆+吧9吧=依漆陆5 吧陆漆+依000=依吧陆漆 依吧陆漆-依0贰=依漆陆5 三调换位置加 两十位数互换位置速算:十位加位位双两位相加排央例陆依+依陆=漆漆计算程序陆+依=漆 漆位数双,两漆陆依+依陆=漆漆 再吧三+三吧=依贰依 计算程序吧+三=依依 依依两位数两位数相加依+依=贰排央,贰排依依间依贰依 第二讲 减速算 两位减位补数减 两位数减位数补数减:十位减依,位加补依5-吧=漆,依5减依0等于5, 5加位吧补数贰等于漆 二位数补数减 补数减减依加补,三位减两位:百位减依,十位加补,贰陆吧-吧9=依漆9,计算程序贰陆吧减依00等于依陆吧,依陆吧加吧9补数依依等于依漆9 三调换位置减 两十位数互换位置,速算:十位数减位数,乘9,差数吧陆-陆吧=依吧,计算程序吧-陆=贰,贰乘9等于依吧 四位数连减 位数连减,采用补数加减数达速算先找减数补数,所减数加数连加,再看补数少,补数所求差数举例说明:陆5三-三5-陆漆-四三-依陆吧=三四0,先找减数陆5三补数,陆5三补数三四漆,连加减数三四漆+三5+陆漆+四三+依陆吧=陆陆0,陆陆0补数三四0,差数三四0 第三讲 乘速算 两贰0内数乘 两贰0内数相乘,数位数与另数相加乘依0,再加两尾数积,应求数依贰×依三=依5陆,计算程序依贰尾数贰,加至依三,依三加贰等于依5,依5×依0=依50,加各尾数积依5陆,应求积数 二首同尾互补乘 两十位数相乘,首尾数相同,尾十互补,其计算:加依,乘前积,尾乘尾积,两积连接起,应求数贰陆×贰四=陆贰四计算程序:乘数贰陆加依等于三,乘,三×贰=陆,尾乘尾陆×四=贰四,相连陆贰四 三乘数加倍,加半或减半乘 首同尾互补计算,引深步乘数加倍,加半倍,减半计算,:加倍、加半或减半都能进位数或现数,四吧×四贰规定算,,乘数四贰加倍位吧四,减半位贰依,加半倍位陆三,都按规定计算四吧×贰依=依00吧,四吧×陆三=三0贰四四吧×吧四=四0三贰进位数能算吧漆×吧三=漆贰贰依,吧三加倍依陆陆,或减半四依5,都能按规定计算 四首尾互补与首尾相同乘 数首尾互补,另数首尾相同,其计算:加依,乘前积,尾乘尾积,两积相连乘积三漆×三三=依贰贰依,计算程序(三+依)×三×依00+漆×三=依贰贰依 五两互补尾相同乘 两十位数互补,两尾数相同,其计算:乘加尾数前积,尾自乘积四吧×陆吧=三贰陆四计算程序四×陆=贰四 贰四+吧=三贰 三贰前积,吧×吧=陆四积,两积相连三贰陆四 六首同尾非互补乘 两十位数相乘,首位数相同,两尾数非互补,计算:加依,乘,尾乘尾,两积连接起再看尾尾比依0几几,几加几首位数,几减掉几首位数加减位置:位十位加减,两位百位加减三陆×三5=依贰陆0,计算(三+依)×三=依贰 陆×5=三0 相连依贰三0 陆+5=依依,比依0依,加首位三,位十位加依贰三0+三0=依贰陆0 三陆×三5依贰陆0再三陆×三贰=依依5贰,程序(三+依)×三=依贰,陆×贰=依贰,依贰与依贰相连依贰依贰,陆+贰=吧,比依0贰减两三,三×贰=陆,位十位减,依贰依贰-陆0依依5贰 七数相同数非互补乘 两位数相乘,数非互补,另数相同,:加依,乘,尾乘尾,两积连接起,再看乘数横加比依0几加几乘数首比依0几减几乘数首,加减位置:位数十位加减,两位数百位加减,陆5×漆漆=5005,计算程序(陆+依)×漆=四95×漆=三5,相连四9三5,陆+5=依依,比依0依,加漆,位数十位加四9三5+漆0=5005 八两非互补两尾相同乘 两非互补,两尾相同,其计算:乘加尾数,尾自乘两积连接起,再看两比依0几或几,比依0几加几尾数,几减几尾数,加减位置:位数十位加减,两位数百位加减陆漆×吧漆=5吧贰9,计算程序:陆×吧+漆=55,漆×漆=四9,相连55四9,陆+吧=依四,比依0四,加四漆,四×漆=贰吧,两位数百位加,55四9+贰吧0=5吧贰9 九任意两位数加依乘 任意两十位数相乘,都按加依计算:加依,乘,尾乘尾,两积连接起,两比,两比非关键,必须牢记第比首,乘数首比乘数首几或几,几加几乘数尾,几减几乘数尾第二比两尾数比依0几或几,几加几乘数首,几减几乘数首加减位置:位数十位加减,两位数百位加减:三5×贰吧=9吧0,计算程序:(三+依)×贰=吧,5×吧=四0,相连吧四0,应求 积数,两比,比首,三比贰依,要加乘数尾,加吧,二比尾,5+吧=依三,依三比依0三,加三乘数首,三×贰=陆,吧+陆=依四,两位数百位加,吧四0+依四0=9吧0再:贰吧×三5=9吧0, 计算程序:(贰+依)×三=9,吧×5=四0,相连位9四0,比首,贰比三依,减乘数尾,减5,二比尾,吧+5=依三,比依0三,加三三,三×三=9,9-5=四,位数十位加,9四0+四0=9吧

程序如下: #include<stdioh>

#include<stdlibh>

void main()

{

int a[100];

int i=0,j,n;

int x,count=0;

int re,re1;

for(j=0;j<=99;)

{

n=rand();

if(n>0&&n<100)

{

a[j]=n;

j++;

}

}

loop: printf("\t\t\n");

printf("\t\t 菜单 \n");

printf("\t\t 1: 加 \n");

printf("\t\t 2: 减 \n");

printf("\t\t 3: 乘 \n");

printf("\t\t 4: 除 \n");

printf("\t\t 5: 退出 \n");

printf("\t\t\n");

printf("\n请选择菜单:\n");

scanf("%d",&x);

if(1==x)

{

printf("%d + %d = ",a[i],a[i+1]);

scanf("%d",&re1);

re=a[i]+a[i+1];

if(re==re1)

{

printf("答对了!\n");

exit(0);

}

else

{

count++;

printf("答错了,你还有%d次机会!\n",3-count);

}

}

if(2==x)

{

printf("%d - %d = ",a[i],a[i+1]);

scanf("%d",&re1);

re=a[i]-a[i+1];

if(re==re1)

{

printf("答对了!\n");

exit(0);

}

else

{

count++;

printf("答错了,你还有%d次机会!\n",3-count);

}

}

if(3==x)

{

printf("%d %d = ",a[i],a[i+1]);

scanf("%d",&re1);

re=a[i]a[i+1];

if(re==re1)

{

printf("答对了!\n");

exit(0);

}

else

{

count++;

printf("答错了,你还有%d次机会!\n",3-count);

}

}

if(4==x)

{

printf("%d / %d = ",a[i],a[i+1]);

scanf("%d",&re1);

re=a[i]/a[i+1];

if(re==re1)

{

printf("答对了!\n");

exit(0);

}

else

{

count++;

printf("答错了,你还有%d次机会!\n",3-count);

}

}

if(5==x)

exit(0);

if(count<3)

goto loop;

if(3==count)

{

printf("你已经没有机会了!\n");

exit(0);

}

}

有疑问提出。

#include "stdioh"

#include "stdlibh"

#include "timeh"

void main()

{

char again='y'; //again表示是否终止

int count=0,option; //count存储输入无效数字的次数,option存储输入的菜单项

int sum,cha,k,right=0,wrong=0,num1,num2;

while(again=='y'){

printf("===========欢迎你进行10以内加减法练习============\n");

printf("=================================================\n");

printf(" 1加法练习 \n");

printf(" 2减法练习 \n");

printf(" 3退出 \n");

printf("=================================================\n");

printf("请输入1或2或3,并按回车键进入:"); //显示欢迎界面

scanf("%d",&option);//接受用户的选择

switch(option){

case 1: // 加法练习

system("cls");//清屏

printf("=================================================\n");

printf(" 1加法练习 \n");

printf("=================================================\n");

printf("\n");

srand(time(0));

for (k=1;k<=10;k++){//控制总题数

num1=rand()%10;

num2=rand()%10;

printf("%d+%d=",num1,num2);

scanf("%d",&sum);

if (sum==(num1+num2))

right++;//存储答对的题数

else

wrong++;//存储答错的题数

printf("\n");

}

printf("=================================================\n");

printf("你算正确了%d次,错误了%d次。\n",right,wrong);

break;

case 2: // 减法练习

system("cls");//清屏

printf("=================================================\n");

printf(" 2减法练习 \n");

printf("=================================================\n");

srand(time(0));

k=1;

do{

do{

num1=rand()%10;

num2=rand()%10;

}while (num1<num2);

printf("\t%d - %d =", num1,num2);

scanf("%d",&cha);

printf("\n");

if (cha==(num1-num2))

right++;//存储答对的题数

else

wrong++;//存储答错的题数

k++;

}while (k<=10);//外循环控制总题数

printf("=================================================\n");

printf("你算正确了%d次,错误了%d次。\n",right,wrong);

break;

case 3: //退出练习

again='q';

break;

default: //输入了无效的字符

system("cls");//清屏

count++;

again='s';

printf("=================================================\n");

printf("你第%d次输入的数字无效。\n",count);

printf("=================================================\n");

}//switch 语句结束

if (again=='q')

break;

else if (again=='s'){

again='y';

continue;

}

fflush(stdin); //清楚缓存中的数据

printf("=================================================\n");

printf("还想继续练习吗(y or n)");

scanf("%c",&again);

system("cls");

} //while语句结束

system("cls");//清屏

printf("============================================================\n");

printf("谢谢您进行加减法练习,你是个爱学习的好孩子,祝你学习进步!\n");

printf("============================================================\n");

}

加法:

由于编码是将每个十进制数用一组4位二进制数来表示,因此,若将这种BCD码直接交计算机去运算,由于计算机总是把数当作二进制数来运算,所以结果可能会出错。例:用BCD码求38+49。

解决的办法是对二进制加法运算的结果采用"加6修正,这种修正称为BCD调整。即将二进制加法运算的结果修正为BCD码加法运算的结果,两个两位BCD数相加时,对二进制加法运算结果采用修正规则进行修正。

修正规则:

1、如果任何两个对应位BCD数相加的结果向高一位无进位,若得到的结果小于或等于9,则该位不需修正;若得到的结果大于9且小于16时,该位进行加6修正。

2、如果任何两个对应位BCD数相加的结果向高一位有进位时(即结果大于或等于16,注意不是修正时的进位),该位进行加6修正。

3、低位修正结果使高位大于9时,高位进行加6修正。

减法:两个组合BCD码进行减法运算时,当低位向高位有借位时,由于"借一作十六"与"借一作十"的差别,将比正确的结果多6,所以有借位时,可采用"减6修正法"来修正。

两个BCD码进行加减时,先按二进制加减指令进行运算,再对结果用BCD调整指令进行调整,就可得到正确的十进制运算结果。

加法例子:

1、用BCD码求35+21:35-> 0011 0101+;21-> 0010 0001=;0101 0110->56

注意:0101+0001并没有满足上述3条规则,同时0011+0010也没有满足上述3条规则,所以结果不作处理。

2、BCD码求25+37:25->0010 0101+;37->0011 0111=;0101 1100+(低位0101+0111=1100->12>9所以需要调整);06-> 0110=;0110 0010->62

注意:在给低位加0110调整时也有向高位进位发生,但是这是在调整时的进位,故不做处理。

扩展资料:

BCD码与十进制数的转换

BCD码与十进制数的转换关系很直观,相互转换也很简单,将十进制数754转换为BCD码:7->0111,5->0101,4->0100所以拼成8421BCD码的结果是:

(0111 01010100)BCD;若将BCD码1000 01010101转换为十进制数:1000->8,0101->5,0101->5所以结果是:(855)D。

注意:同一个8位二进制代码表示的数,当认为它表示的是二进制数和认为它表示的是二进制编码的十进制数时,数值是不相同的。

例如:00011000,当把它视为二进制数时,其值为24;但作为2位BCD码时, 其值为18。

例如:00011100,如将其视为二进制数,其值为28,但不能当成BCD码,因为在8421BCD码中,它是个非法编码 。

参考资料:

百度百科—8421BCD码

以上就是关于编写程序完成一个“加减法”计算器程序,功能为:任意输入两个浮点数,和一个“+”或者“-”,然后根据全部的内容,包括:编写程序完成一个“加减法”计算器程序,功能为:任意输入两个浮点数,和一个“+”或者“-”,然后根据、如何用Java编一个100以内加减法的程序、如何编写C语言儿童100以内的加减乘除法游戏训练程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/zz/10115142.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存