我觉得学语言还是要踏踏实实的,一步一步来。
很明显你有一些基础的东西没懂,所以你从别的地方贴来了这份代码,比如:这代码根本就运行不起来,说明你语法还不过关。
这份代码其实只是输入一个数字,判断这个数字是不是质数而已,因为源代码的缩进看着头痛,我就重新贴一份
#include <stdio.h>
#include <stdbool.h>
int main()
{
unsigned long num;
unsigned long div;
bool isPrime;
while (scanf("%d", &num) == 1)
{
for (div=2, isPrime=true; (div*div) <= num; div ++)
{
if (num % div == 0)
{
if ((div*div)!=num)
printf("%lu is divisible by %u and %lu.\n", num, div, num/div);
else
printf("%lu is divisible by %lu.\n", num, div);
isPrime = false;
}
}
if (isPrime)
printf("%lu is primer. \n",num);
printf("Next one:\n");
}
printf("Bye");
return 0;
}
然后开始回答你的问题:
1.for循环下存在if循环,当条件(比如7)满足for循环进入if循环后,发现不能满足if条件 ,是不是直接转入在下一个if循环?
for循环下存在if循环?什么意思?if又不是循环,就算你说错了,if里面有个循环,而实际if里面也没有循环,所以不知道你这句话说的啥意思。
后来我猜测,你可能想说的是“for循环语句块里存在if条件判断语句块”
不能满足if条件 ,是不是直接转入在下一个if循环
还是听不懂。。。不能满足if条件,语句就直接往后走,如果后面有语句就执行语句,没有语句了,就开始for的下一轮循环
2.这里 bool类型的isPrime有什么作用?
用来标记输入的数字是不是质数,一开始先默认它是质数,所以设置成true,在for循环一次又一次的验证下,然后发现这个数存在别的因数,那么就知道输入的数字不是质数,把它标记为false
第一个if里面的语句isPrime = false是什么意思?
就是我说的,把它标记为不是质数
尤其是下面if (isPrime)这句。
这句是判断,判断经过for循环的多轮结果后,看看这个变量是不是还是质数,然后是,要输出一句“xxx是质数”
如果你不理解bool类型的变量,可以把bool isPrime;
看成int isPrime;
,把 isPrime=true
看成 isPrime=1
,把 isPrime=false
看成 isPrime=0
,这样替换后,程序依旧能运行
我看代码里面还有一个注释提了问题
//这条语句是什么意思,isPrimer???
这个[b]
没有任何意思,是你自己复制代码复制错了,不知道你从哪里复制的,c语言也没有这种写法,而且加上这个[b]
程序都运行不起来,也就是我说的,“这代码根本就运行不起来”