2013级C++第14周程序阅读

简介: 课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759  1、阅读下面筛法求素数的程序,理解其算法。代码请从CSDN博客的课程主页上下载。如果对运行结果和其背后的原理仍不理解,请通过单步执行的手段跟踪理解,学会观察数组在运行过程中的变化。#include <iostream>#include <io

课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759

  1、阅读下面筛法求素数的程序,理解其算法。代码请从CSDN博客的课程主页上下载。如果对运行结果和其背后的原理仍不理解,请通过单步执行的手段跟踪理解,学会观察数组在运行过程中的变化。

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
    const int M=200;
    const int N=((M+1)/2);
    int i,j,a[N];
    a[0] = 2;
    for(i=1; i<(N-1); i++) //初始数组值实现第一步筛选
        a[i] = 2*i+1;
    for(i=1; i<(N-1); i++) // 第二步筛选
        if(a[i]!=0)
            for(j=i+1; j<N; j++)
                if(a[j]%a[i]==0) // 倍数时置零筛去
                    a[j]=0;
    cout<<"The primer are [2-"<<M<<"]:\n";
    for(i=0,j=0; i<N; i++) //显示得到的素数
    {
        if(a[i]!=0)
        {
            cout<<setw(5)<<a[i];     //输出素数m,字段宽度为5
            j++;                     //n用来累计输出素数的个数
            if(j%10==0) cout<<endl;  //输出10个数后换行
        }
    }
    return 0;
}

  提示1在阅读程序过程中,“画”出数组变化的过程将有助于你读懂程序。例如,下面是“初始数组值实现第一步筛选”后的数组

    

  提示2利用单步执行观察数组变化也是有效办法,下图是“第二步筛选”的循环过程中watch窗口看到的。

    

  2、下面的一段代码使用了输入重定向,运行下面的程序,体会这样处理的好处
#include <iostream>
#include<cstdio>  //可支持输入重定向
using namespace std;
int main()
{
    int c_inc=0, c_dec=0; 
    double v, s_inc=0, s_dec=0; 
    //freopen("input.txt","r",stdin); //输入重定向
    while(cin>>v)
    {
        if(v>0)
           s_inc+=v, c_inc++; 
        else if(v<0)
           s_dec+=v, c_dec++; 
    }
    cout<<c_inc<<" "<<c_dec<<endl;
    cout<<(s_inc/c_inc)<<" "<<(-s_dec/c_dec)<<endl;
    return 0;
}

  运行上面的程序,记得在输入完后要用CTRL-Z作为结束。
  去掉freopen前的注释,建立input.txt文件,其中输入一些数字。多次运行程序,体会这样做的便利性。修改input.txt中的数据,继续体会。
  若现在想将输出也重定向,如何处理?



==================== 迂者 贺利坚 CSDN博客专栏=================

|==  IT学子成长指导专栏  专栏文章分类目录(不定期更新)    ==|

|== C++ 课堂在线专栏   贺利坚课程教学链接(分课程年级)   ==|

======== 为IT菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 =======






目录
相关文章
|
22天前
|
存储 网络协议 Ubuntu
【C++网络编程】Socket基础:网络通讯程序入门级教程
【C++网络编程】Socket基础:网络通讯程序入门级教程
42 7
|
1月前
|
C++ 计算机视觉 Windows
【C++】由于找不到xxx.dll,无法继续执行代码,重新安装程序可能会解决此问题。(解决办法)
【C++】由于找不到xxx.dll,无法继续执行代码,重新安装程序可能会解决此问题。(解决办法)
|
5天前
|
运维 Serverless Go
Serverless 应用引擎产品使用之在阿里云函数计算中c++模板,将编译好的C++程序放进去部署如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
9 1
|
9天前
|
设计模式 存储 算法
C++从入门到精通:3.7阅读和理解开源项目——在实际项目中应用C++编程技巧和规范
C++从入门到精通:3.7阅读和理解开源项目——在实际项目中应用C++编程技巧和规范
|
9天前
|
安全 编译器 C++
C++从入门到精通:3.2异常处理——掌握C++的异常处理机制,提高程序健壮性
C++从入门到精通:3.2异常处理——掌握C++的异常处理机制,提高程序健壮性
|
9天前
|
存储 IDE 编译器
C++从入门到精通:1.3.1了解IDE与C++程序的编写、编译和运行
C++从入门到精通:1.3.1了解IDE与C++程序的编写、编译和运行
|
9天前
|
存储 程序员 数据库
C++从入门到精通:1.2.2简单程序与接收用户输入
C++从入门到精通:1.2.2简单程序与接收用户输入
|
9天前
|
存储 编译器 C++
C++从入门到精通:1.2.1简单程序编写与基本操作
C++从入门到精通:1.2.1简单程序编写与基本操作
|
18天前
|
编译器 C++
如何判断一段程序是由 C 编译程序还是由 C++ 编译程序编译的?
如何判断一段程序是由 C 编译程序还是由 C++ 编译程序编译的?
|
1月前
|
存储 缓存 C++
C++链表常用的函数编写(增查删改)内附完整程序
C++链表常用的函数编写(增查删改)内附完整程序