输入整行字符串

平均绩点

题目描述

每门课的成绩分为A、B、C、D、F五个等级,为了计算平均绩点,规定A、B、C、D、F分别代表4分、3分、2分、1分、0分。

输入

有多组测试样例。每组输入数据占一行,由一个或多个大写字母组成,字母之间由空格分隔。

输出

每组输出结果占一行。如果输入的大写字母都在集合{A,B,C,D,F}中,则输出对应的平均绩点,结果保留两位小数。否则,输出“Unknown”。

样例输入
A B C D F
B F F C C A
D C E F
样例输出
2.00
1.83
Unknown
输入输出知识点

如果要一次性获取一行字符串作为输入,请使用getline函数+cin

#include <iostream>
#include <string>
//获取一行字符串输入
string s;//用于保存输入字符串
getline(cin, s);//用于从输入流读取一行文本 string s;
cin >> s; //获取一个字符输入
char c;
c = cin.get();
代码
#include <iostream>
#include <string> using namespace std;
int main(){
string inputLevel;
while(getline(cin, inputLevel)){
float sum = 0;
int count = 0;
int f = 1;
for(int i = 0; i < inputLevel.size(); ++i){
if(inputLevel[i] == 'A') {sum += 4; count++;}
else if(inputLevel[i] == 'B') {sum += 3; count++;}
else if(inputLevel[i] == 'C') {sum += 2; count++;}
else if(inputLevel[i] == 'D') {sum += 1; count++;}
else if(inputLevel[i] == 'F') {sum += 0; count++;}
else if(inputLevel[i] == ' ') continue;
else{
f = 0;
cout << "Unknown" << endl;
break;
}
}
if(f) printf("%.2f\n", sum / count);
}
return 0;
}

输入值并放入vector中

摆平积木

题目描述

小明很喜欢玩积木。一天,他把许多积木块组成了好多高度不同的堆,每一堆都是一个摞一个的形式。然而此时,他又想把这些积木堆变成高度相同的。但是他很懒,他想移动最少的积木块来实现这一目标,你能帮助他吗?

输入

输入包含多组测试样例。每组测试样例包含一个正整数n,表示小明已经堆好的积木堆的个数。

接着下一行是n个正整数,表示每一个积木堆的高度h,每块积木高度为1。其中1<=n<=50,1<=h<=100。

测试数据保证积木总数能被积木堆数整除。

当n=0时,输入结束。

输出

对于每一组数据,输出将积木堆变成相同高度需要移动的最少积木块的数量。

在每组输出结果的下面都输出一个空行。

样例输入
6
5 2 4 1 7 5
0
样例输出
5
输入输出知识点

先分析一下题目,题目要求我们把所有积木堆摆成同样高度

那我们就得将所有积木堆的高度加起来取平均值才能知道每个积木堆要摆多高

然后就是将超过平均值的积木堆减去平均值得到该积木堆需要移动的次数,小于平均值的积木堆不用管,因为我们只需要从高的积木堆取积木

那么就涉及到怎么求平均值,用之前的方法累加虽然可以,但是就没办法再去取到输入的单个数值了

所以需要使用数组来保存输入的元素

具体来说就是创建一个数组,然后在遍历这个数组的时候用cin给每个下标位置赋值

		vector<int> stack(n, 0);
for(int i = 0; i < n; ++i){
cin >> stack[i];
...
}
代码
#include <iostream>
#include<vector>
using namespace std; int main(){
int n;
while(cin >> n){
if(n == 0) break;
int sum = 0;
vector<int> stack(n, 0);
for(int i = 0; i < n; ++i){
cin >> stack[i];
sum += stack[i];
}
int average = sum / n;
int moveTimes = 0;
for(int stackHigh : stack){
if(stackHigh > average){
moveTimes += stackHigh - average;
}
}
cout << moveTimes << endl;
cout<< endl;
}
}

共同祖先

题目描述

小明发现和小宇有共同祖先!现在小明想知道小宇是他的长辈,晚辈,还是兄弟。

