可以用仿真图来实现,用两位共阳数码管,分别接在P0,P2口,组成两位静态显示电路。先做加法计数,计数到99,自动改为减法计数,计数到0,再变为加法计数。由此循环。
仿真图
程序如下
#include<reg51.h>
unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}
void delay()
{
unsigned int j
for(j=20000j>0j--)//修改j 的初值,可改变计数的速度
}
void main()
{
char n,x=1//先加法计数
while(1)
{
P0=tab[n/10]//显示十位
P2=tab[n%10]//显示个位
delay()
n+=x
if(n>=99)
x=-1//减法计数
if(n==0)
x=1//加法计数
}
}
#include<iostream>
#include
<string>
using
namespace
std
int
main()
{
string
a,
b
int
*sum
int
i,
ja,
jb
cout
<<
"请输入两个数字,每个数字以空格结尾:"
<<
endl
cin
>>
a
>>
b
string
temp
if
(
a.size()
>
b.size()
)
//
如果a长度大于b,则交换两字符串
{
temp
=
a
a
=
b
b
=
temp
}
//
在这后,就肯定是a的长度比b小,所以和的位数最大就是b的位数+1。
sum
=
new
int[b.size()+1]
//
所以给和申请b的位数+1个位置。
sum[0]
=
0
char
achar[1]
char
bchar[1]
int
carry
=
0
//
记录进位
int
sizeDif
=
b.size()
-
a.size()
//
记录两个数字的位数差
int
count
//
记录和的位数
for
(
ja
=
a.size()-1,
jb
=
b.size()-1
ja
>=
0
ja--,
jb--
)
{
achar[0]
=
a[ja]
bchar[0]
=
b[jb]
sum[jb+1]
=
atoi(achar)
+
atoi(bchar)
+
carry
carry
=
0
//
清空进位标志位
if(
sum[jb+1]
>
9
)
{
carry
=
1
sum[jb+1]
-=
10
//
使之成为一位数,方便输出。
}
}
for
(
i
=
sizeDif-1
i
>=
0
i--
)
{
bchar[0]
=
b[i]
sum[i+1]
=
atoi(bchar)
//
转换为数字
carry
=
0
//
清空进位标志位
if(
sum[i+1]
>
9
)
{
carry
=
1
sum[i+1]
-=
10
//
使之成为一位数,方便输出。
}
}
cout
<<
endl
<<
"The
process
is:"
<<
endl
for
(
i
=
0
i
<=
sizeDif
i++
)
{
cout
<<
"
"
}
cout
<<
a
<<
endl
cout
<<
"+"
<<
b
<<
endl
for
(
i
=
0
i
<=
b.size()
i++
)
cout
<<
"-"
cout
<<
endl
if
(
carry
==
1
)
//
当和的位数为b的位数+1时
{
cout
<<
'1'
//
先输出最高位,否则就不输出。
}
else
{
cout
<<
"
"
}
for
(
i
=
1
i
<=
b.size()
i++
)
cout
<<
sum[i]
cout
<<
endl
cout
<<
endl
<<
"So
the
result
is:
"
int
remainder
if
(
carry
==
1
)
//
当和的位数为b的位数+1时
{
count
=
b.size()+1
sum[0]
=
1
remainder
=
count%4
for
(
i
=
0
i
<
remainder
i++
)
cout
<<
sum[i]
if
(
remainder
==
0
)
{
for
(
remainder
<
4
remainder++
)
cout
<<
sum[remainder]
}
for
(
i
=
remainder
i
<
count
i++
)
{
if
(
(i-remainder)
%
4
==
0)
cout
<<
','
cout
<<
sum[i]
}
}
else
{
count
=
b.size()
remainder
=
count%4
for
(
i
=
1
i
<
remainder+1
i++
)
cout
<<
sum[i]
if
(
remainder
==
0
)
{
for
(
remainder++
remainder
<
4
remainder++
)
cout
<<
sum[remainder]
}
for
(
i
=
remainder
i
<
count
i++
)
{
if
(
(i-remainder)
%
4
==
0)
cout
<<
','
cout
<<
sum[i]
}
}
cout
<<
endl
return
0
}
//
花了N个小时写出来的啊!!!
<?php // 判断post是否传过来sub参数,从而判断是提交计算,还是刷新页面 if (isset($_POST['sub'])){ echo "用户点击提交按钮,提交计算请求<br>" // 下面注释掉的代码并不是错误的,只是区别switch的另外一种方式// if ($_POST['ysf'] == "+"){// echo $_POST['num1'] + $_POST['num2'] . "<br>"// }elseif ($_POST['ysf'] == "-"){// echo $_POST['num1'] - $_POST['num2'] . "<br>"// }elseif ($_POST['ysf'] == "*"){// echo $_POST['num1'] * $_POST['num2'] . "<br>"// }elseif ($_POST['ysf'] == "/"){// echo $_POST['num1'] / $_POST['num2'] . "<br>"// }elseif ($_POST['ysf'] == "%"){// echo $_POST['num1'] % $_POST['num2'] . "<br>"// }// 判断两个运算元是否为数字 如果不是数字 则不进行运算 if (!is_numeric($_POST['num1']) || !is_numeric($_POST['num2'])){ $isDo = false echo "其中一个运算元不是数字,不进行运算<br>" }else{ $isDo = true }// 声明变量 计算结果 $sum = "" if ($isDo){ // 判断两个运算元是否为数字 如果不是数字 则不进行运算 switch ($_POST['ysf']){case '+': $sum = $_POST['num1'] + $_POST['num2']break case '-': $sum = $_POST['num1'] - $_POST['num2']break case '*': $sum = $_POST['num1'] * $_POST['num2']break case '/': $sum = $_POST['num1'] / $_POST['num2']break case '%': $sum = $_POST['num1'] % $_POST['num2']break } echo $sum."<br>" } }else{ echo "用户刷新页面<br>" //die("不做计算处理<br>")}?> <html lang="en"><head><meta charset="UTF-8"><title>简易计算器</title></head><body><!--table 表格--><!--border=1,表格周围的边框设置为1像素宽--><!--width=400,表格宽度为400像素宽--><!--align=center,表格水平对齐方式为居中对齐内容--><!--caption 定义表格标题--><!--<h1>定义最大的标题。<h6>定义最小的标题。--><!--<tr>标签定义 HTML 表格中的行。包含一个或多个th或td元素。--><!--ysf 运算符的首字母。--><!--colspan 规定单元格可横跨的列数。--><table border="1" width="400" align="center"><form action="jsq2.php" method="post"> <caption><h1>简易计算器</h1></caption> <caption><h4>iwanghang</h4></caption> <tr> <!--第一个运算元--><!-- <td><input type="text" size="5" name="num1" value=""></td>--> <td><input type="text" size="5" name="num1" value="<?phpif (isset($_POST['sub'])){echo $_POST['num1']} ?>"></td> <!--运算符--> <td> <select name="ysf"><!-- <option value="+">+ </option>--><!-- <option value="-">- </option>--><!-- <option value="*">* </option>--><!-- <option value="/">/ </option>--><!-- <option value="%">% </option>--><option <?php if (isset($_POST['sub'])){ if ($_POST['ysf']=="+") echo "selected"} ?>value="+">+ </option><option <?php if (isset($_POST['sub'])){ if ($_POST['ysf']=="-") echo "selected"} ?>value="-">- </option><option <?php if (isset($_POST['sub'])){ if ($_POST['ysf']=="*") echo "selected"} ?>value="*">* </option><option <?php if (isset($_POST['sub'])){ if ($_POST['ysf']=="/") echo "selected"} ?>value="/">/ </option><option <?php if (isset($_POST['sub'])){ if ($_POST['ysf']=="%") echo "selected"} ?>value="%">% </option> </select> </td> <!--第二个运算元--><!-- <td><input type="text" size="5" name="num2" value=""></td>--> <td><input type="text" size="5" name="num2" value="<?phpif (isset($_POST['sub'])){echo $_POST['num2']} ?>"></td> <!--提交--> <td><input type="submit" name="sub" value="等于"></td> </tr> <tr> <td colspan="4"> <?php if (isset($_POST['sub'])){ echo "计算结果:{$_POST['num1']}{$_POST['ysf']}{$_POST['num2']} = {$sum}"}?> </td> </tr></form></table></body></html>欢迎分享,转载请注明来源:内存溢出
评论列表(0条)