可重复计算
上一个文章的程序虽然可以进行简单的计算,但是一次只能计算计算。计算第二次的话,需要再次打开程序。使用非常不便,所以最好进行修改,让它能够重复计算。但是不能让它一直执行下去,否则会一直浪费内存,所以必须有一规则让它能够自动关闭。首先看看代码。(代码不唯一,可以按照自己的想法进行修改)
#include <stdio.h>
int main()
{
int a,b;
scanf("%d %d",&a,&b); //输入要进行计算的两个数
while(a!=0&&b!=0) //当两个数都不为0时开始计算
{
printf("a+b=%d\n",a+b); //计算两个数的和
printf("a-b=%d\n",a-b); //计算两个数的相减结果
printf("a*b=%d\n",a*b); //计算两个数相乘的结果
printf("a/b=%d\n",a/b); //计算两个数相除的结果
scanf("%d %d",&a,&b); //输入下一次要进行计算的两个数
}
return 0;
}
程序结果
分析:利用while函数实现计算的可重复性。当a和b都不为零时进行计算;如果有一个数为0的话,则退出程序。关键的一点是在计算后要再一次进行输入,否则就会一直不停的重复输入,不信的话可以在自己的电脑上讲计算后的输入语句注释或删除掉,运行后输入两个都不为0的数。肯定是不停的输出那两个数的计算结果。这时可以直接点击左上角的关闭按钮。
可以识别运算符的计算
细心的可以发现每次输入的两个数都会输出包括加、减、乘、除的计算结果。当只需其中一个计算结果时,这样的计算比较多余,所以下面介绍一种可以进行选择的程序,代码如下。
#include <stdio.h>
int main()
{
int a,b;
char c;
scanf("%d%c%d",&a,&c,&b); //输入要进行计算的两个数
while(a!=0&&b!=0) //当两个数都不为0时开始计算
{
switch (c)
{
case '+': printf("%d+%d=%d\n",a,b,a+b); break; //计算两个数的相减结果
case '-': printf("%d-%d=%d\n",a,b,a-b); break; //计算两个数的和
case '*': printf("%d*%d=%d\n",a,b,a*b); break; //计算两个数相乘的结果
case '/': printf("%d//%d=%d\n",a,b,a/b); break; //计算两个数相除的结果
}
scanf("%d%c%d",&a,&c,&b); //输入要进行计算的两个数
}
return 0;
}
程序结果
分析:在输入时将输入到的字符保存在字符变量c中。然后在计算前利用switch判断输入的字符是哪个符号。如果输入错误的字符会有什么样的结果,可以自己试试。
其实还有很多其它的变换形式,可以自己试试。
判断一个数是否为素数
素数其实是小学学习的质数,2、3、5、7、11、13、17、19、23、27、29......即除1和自身外没有其它可以整除的数。C语言可以计算出无穷个素数(初学时注意数据类型的范围)。判断素数常用的方法代码如下。
#include <stdio.h>
int main()
{
int a,i;
scanf("%d",&a); //输入要判断的数
while(a)
{
if(a==1)
printf("输入的数不是素数!!!\n"); //1不是素数
for(i=2;i<a;i++) //从2开始判断输入的数能否整除
{
if(a%i==0) //如果能整除,输出提示信息,并跳出for循环
{
printf("输入的数不是素数!!!\n"); //提示输入的数不是素数
break;
}
}
if(i==a)
printf("输入的数是素数!!!\n"); //提示输入的数是素数
scanf("%d",&a); //再次输入要判断的数
}
return 0;
}
程序结果
分析:由于需要多次判断,所以将素数判断的代码放到while循环中。当输入的数(a)为0时,结束程序。素数的判断是首先判断该数是否为1,如果是1,则直接得出结果,1不是素数。然后如果不是1的话,就从2开始除起。当有一个数能被整除的话,输出提示信息,然后跳出for循环。最后判断i的值是否等于a,如果等于a表明没有一个比它小的数能够整除。需要注意的是for循环在判断完要执行i++的代码,然后判断i是否小于a,如果等于a,则跳出for循环。其实不需要判断这么多比它小的数,只需判断比根号它小的数就行。代码如下。
#include <stdio.h>
#include <math.h>
int main()
{
int a,i;
scanf("%d",&a); //输入要判断的数
while(a)
{
if(a==1)
printf("输入的数不是素数!!!\n"); //1不是素数
for(i=2;i<=sqrt(a);i++) //从2开始判断输入的数能否整除
{
if(a%i==0) //如果能整除,输出提示信息,并跳出for循环
{
printf("输入的数不是素数!!!\n"); //提示输入的数不是素数
break;
}
}
if(i==(int)sqrt(a)+1)
printf("输入的数是素数!!!\n"); //提示输入的数是素数
scanf("%d",&a); //再次输入要判断的数
}
return 0;
}
需要注意的是开根号函数在math文件里,需要在程序开头用include语句包含该文件。最后的if判断语句的条件是(int)sqrt(a)+1,这是需要考虑该数能够开根号后是整数的情况,如4。sqrt函数是开根号函数,可以点击右键的find declaration按钮查看sqrt函数的声明。
其声明如下图
如果有问题的可以在公众号回复栏中写出问题描述发给我,我看到的话会进行相应的回复。如果发现文章有问题,也欢迎在公众号回复栏中提问,我会查阅资料进行确认并做出修改和回复。
既然阅读了本篇文章,顺便点一下右下边的在看按钮。