输入

输入包含多组测试数据。每组首先输入一个整数N(N<=10),接下来N行,每行输入两个整数a和b,表示a的父亲是b(1<=a,b<=20)。小明的编号为1,小宇的编号为2。

输入数据保证每个人只有一个父亲。

输出

对于每组输入,如果小宇是小明的晚辈,则输出“You are my younger”,如果小宇是小明的长辈,则输出“You are my elder”,如果是同辈则输出“You are my brother”。

样例输入
5
1 3
2 4
3 5
4 6
5 6
6
1 3
2 4
3 5
4 6
5 7
6 7
样例输出
You are my elder
You are my brother
代码
#include<iostream>
#include<vector> using namespace std;
int main(){
int n, a, b, xm, xy;
vector<int> nums(30, 0);
while(cin >> n){
while(n--){
cin >> a >> b;
nums[a] = b;
}
int xmLen = 0, xyLen = 0; xm = nums[1];
while(xm != 0){
xm = nums[xm];
xmLen++;
}
xy = nums[2];
while(xy != 0){
xy = nums[xy];
xyLen++;
}
if (xmLen > xyLen) cout << "You are my elder" << endl;
else if (xmLen == xyLen) cout << "You are my brother" << endl;
else cout << "You are my younger" << endl;
}
}

取输入整数的每一位值

奇怪的信

题目描述

有一天, 小明收到一张奇怪的信, 信上要小明计算出给定数各个位上数字为偶数的和。

例如:5548,结果为12,等于 4 + 8 。

小明很苦恼,想请你帮忙解决这个问题。

输入

输入数据有多组。每组占一行,只有一个整整数,保证数字在32位整型范围内。

输出

对于每组输入数据,输出一行,每组数据下方有一个空行。

样例输入
415326
3262
样例输出
12

10
代码

只要别忘了通过取模的方式获取每个位上的数值的方法,这题就是好做的

#include<iostream>
#include<vector> using namespace std; int main(){
int n, num;
while(cin >> n){
int res = 0;
while(n != 0){
num = n % 10;
n /= 10;
if(num % 2 == 0) res += num;
}
cout << res << endl;
cout << endl;
}
}

