这是我的博客(cpp零基础教程)中的文章,借鉴或者转载需要通过作者的同意
大家好,欢迎来到cpp零基础教程,我是Charzie,在本文之前,我们先看一看上节课的内容:上节课内容
该博客详细介绍了C++中scanf和printf函数的基本用法,包括格式控制字符串、常见格式说明符及示例代码。scanf用于从标准输入读取格式化数据,而printf则用于向标准输出打印格式化数据。掌握它们的用法,可以提高C++编程的效率和质量。
OKOK,今天我们不讲新的内容,而是讲几道顺序结构的典型题,话不多说,直接进入刷题环节:
A+B Problem
题目背景
强烈推荐新用户必读帖。
不熟悉算法竞赛的选手请看这里:
算法竞赛中要求的输出格式中,不能有多余的内容,这也包括了“请输入整数 $\bm a$ 和 $\bm b$” 这一类的提示用户输入信息的内容。若包含了这些内容,将会被认为是 Wrong Answer
,即洛谷上的 WA
。在对比代码输出和标准输出时,系统将忽略每一行结尾的空格,以及最后一行之后多余的换行符。
若因此类问题出现本机似乎输出了正确的结果,但是实际提交结果为错误的现象,请勿认为是洛谷评测机出了问题,而是你的代码中可能存在多余的输出信息。用户可以参考在题目末尾提供的代码。
此外,请善用应用中的在线 IDE 功能,以避免不同平台的评测产生差异。
最后,请不要在对应的题目讨论区中发布自己的题解,请发布到题解区域中,否则将处以删除或禁言的处罚。若发现无法提交题解则表明本题题解数量过多,仍不应发布讨论。若您的做法确实与其他所有题解均不一样,请联系管理员添加题解。
题目描述
输入两个整数 $a, b$,输出它们的和($|a|,|b| \le {10}^9$)。
注意
- Pascal 使用
integer
会爆掉哦! - 有负数哦!
- C/C++ 的 main 函数必须是
int
类型,而且 C 最后要return 0
。这不仅对洛谷其他题目有效,而且也是 NOIP/CSP/NOI 比赛的要求!
好吧,同志们,我们就从这一题开始,向着大牛的路进发。
任何一个伟大的思想,都有一个微不足道的开始。
输入格式
两个以空格分开的整数。
输出格式
一个整数。
样例 #1
样例输入 #1
20 30
样例输出 #1
50
本题各种语言的程序范例:
C
#include <stdio.h>
int main()
{
int a,b;
scanf("%d%d",&a,&b);
printf("%d\n", a+b);
return 0;
}
C++
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int a,b;
cin >> a >> b;
cout << a+b << endl;
return 0;
}
Pascal
var a, b: longint;
begin
readln(a,b);
writeln(a+b);
end.
Python2
s = raw_input().split()
print int(s[0]) + int(s[1])
Python3
s = input().split()
print(int(s[0]) + int(s[1]))
Java
import java.io.*;
import java.util.*;
public class Main {
public static void main(String args[]) throws Exception {
Scanner cin=new Scanner(System.in);
int a = cin.nextInt(), b = cin.nextInt();
System.out.println(a+b);
}
}
JavaScript (Node.js)
const fs = require('fs')
const data = fs.readFileSync('/dev/stdin')
const result = data.toString('ascii').trim().split(' ').map(x => parseInt(x)).reduce((a, b) => a + b, 0)
console.log(result)
process.exit() // 请注意必须在出口点处加入此行
Ruby
a, b = gets.split.map(&:to_i)
print a+b
PHP
<?php
$input = trim(file_get_contents("php://stdin"));
list($a, $b) = explode(' ', $input);
echo $a + $b;
Rust
use std::io;
fn main(){
let mut input=String::new();
io::stdin().read_line(&mut input).unwrap();
let mut s=input.trim().split(' ');
let a:i32=s.next().unwrap()
.parse().unwrap();
let b:i32=s.next().unwrap()
.parse().unwrap();
println!("{}",a+b);
}
Go
package main
import "fmt"
func main() {
var a, b int
fmt.Scanf("%d%d", &a, &b)
fmt.Println(a+b)
}
C# Mono
using System;
public class APlusB{
private static void Main(){
string[] input = Console.ReadLine().Split(' ');
Console.WriteLine(int.Parse(input[0]) + int.Parse(input[1]));
}
}
Visual Basic Mono
Imports System
Module APlusB
Sub Main()
Dim ins As String() = Console.ReadLine().Split(New Char(){" "c})
Console.WriteLine(Int(ins(0))+Int(ins(1)))
End Sub
End Module
Kotlin
fun main(args: Array<String>) {
val (a, b) = readLine()!!.split(' ').map(String::toInt)
println(a + b)
}
Haskell
main = do
[a, b] <- (map read . words) `fmap` getLine
print (a+b)
Lua
a = io.read('*n')
b = io.read('*n')
print(a + b)
OCaml
Scanf.scanf "%i %i\n" (fun a b -> print_int (a + b))
Julia
nums = map(x -> parse(Int, x), split(readline(), " "))
println(nums[1] + nums[2])
Scala
object Main extends App {
println(scala.io.StdIn.readLine().split(" ").map(_.toInt).sum)
}
Perl
my $in = <STDIN>;
chomp $in;
$in = [split /[\s,]+/, $in];
my $c = $in->[0] + $in->[1];
print "$c\n";
聪明的同学应该直接从题目中自带的代码里面复制就提交了,但是我们还是要分析一下这道题目
分析
这道题目需要我们输入两个数a和b,输出一个数来表示他们的和,那么我们可以使用C++中自带的函数cin和cout,也可以使用print和scanf,这里我们使用cin和cout的写法,感兴趣的同学可以尝试使用printf和scanf写一下代码
代码
#include<bits/stdc++.h>
using namespace std;
int main() {
int a, b;
cin >> a >> b;
cout << a + b;
}
另外,同学们要养成读题的好习惯,一定要把题读完再快速的写代码(特别是数据范围这一类,十分坑人,作者之前就被坑过很多次)
输出字符菱形
题目描述
用 *
构造一个对角线长 $5$ 个字符,倾斜放置的菱形。
输入格式
没有输入要求。
输出格式
如样例所示。用 *
构成的菱形。
样例 #1
样例输入 #1
样例输出 #1
*
***
*****
***
*
分析
这道题就是一道单纯的输出题,可以使用cout和cin做,接下来,我们来看一看使用printf写的代码吧:
代码
繁琐版:
#include<bits/stdc++.h>
using namespace std;
int main() {
printf(" *\n");
printf(" ***\n");
printf("*****\n");
printf(" ***\n");
printf(" *\n");
return 0;
}
简单版(主程序只有一行代码):
#include<bits/stdc++.h>
int main() {
printf(" *\n ***\n*****\n ***\n *\n");
return 0;
}
这里用到了换行符\n,它的作用就是换行
作业
超级玛丽游戏
题目背景
本题是洛谷的试机题目,可以帮助了解洛谷的使用。
另外强烈推荐新用户必读贴
题目描述
超级玛丽是一个非常经典的游戏。请你用字符画的形式输出超级玛丽中的一个场景。
********
************
####....#.
#..###.....##....
###.......###### ### ###
........... #...# #...#
##*####### #.#.# #.#.#
####*******###### #.#.# #.#.#
...#***.****.*###.... #...# #...#
....**********##..... ### ###
....**** *****....
#### ####
###### ######
##############################################################
#...#......#.##...#......#.##...#......#.##------------------#
###########################################------------------#
#..#....#....##..#....#....##..#....#....#####################
########################################## #----------#
#.....#......##.....#......##.....#......# #----------#
########################################## #----------#
#.#..#....#..##.#..#....#..##.#..#....#..# #----------#
########################################## ############
输入格式
无
输出格式
如描述
字符三角形
题目描述
给定一个字符,用它构造一个底边长 $5$ 个字符,高 $3$ 个字符的等腰字符三角形。
输入格式
输入只有一行,包含一个字符。
输出格式
该字符构成的等腰三角形,底边长 $5$ 个字符,高 $3$ 个字符。
样例 #1
样例输入 #1
*
样例输出 #1
*
***
*****
提示
对于 $100 \%$ 的数据,输入的字符是 ASCII 中的可见字符。
苹果采购
题目描述
现在需要采购一些苹果,每名同学都可以分到固定数量的苹果,并且已经知道了同学的数量,请问需要采购多少个苹果?
输入格式
输入两个不超过 $10^9$ 正整数,分别表示每人分到的数量和同学的人数。
输出格式
一个整数,表示答案。保证输入和答案都在 int 范围内的非负整数。
样例 #1
样例输入 #1
5 3
样例输出 #1
15
作业都是非常简单的题目,大家可以快速AC一下
好了,这就是我们这节课程的内容,我们下节课再见!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。