题目1(必要的存储量)

数组可以用来保存很多数据,但在一些情况下,并不需要把数据保存下来。下面哪些题目可以不借助数组,哪些必须借助数组?请编程实现。假设输入只能读一遍。
1. 输入一些数,统计个数。
2. 输入一些数,求最大值、最小值和平均数。
3. 输入一些数,哪两个数最接近。
4. 输入一些数,求第二大的值。
5. 输入一些数,求它们的方差。
6. 输入一些数,统计不超过平均数的个数。

代码如下:

#include <stdio.h>
#include <stdlib.h>void count() // 1题
{int n, ct = 0;while(1 == scanf("%d", &n))++ct;printf("You've inputted %d numbers\n", ct);
}void maxMinAverage() // 2题
{int n, max, min, sum = 0, ct = 0, first = 1;while(1 == scanf("%d", &n)){if(first) { max = min = n; first = 0; }if(max < n) max = n;if(n < min) min = n;sum += n;++ct;}printf("max:%d min:%d average:%.3f\n", max, min, sum*1.0/ct);
}void nearest() // 3题
{int nums[100], i = 0, j, k;while(1 == scanf("%d", &nums[i]))++i;printf("%d\n", i);int a = nums[0], b = nums[1], distance = abs(nums[0]-nums[1]);for(j = 0; j < i - 1; ++j)for(k = j + 1; k < i; ++k)if(abs(nums[j]-nums[k]) < distance){distance = abs(nums[j]-nums[k]);a = nums[j];b = nums[k];}printf("two nearest numbers: %d %d, distance: %d\n", a, b, distance);
}void second() // 4题
{int max, second, n;scanf("%d%d", &max, &second);int t1 = max > second ? max : second;int t2 = max < second ? max : second;max = t1; second = t2;//printf("max:%d second:%d\n", max, second);while(1 == scanf("%d", &n)){if(n > max) { second = max; max = n; continue; }if(n > second && n != max) second = n;}printf("max:%d second:%d\n", max, second);
}void variance() // 5题
{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 += (nums[i] - ave) * (nums[i] - ave);printf("variance: %.3f\n", psum / ct);
}void smallerThanAve() // 6题
{int nums[100];int ct = 0, sct = 0, n, i;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 %f\n", sct, ave);
}int main()
{//count();//maxMinAverage();//nearest();//second();//variance();//smallerThanAve();return 0;
}

题目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("%d\n", tot);
}

该程序至少有3个问题,其中一个导致程序无法运行,另一个导致结果不正确,还有一个导致效率低下。你能找到它们并改正吗?

答案:

#include <stdio.h>int main()
{int tot = 0;char ch;while((ch = getchar()) != EOF)if(ch == '1') ++tot;printf("%d\n", tot);
}

《算法竞赛入门经典》第三章思考题相关推荐

  1. 刘汝佳算法竞赛入门经典第三章习题

    /*给出一些容易理解的解题方法  但是没有oj评测 所以无法保证一定正确  矩阵的旋转给出了左旋和右旋 不确定题目3-5是哪一种*/ 习题3-1分数统计(stat) 输入一些学生的分数,哪个分数出现的 ...

  2. 算法竞赛入门经典第3章

    3.1数组 数组较大 比较大的数组尽量声明在main函数外,否则程序可能无法进行. 数组操作 如果要从数组a复制k个元素到数组b,可以这样做:memcpy(b,a,sizeof(int)*k).  如 ...

  3. 《算法竞赛入门经典》 第二章 循环结构程序设计 习题

    注:这里为了便于测试,直接使用stdin,stdout进行输出,没有进行文件读写操作. 习题2-1 位数(digit) 输入一个不超过10^9的正整数,输出它的位数.例如12735的位数是5.请不要使 ...

  4. 《算法竞赛入门经典》第一章1.5

    1.5.4 问题1 问题2 问题3 问题4 问题5  最邻近的else 转载于:https://www.cnblogs.com/LzKlyhPorter/p/4185828.html

  5. 算法竞赛入门经典 第七章 总结

    目录: 7.1 简单枚举 7.2 枚举排列 7.3 子集生成 7.1 简单枚举 例题7-1 除法(Division, UVa 725) 输入正整数n,按从小到大的顺序输出所有形如abcde/fghij ...

  6. 算法竞赛入门经典 第五章总结1

    例题1: 输入多行数据,每行包含若干个以空格隔开的整数,输出每行中所有整数之和 #include<iostream> #include<string> #include< ...

  7. 算法竞赛入门经典第六章(例题) B - Rails(涉及到栈的运用)

    题目:B - Rails 原题链接:https://cn.vjudge.net/contest...: 题目大意:先输入一个表示火车的节数,火车原本是按从1到n的顺序,但是一起进的还是分开进的是不一定 ...

  8. 《算法竞赛入门经典》第一章习题答案

    习题1-1 平均数(average) 输入3个整数,输出它们的平均值,保留3位小数. #include <stdio.h> int main() { int a,b,c; scanf(&q ...

  9. 算法竞赛入门经典第4章 【uvaoj习题(一)】

    题目合集 http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=94 uva100 ...

  10. 刘汝佳《算法竞赛入门经典》---总结

    刘汝佳:<算法竞赛入门经典> 三步: 基本的数据结构+算法知识: 数论等数学基本知识: 锻炼联想建模能力.知识与实际相结合,解决实际问题! 第一章:程序设计入门 1.a/b 当a.b为整数 ...

最新文章

  1. 深度学习中的双下降现象
  2. 在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错误的。如果在 IIS 中没有将虚拟目录配置为应用程序,则可能导致此错误。...
  3. php根据城市获取天气预报,根据浏览者ip获取城市,然后在获取城市天气预报
  4. MyBatis学习总结[4]-ResultMap子元素
  5. NOIP模拟题——来自风平浪静的明天
  6. Capistrano3 与 Mina
  7. c语言随机产生10个30 100,c语言编写随机产生10个100~200之间整数,幷按从大到小排序...
  8. STL学习笔记 ---- 由set的声明所引发的自定义比较的实现方式 作者:winterTTr(转载请注明)...
  9. post请求需要加密吗_你需要吗?这款闪存盘不仅可以专业加密,还能云备份
  10. HighCharts:柱状图设置不同柱子不同颜色
  11. PHP session的实现原理
  12. 常见边缘检测对比(Roberts算子、Prewitt算子、Sobel算子、Laplacian算子、Canny算子)
  13. 装系统:主分区、扩展分区、逻辑分区,引导(启动)分区、系统分区、活动分区
  14. 计算机关机界面设置在哪里,电脑怎么设置关机画面
  15. 做移动网站还是移动应用程序?
  16. js 数据类型之字符串
  17. eclipse中保存Java文件时出现错误:Save could not be completed. Try File Save As... if the problem persists.
  18. Ubuntu 16.04+网易云音乐+Adobe Flash+腾讯QQ
  19. SAP-PM设备模块-PM主数据之设备主数据
  20. ping不通外网 连不上外网

热门文章

  1. 天津计算机专业专科大学排名,天津的计算机专业大学排名
  2. linux 创建线程 execvp,execvp使用实例
  3. Android简单计时器
  4. GitHub原生AI代码生成工具Copilot,官方支持Visual Studio 2022
  5. 用我这些年的经历告诉你无力吐槽的自动化现状……
  6. CISSP-D8-软件开发安全
  7. GameObject的Active与InActive activeSelf, activeInHierarchy, SetActiveRecursively
  8. Python趣味编程 | 看看如何用Python生成素描风格的自拍照,并且加上Logo
  9. memwatch的使用(一)
  10. BlockingQueue(阻塞队列)