【ACM专项练习#02】输入整行字符串、输入值到vector、取输入整数的每一位的更多相关文章

  1. c++ string类使用及用string类解决整行字符串输入

    下面随笔给出c++ string类使用及用string类解决整行字符串输入. string类 使用字符串类string表示字符串 string实际上是对字符数组操作的封装 string类常用的构造函数 ...

  2. c程序设计语言_习题1-16_自己编写getline()函数,接收整行字符串,并完整输出

    Revise the main routine of the longest-line program so it will correctly print the length of arbitra ...

  3. 输入3行字符串/定义flag/while/字符串后要加空格符

    int i = 0,j = 0; for(; i < 3; i++) { gets(a[i]); }//输入3行字符串 bool flag = true; while语句的语义是:计算表达式的值 ...

  4. 【PAT甲级】1077 Kuchiguse (20 分)(cin.ignore()吃掉输入n以后的回车接着用getine(cin,s[i])输入N行字符串)

    题意: 输入一个正整数N(<=100),接着输入N行字符串.输出N行字符串的最长公共后缀,否则输出nai. AAAAAccepted code: #include<bits/stdc++. ...

  5. Java输入几行字符串

    查找书籍 给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价. 输入格式: 输入第一行给出正整数n(<10),随后给出n本书的信息.每本书在一行中给出书名,即 ...

  6. C++读入整行字符串的方法

    string s; getline(cin,s); cout<<s<<endl; ]; scanf("%[^\n]%*c",s); printf(" ...

  7. C/C++如何整行读入字符串?

    在写代码的过程中,经常要一行一行的读入字符串进行处理,这里我总结了一些方法,供大家参考. 方法一:scanf()读入char[] 使用方法: ]; scanf("%[^\n]",& ...

  8. 输入n个字符串,找出最长最短字符串(若有个数相同的,都打印出来)

    首先,要求找到最长最短字符串,我们应该用数组将其存起来,输入的个数是不固定的,我们就可以用Scanner获取要输入的个数,最终找到的个数也不固定,我们可以封装两个方法,并且返回值类型为数组. 我遇到的 ...

  9. 连续多行输入--C++ 中字符串标准输入的学习及实验(续篇)

      编程中常常会用到连续多行输入的情况,如果事先知道要输入多少行的话,可以直接定义一个变量,然后用循环就可以实现了,但有时候事先并不知道,要输入多少行,于是就可以用到输入流碰到文件终止符的情况了,具体 ...

  10. c++string标准输入和getline()整行读入

    1.使用标准IO操作读写string对象 我们都知道,使用标准iostream操作来读写int ,double等内置类型的值,同样,我们也可以使用IO操作来读写string对象. c++ code: ...

随机推荐

  1. 一个Redis dump文件的简要分析过程

    摘要 遇到一个老大难的问题. 让帮忙分析一下一个Redis的dump文件. 虽然之前写过了rdb和rdr的文档 但是感觉大家都喜欢拿来主义. 没办法. 今天继续进行深入一点的分析. 原理其实还是基于r ...

  2. 最小的 $x$ 满足 $L\le x\bmod P\le R$

    设 \(G(L, R, D, P)\) 为 \(y P+L \leq x D \leq y P+R\) ,满足 \(1 \leq L \leq R<P, D<P\) ,其中 \(x\) 的 ...

  3. vue面试题(一)正在重新整理

    1.输入一个 URL到浏览器整个过程发生了什么?ok 1.浏览器查找当前 URL是否存有缓存,并检查这个缓存是否过期 2.DNS 解析 URL 对应的 IP 3.根据 IP 建立 TCP 连接(三次握 ...

  4. KubeSphere2.1踩坑记

    至少两台机器.推荐4X16.(完全安装KubeSphere会吃掉10G+内存) k8s安装(略1.14.8)可参考我上一篇文章或者基于kubeadmin快速安装 KubeSphere2.1前置条件 1 ...

  5. 基于Basic auth 的一个C# 示例

    最近在做公司的一个项目时,客户需要我们定时获取他们矩阵系统的数据.在与客户进行对接时,提到他们的接口使用的目前不常用的BASIC 认证.天呢,它好不安全,容易被不法人监听,咋还在使用呀.但是没办法呀, ...

  6. 5.10 Windows驱动开发:摘除InlineHook内核钩子

    在笔者上一篇文章<内核层InlineHook挂钩函数>中介绍了通过替换函数头部代码的方式实现Hook挂钩,对于ARK工具来说实现扫描与摘除InlineHook钩子也是最基本的功能,此类功能 ...

  7. C/C++ 常见数组排序算法

    本文介绍了几种常见的排序算法的实现,包括冒泡排序.选择排序.插入排序.希尔排序.归并排序和快速排序.冒泡排序通过多次遍历数组,比较并交换相邻元素,逐步将较小元素"浮"到数组顶端,时 ...

  8. 4.6 Windows驱动开发:内核遍历进程VAD结构体

    在上一篇文章<内核中实现Dump进程转储>中我们实现了ARK工具的转存功能,本篇文章继续以内存为出发点介绍VAD结构,该结构的全程是Virtual Address Descriptor即虚 ...

  9. 1.1 C++ STL 字符串构造函数

    String 字符串操作容器是C++标准中实现的重要容器,其主要用于对字符串的高效处理,它和C风格中的string.h并不是同一个库,两个库有极大的差距,C库中的string.h主要面向过程提供一些处 ...

  10. Hive报错:Call From hadoop01/172.23.238.2 to hadoop01:10020 failed on connection exception

    问题描述 在阿里云服务器上安装的Hadoop和Hive,刚开始关闭了防火墙.但是由于服务器被被黑客安装挖矿程序,所以开启了防火墙.但是即使开启了所有可能的端口,但是在向Hive中插入数据时,依然报错提 ...