正文

钱能的《C++程序设计教程》序列七:chapter7第二部分2005-08-06 15:05:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/xiangyu/3526.html

分享到:

序列七:chapter7
二、课后习题
7.1
这道题应该考虑若最小值不只一个的情况,这时应该把所有最小值的下标都打印出来
#include<iostream>
using namespace std;
void main()
{
    //int array[10]={12,91,83,12,29,93,56,12,88,72};
    int array[10]={34,91,83,56,29,93,56,12,88,72};
    int temp[10]={0};//记录所有最小值的下标值,开始时第一个元素最小
    int i,count=1,temp2=array[0];
        for(i=1;i<10;i++)
        {
            if(array[i]==temp2)
                temp[count++]=i;
            if(array[i]<temp2)
            {
                count=0;
                temp[count++]=i;
                temp2=array[i];
            }
        }
        cout<<"The minimum is "<<temp2<<endl<<"对应的下标有:";
        for(i=0;i<count;i++)
            cout<<temp[i]<<",";
        cout<<"\n";
}

7.2
这道题考查插入算法,大家应该很熟练掌握各种基本算法的程序,这时当遇到题目的时候马上可以直接套用进来
#include<iostream>
using namespace std;
void main()
{
    int array[10]={1,15,20,56,80,100,101,101,105,200};//假设原来的数组
    int i,insert;
    cout<<"请输入要插入的值:";
    cin>>insert;
    cout<<"插入前的数值的各个元素值是:";
    for(i=0;i<10;i++)
        cout<<array[i]<<"  ";
    if(array[9]>insert)//只有最大的值必现在要插入的值大才需要插入
    for(i=8;i>=0;i--)
    {
        if(array[i]>insert)
        array[i+1]=array[i];//把数值往后移
        else break;
    }
    array[i+1]=insert;
    cout<<"\n插入后的数值的各个元素值是:";
    for(i=0;i<10;i++)
        cout<<array[i]<<"  ";
    cout<<endl;

}
7.3
这道题其实是课本p140的Josephus问题的一个扩展,

#include<iostream>
using namespace std;
void main()
{
    const int n=17;
    int child[n];
    int i,j,count=n;
    for(i=0;i<n;i++)
        child[i]=i+1;//给小孩编号,1,2……
    for(i=0,j=0;;j++)
    {
        if(j==n)j=0;//从第一个小孩开始从新数
        if(child[j])
            i++;//当数到一个还没有离开圈的小孩是i增加1,
        else continue;
        if(i%3==0)//此时说明又一次达到m值,这时又有一个小孩要离开圈了
        {
            //从新初始化
            count--;
            cout<<child[j]<<"  ";
            child[j]=0;
        }
        if(count==1)break;//只剩下一个小孩是就全部结束了
    }
    for(i=0;i<n;i++)
        if(child[i])break;
        cout<<"第"<<child[i]<<"个小孩是胜利者\n";
}






阅读(3175) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册