我是靠谱客的博主 伶俐苗条,最近开发中收集的这篇文章主要介绍算法竞赛入门经典:第三章思考题题目1:题目2:,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

  • 题目1:
  • 题目2:
    • 回答:

题目1:

/*
 * @Descripttion: 
 * @version: 
 * @Author: Arabrast
 * @Date: 2020-02-22 18:45:19
 * @LastEditors: Arabrast
 * @LastEditTime: 2020-02-23 17:09:59
 * @Abrastact: 思考题:题目1
 * 
 *题目1(必要的存储量):数组可以用来保存很多数据,但在一些情况下,并不需要把
数据保存下来。下面哪些题目可以不借助数组,哪些必须借助数组?请编程实现。假设输入
只能读一遍。
输入一些数,统计个数。
输入一些数,求最大值、最小值和平均数。
输入一些数,哪两个数最接近。
输入一些数,求第二大的值。
输入一些数,求它们的方差。
输入一些数,统计不超过平均数的个数。
 */

#include <stdio.h>
#include<iostream>
#include<math.h>

using namespace std;

void num1()
{
    int i=0;
    int x;
    while(scanf("d",&x)!=EOF)
    {
        i++;
        /*
        if(x=='n')
        {
            break;
        }
        else
        {
            ++i;
        }*/
    }
    cout<<i<<endl;
}

void num2()
{
    int max,min,avg,sum=0;
    int flag=1;
    int n;
    int x;
    while(1==scanf("%d",&n))
    {
        if(flag==1)
        {
            max=min=n;
            flag=0;
        }
        if(max<n)
        {
            max=n;
        }
        if(min>n)
        {
            min=n;
        }
        sum+=n;
        x++;
    }
    avg=sum/x;
    printf("min is %d,max is %d,average is %d",min,max,avg) ;
}

void num3()
{
    int nums[100],i=0;

    while(1==scanf("%d",&nums[i]))
    {
        i++;
    }

    int x,y;
    int temp;
    int a=nums[0],b=nums[1];
    int distance=a-b;
    for(x=0;x<i;x++)
    {
        for(y=x+1;y<i;y++)
        {
            if(abs(nums[x]-nums[y])<distance)
            {
                distance=abs(nums[x]-nums[y]);
                a=nums[x];
                b=nums[y];
            }
        }
    }
    printf("%d and %d",a,b);
    
}

void num4()
{
    int max,secondmax,n;
    scanf("%d%d",&max,&secondmax);
    int t1=max>secondmax ? max:secondmax;
    int t2=max<secondmax ? max:secondmax;
    max=t1;
    secondmax=t2;
    while(1==scanf("%d",&n))
    {
        if(n>max)
        {
            secondmax=max;
            max=n;
            continue;
        }
        if(n>secondmax &&n!=max)
        {
            secondmax=n;
        }
    }
    printf("max=%d,secondmax=%d",max,secondmax);
}

void num41()
{
    int i=0;
    int nums[100];
    while(1==scanf("%d",&nums[i]))
    {
        ++i;
    }
    int x,y;
    for(x=0;x<i;x++)
    {
        for(y=x+1;y<i;y++)
        {
            if(nums[x]>nums[x+1])
            {
                int temp=nums[x+1];
                nums[x+1]=nums[x];
                nums[x]=temp;
            }
        }
        
    }
    printf("%d",nums[i-2]);

}

void num5()
{
    int nums[100];
    int ct=0,n,i;
    double ave=0.0,sum=0.0,psum=0.0;
    while(1==scanf("%d",&n))
    {
        nums[ct++]=n;
        sum+=n;
    }
    ave=sum/ct;
    for(i=0;i<ct;i++)
    {
        psum+=pow((nums[i]-ave),2);
    }
    psum/=ct;
    printf("variance:%.3fn",psum);
}

void num6()
{
    int nums[100];
    int ct=0,n,i;
    int sct=0;
    double ave=0.0,sum=0.0;
    while(1==scanf("%d",&n))
    {
        nums[ct++]==n;
        sum+=n;
    }
    ave=sum/ct;
    for(i=0;i<ct;i++)
    {
        if(nums[i]<ave)
        {
            sct++;
        }
    }
    printf("%d numbers smaller than average %fn",sct,ave);
    
}


int main()
{
   // num1();
   // num2();
   // num3();
   // num41();
   // num5();
   num6();
}

题目2:

/*
 * @Descripttion: 
 * @version: 
 * @Author: Arabrast
 * @Date: 2020-02-29 18:41:29
 * @LastEditors: Arabrast
 * @LastEditTime: 2020-02-29 18:43:29
 * @Abrastact: 题目2(统计字符1的个数):
 * 下面的程序意图在于统计字符串中字符1的个数,可惜有
瑕疵:
#include<stdio.h>
#define maxn 10000000 + 10
int main() {
char s[maxn];
scanf("%s", s);
int tot = 0;
for(int i = 0; i < strlen(s); i++)
if(s[i] == 1) tot++;
printf("%dn", tot);
}
该程序至少有3个问题,其中一个导致程序无法运行,另一个导致结果不正确,还有一
个导致效率低下。你能找到它们并改正吗?
 */
#include <stdio.h>
#include<string.h>


#define maxn 1000000+10

int main()
{
    char s[maxn];
    scanf("%s",s);
    int tot=0;
    int n=strlen(s);
    for (int i=0;i<n;i++)
    {
        if (s[i]== '1')
        tot++;
    }
    printf("%dn",tot);
}

回答:

  1. 引用string.h
  2. s是’char’型, 而原来的1是’int’型
  3. strlen(i)多进行了一次遍历.

最后

以上就是伶俐苗条为你收集整理的算法竞赛入门经典:第三章思考题题目1:题目2:的全部内容,希望文章能够帮你解决算法竞赛入门经典:第三章思考题题目1:题目2:所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部