C语言编写计算器
我们可以用printf和scanf函数输出结果和获取用户的输入。需要<stdio.h>头文件。scanf函数在读取数据的时候不需要再一行上输入每个数据,只要数据和数据之间留出空白就可以了。先声明两个变量number1和number2,operation变量用来存储运算符。用scanf函数获取这两个数字和运算符。分别用%lf %c %lf
请点击输入图片描述
然后需要检测输入是否是正确的,检查是不是+ - * / %,在这里要用到switch函数,用来看operation变量是否别传入了正确的值。
switch(operation)
{
case '+':
printf........
}
具体的运算我们只需要再case之后的printf语句中设定和输出就可以了。
请点击输入图片描述
由于除法和取余运算比较特殊,我们单独说明。除法的除数不能为零,所以除法需要检测除数是否为零,只需要用if else语句就可以,if(number2 == ),取余运算符对于浮点数没有意义,所以将浮点数转换为long类型,强制类型转换,if((long)number2 == 0) else ,这样整个代码就完成了。
请点击输入图片描述
简单计算器的编辑并不难,但是要注意一些细节,除法的处理要注意除数不能为零的情况,而且取模运算要将两个 *** 作数转化为整型,当然,作为真正的计算器,只实现这些功能是不够的,还需要更多的功能,不过有一个好的开始也不错。
下面我们就运行一下这个程序吧。25*13的值和8%5的值。可以看到是我们期望的值。
请点击输入图片描述
请点击输入图片描述
#include<stdio.h>void main()
{
int i,j,k,a=5,m[6][6]
i=1//初始化i的值为1
k=(a+1)/2//初始化k的值为(a+1)/2,即k=3
/*循环过程如下:
j=1, m[1][3]=1, k=4,i=5,a=5
j=2, m[5][4]=2, k=5,i=4,a=5
j=3, m[4][5]=3, k=1,i=3,a=5
j=4, m[3][1]=4, k=2,i=2,a=5
j=5, m[2][2]=5, k=2,i=3,a=5 执行第一个if语句,continue了
j=6, m[3][2]=6, k=3,i=2,a=5
j=7, m[2][3]=7, k=4,i=1,a=5
j=8, m[1][4]=8, k=5,i=5,a=5
j=9, m[5][5]=9, k=1,i=4,a=5
j=10,m[4][1]=10,k=1,i=5,a=5 执行第一个if语句,continue了
j=11,m[5][1]=11,k=2,i=4,a=5
j=12,m[4][2]=12,k=3,i=3,a=5
j=13,m[3][3]=13,k=4,i=2,a=5
j=14,m[2][4]=14,k=5,i=1,a=5
j=15,m[1][5]=15,k=5,i=2,a=5 执行第一个if语句,continue了
j=16,m[2][5]=16,k=1,i=1,a=5
j=17,m[1][1]=17,k=2,i=5,a=5
j=18,m[5][2]=18,k=3,i=4,a=5
j=19,m[4][3]=19,k=4,i=3,a=5
j=20,m[3][4]=20,k=4,i=4,a=5 执行第一个if语句,continue了
j=21,m[4][4]=21,k=5,i=3,a=5
j=22,m[3][5]=22,k=1,i=2,a=5
j=23,m[2][1]=23,k=2,i=1,a=5
j=24,m[1][2]=24,k=3,i=5,a=5
j=25,m[5][3]=25,k=3,i=4,a=5
j=26退出循环 */
for(j=1j<=a*aj++) //从1到25循环
{
m[i][k]=j //将循环的索引值j赋值给数组m的第i行第k列
if(j%a==0)
{
i=(i%a)+1
continue
}
k=(k%a)+1
i--
if(i==0)
i=a
}
/*执行结果为:
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
*/
for(i=1i<=ai++)//从1到5循环:控制行
{
for(j=1j<=aj++)//内层从1到5循环:控制列
printf("%4d",m[i][j])//以4位整数输出数组中第2行第2列的值到数组最后的值
printf("\n")//行结束打印换行符
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)