学习C,从书中寻找对该项目的澄清

学习C,从书中寻找对该项目的澄清,第1张

概述这里的目标是创建一个程序,找到并输出1到100之间的所有素数.我注意到我倾向于复杂化并创建低效的代码,我很确定我也在这里做过.初始代码是我的,我在注释标记之间放置的所有内容都是本书中给出的代码作为解决方案. // Find all prime numbers between 1 and 100#include <iostream>#include <cmath>using namespac 这里的目标是创建一个程序,找到并输出1到100之间的所有素数.我注意到我倾向于复杂化并创建低效的代码,我很确定我也在这里做过.初始代码是我的,我在注释标记之间放置的所有内容都是本书中给出的代码作为解决方案.

// Find all prime numbers between 1 and 100#include <iostream>#include <cmath>using namespace std;    int main()    {        int counter; // loop counter        int count_two; // counter for second loop        int val; // equals the number of count,used in division to check for primes        bool check;        check = true;        for(counter = 1; counter <= 100; counter++){            val = counter;                for(count_two = 2; count_two <= 9; count_two++){                    if((val % count_two) == !(check)){                        cout << val << " is a prime number.\n";                }          }    }    return 0;}// program dIDn't work properly because of needless complication; all that needs to be checked for is whether a number is divisible by two/**********correct code***********#include <iostream>using namespace std;int main(){    int i,j;    bool isprime;    for(i=1; i < 100; i++) {        isprime = true;    // see if the number is evenly divisible    for(j=2; j <= i/2; j++)    // if it is,then it is not prime        if((i%j) == 0) isprime = false;        if(isprime) cout << i << " is prime.\n";}return 0;}*********************************/

从我可以收集的信息来看,我在这里是一条相当正确的道路.我认为我使用双循环和过度使用变量使事情变得复杂,这可能导致程序工作不正确 – 如果需要我可以发布输出,但这肯定是错误的.

我的问题基本上是这样的:我到底出错了什么地方?我不需要有人来重做这个,因为我想自己更正代码,但我已经看了一段时间,并且无法弄清楚为什么我的工作不起作用.此外,由于我对此不熟悉,因此任何有关语法/可读性的输入都会有所帮助.提前致谢.

解决方法 事实上,你的代码说如果一个数字可以被2到9中的任何数字整除,那么它就是素数.你需要一个bool变量来要求它是全部而不是任何,你还需要改变这一行:

if((val % count_two) == !(check)){

由于check = true,因此解析如下:

if ((val % count_two) == !true){

if ((val % count_two) == false){

if ((val % count_two) == 0){

(注意false值是如何转换为0.有些语言会在这里产生编译错误.C将其转换为整数).

事实上,这与你想要的相反.相反,写下这个,这是正确和清晰的:

if (val % count_two != 0) {

最后,为了可读性(和方便!),你可以做的一件事是写i,j和k而不是counter,count_two和count_three.这三个字母被程序员普遍认为是循环计数器.

总结

以上是内存溢出为你收集整理的学习C,从书中寻找对该项目的澄清全部内容,希望文章能够帮你解决学习C,从书中寻找对该项目的澄清所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

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

原文地址: http://outofmemory.cn/langs/1215038.html

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

发表评论

登录后才能评论

评论列表(0条)

保存