算法竞赛入门经典 习题3-1 分数统计 习题 3-2 单词的长度

习题3-1 分数统计

输入一些学生的分数,哪个分数出现的次数最多?如果有多个并列,从小到大输出。

任务1:分数均不超过100的非负整数

任务2:分数均不超过100的非负实数,但最多保留两位小数。

任务1

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXN 101 + 10
int a[MAXN];

int main(int argc, char *argv[])
{

  int n, max = 0, i;
  memset(a, 0, sizeof(a));
  while(scanf("%d", &n) == 1)
  {
     a[n]++;
     if(a[n] > max) max = a[n];
  }
  for(i = 0; i <= 100; i++)
  {
     if(a[i] == max) printf("%d ", i);
  }
  printf("\n");
  memset(a, 0, sizeof(a));
  system("PAUSE");
  return 0;
}

任务2

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define MAXN 10001 + 10
int a[MAXN];

int main(int argc, char *argv[])
{
  double degree, m;
  int max = 0, i;
  memset(a, 0, sizeof(a));
  while(scanf("%lf", °ree) == 1)
  {
     double m = degree*100;
     int n;
     n = floor(m+0.5);
     a[n]++;
     if(a[n] > max) max = a[n];
  }
  for(i = 0; i <= 10000; i++)
  {
     if(a[i] == max) printf("%.2lf ", i*0.01);
  }
  printf("\n");

  system("PAUSE");
  return 0;
}

总结:任务2   degree设置为double,然后转为int,用floor(m+0.5),以前碰到过,切记

习题3-2 单词的长度

输出它们的平均长度。单词只包含大写字母和小写字母,用一个或多个空格隔开。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXN 100
char a[MAXN];

int main(int argc, char *argv[])
{
  int count = 0;
  float sum = 0;
  while(scanf("%s", a) == 1)
  {
     count++;
     sum += strlen(a);
  }

  printf("%.3lf\n", sum/count);
  system("PAUSE");
  return 0;
}

总结:不知道网上其他的答案为什么写那么多代码,有时间要仔细看看

时间: 2025-01-17 08:57:05

算法竞赛入门经典 习题3-1 分数统计 习题 3-2 单词的长度的相关文章

算法竞赛入门经典第二版第三章习题

写这个的原因是看到一位大神的习题答案总结,于是自己心血来潮也想写一个这个,目的主要是督促自己刷题吧,毕竟自己太弱了. 习题3-1 得分 UVa 1585 大致就是设置一个变量记录到当前为止的连续的O的数量,碰到X就变0,水题. #include<stdio.h> #include<ctype.h> #include<string.h> char s[90]; int main(void) { int length,n,sum,num; scanf("%d&qu

《算法竞赛入门经典第二版》 P35 习题2-4 子序列的和(subsequence)

/* <算法竞赛入门经典第二版> P35 习题2-4: 输入两个正整数 n < m < 10^6,输出 (1/n)^2 + 1/(n+1)^2 +……+ 1/m^2,保留5位小数. 输入包含多组数据,结束标志为 m=n=0. 有错欢迎指出^_^ */ #include<stdio.h> int main() { int m,n,i,j=1; while(scanf("%d%d",&m,&n) != EOF) { double sum

【算法竞赛入门经典】【第三章】课后习题(第二部分)

自从蓝桥杯之后,都没写博客了.今天将之前第三章还差的一部分习题答案补上. 3-4整数相加 这一题题目有提示,说选择合适的输入方式,即可简化问题.刚开始没想到cin,结果还用字符串来做,多亏别人提醒我一下,我才想起cin.惭愧啊.. #include <iostream> using namespace std; int main() { int a,b; char op; while(cin>>a>>op>>b){ switch(op){ case '+':

《算法竞赛入门经典(第二版)》pdf

下载地址:网盘下载 内容简介  · · · · · · <算法竞赛入门经典(第2版)>是一本算法竞赛的入门与提高教材,把C/C++语言.算法和解题有机地结合在一起,淡化理论,注重学习方法和实践技巧.全书内容分为12 章,包括程序设计入门.循环结构程序设计.数组和字符串.函数和递归.C++与STL入门.数据结构基础.暴力求解法.高效算法设计.动态规划初步.数学概念与方法.图论模型与算法.高级专题等内容,覆盖了算法竞赛入门和提高所需的主要知识点,并含有大量例题和习题.书中的代码规范.简洁.易懂,不

算法竞赛入门经典+挑战编程+USACO

下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成.打牢基础,厚积薄发.   一.UVaOJ http://uva.onlinejudge.org  西班牙Valladolid大学的程序在线评测系统,是历史最悠久.最著名的OJ.   二.<算法竞赛入门经典> 刘汝佳  (UVaOJ  351道题)  以下部分内容摘自:http://sdkdacm.5d6d.com/thread-6-1-1.html   "AO

算法竞赛入门经典(二)

例2-4 文件读写(freopen重定向) #include<stdio.h> #define INF 1000000000 int file_freopen() { int x,min=INF,max=-INF,S=0,count=0; freopen("E:\\Code\\C\\算法竞赛入门经典\\Debug\\input.txt","r",stdin); freopen("E:\\Code\\C\\算法竞赛入门经典\\Debug\\out

(Step1-500题)UVaOJ+算法竞赛入门经典+挑战编程+USACO

下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成.打牢基础,厚积薄发. 一.UVaOJ http://uva.onlinejudge.org 西班牙Valladolid大学的程序在线评测系统,是历史最悠久.最著名的OJ. 二.<算法竞赛入门经典> 刘汝佳  (UVaOJ  351道题)  以下部分内容摘自:http://sdkdacm.5d6d.com/thread-6-1-1.html “AOAPC I”是刘汝佳(大

【算法竞赛入门】【第一章】课后习题

今天心血来潮,决定将<算法竞赛入门经典>里面的课后题,进行详解,先来第一发. 习题1-1 平均数(average) 对于第一题,相信即便是第一次接触编程的人.只要稍稍了解一下C的语法,也可轻易解决这一题.所以我也不多说了直接上代码. #include <stdio.h> int main() { int a, b, c; while(scanf("%d%d%d",&a,&b,&c)!=EOF){ printf("%.3lf\n&

算法竞赛入门经典_4.3_递归

看代码 #include <stdio.h> int f(int n){ return n == 0?1:f(n-1)*n; } int main() { printf("%d\n", f(5)); return 0; } 上面f函数使用了递归,递归由两部分组成,一是递归头,二是递归体. 我们使用gcc调试工具 H:\编程书籍学习\算法竞赛入门经典2代码\算法入门经典第四章>b f 'b' 不是内部或外部命令,也不是可运行的程序 或批处理文件. H:\编程书籍学习\算

《算法竞赛入门经典》动态规划复习

codevs 4979 数塔 1 #define N 100 2 #include<iostream> 3 using namespace std; 4 #include<cstdio> 5 int a[N][N],b[N][N],n; 6 int main() 7 { 8 scanf("%d",&n); 9 for(int i=1;i<=n;++i) 10 for(int j=1;j<=i;++j) 11 { 12 scanf("