Day 1

每日一题啦

在这里插入图片描述

题目

题目描述:传说唐、宋时有人患怪病,腹内生虫;人说话,虫即小声应之,是为应声虫。现在你可以用程序实现一个应声虫吗?
😄 从测试集获取输入内容,并打印输入的内容。
输入格式
一行字符串。
输出格式
一行字符串。
输入输出样例
输入
hello world!
输出
hello world!

Java写法:

 // 第一种做法:
import java.io.*;
class Main{
  public static void main(String[] args)throws IOException{
      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
      System.out.print(br.readLine()); 
  }
//第二种做法:
import java.util.*;
class Main{
  public static void main(String[] args){
      Scanner sc = new Scanner(System.in);
      System.out.print(sc.nextLine());
  }
}
}

Tips:

  1. 上述两种做法一个使用了Scanner对象,另外一个使用了BufferedReader字符缓冲流,前者使用了正则表达式,而后者是使用了缓冲区,当数据读入一定大小才会进行io操作,因此效率也是更快一些。
  2. readLine()和read()的区别: 前者一次读取一行,遇到回车或者换行符结束;后者遇到空格结束。

C写法:

#include "stdio.h"
int main(){
     // puts(gets());  第一种做法
     //printf("%s",gets());  第二种做法 
    return 0;
}

Tips:
输出:
在C语言中,有两个函数可以在控制台(显示器)上输出字符串,它们分别是:

puts():输出字符串并自动换行,该函数只能输出字符串。
printf():通过格式控制符%s输出字符串,不能自动换行。除了字符串,printf() 还能输出其他类型的数据。
注意,输出字符串时只需要给出名字,不能带后边的[ ],例如,下面的两种写法都是错误的:

printf(“%s\n”, str[]);
puts(str[10]);
输入
在C语言中,有两个函数可以让用户从键盘上输入字符串,它们分别是:

scanf():通过格式控制符%s输入字符串。除了字符串,scanf() 还能输入其他类型的数据。
gets():直接输入字符串,并且只能输入字符串。
但是,scanf() 和 gets() 是有区别的:

  1. scanf() 读取字符串时以空格为分隔,遇到空格就认为当前字符串结束了,所以无法读取含有空格的字符串。
  2. gets() 认为空格也是字符串的一部分,只有遇到回车键时才认为字符串输入结束,所以,不管输入了多少个空格,只要不按下回车键,对 gets() 来说就是一个完整的字符串。换句话说,gets() 用来读取一整行字符串。
    因此,本题需要的输入是gets,输出使用puts
参考答案1为:
#include "stdio.h"
int main(){
    char st[100];
    gets(st);
    puts(st);
    return 0;
}

此外,scanf也可以输入带有空格的字符串,但输入的格式稍有变化,需要要用到一个格式字符:%[] --> 一个字符集。

“%[]”的作用是扫描字符集合

例如:scanf(“%[^\n]”,str);

因此也可以用第二种方法:


参考答案2#include "stdio.h"
int main()
{
    char str[81];
    scanf("%[^\n]",&str);
    printf("%s",str);
    return 0;
}

C++写法:

#include "iostream"
//写成#include <iostream>也可以。
/**
在 C 语言中,#include 指令可以使用双引号或尖括号来包含头文件。
使用尖括号表示头文件在系统目录中,使用双引号表示头文件在当前目录或者指定的路径中。
因此,在 C 中,你可以写成 #include "iostream"
 或 #include <stdio.h> 等形式来包含头文件。
但在 C++ 中,虽然同样支持使用双引号或尖括号来包含头文件,
但是使用双引号时会首先在当前目录中查找头文件,如果没有找到才会到系统目录中查找。
而 iostream 这个头文件不是一个标准库头文件,
而是 C++ 的输入输出库的头文件,通常位于系统目录中,
因此在 C++ 中一般要写成 #include <iostream>。
*/
#include "string"

int main() {
    std::string input_string;
    std::getline(std::cin, input_string);
    std::cout << input_string << std::endl;
    return 0;
}

Tips:

  1. int main() { }:这是C++程序的入口,也是程序的主函数,其中花括号{}内是主函数的代码块。

  2. std::string input_string;:定义了一个名为input_string的字符串变量,类型为std::string。此时input_string还未被初始化,其内容为空。

  3. std::cout << “请输入字符串:” << std::endl;:使用std::cout对象向控制台输出提示信息"请输入字符串:" 。<<运算符是C++中用于向流中插入数据的运算符,其后紧跟要插入的数据。

  4. std::getline(std::cin, input_string);:从控制台读取一行字符串并存储到input_string变量中。std::getline()函数用于从指定的输入流中读取一行字符串,其中std::cin是C++标准输入流对象,表示从控制台读取输入。

  5. std::cout << “您输入的字符串是:” << input_string << std::endl;:使用std::cout对象输出读取到的字符串,同时也向控制台输出提示信息"您输入的字符串是:" 。<<运算符用于将多个数据插入到流中,这里将提示信息和读取到的字符串一同输出。

  6. 主函数执行结束,返回0表示程序正常结束。

  7. 与 std::endl 相似的另一个符号是 \n,它也可以表示“换行符”。但是,与 std::endl 不同的是,\n 只是简单地插入换行符,而不会强制刷新缓冲区。在某些情况下,如果输出数据不足以填满缓冲区,缓冲区将不会刷新,并且数据将保留在缓冲区中,直到刷新操作发生或缓冲区被关闭。

  8. std::cin 是 C++ 标准库中的标准输入流对象,用于从标准输入设备(通常是键盘)读取数据。在上述代码中,std::getline() 函数使用 std::cin 对象从控制台读取用户输入的一行字符串,并将其存储到 input_string 变量中。

  9. 与 std::cin 类似的还有 std::cout 对象,它是标准输出流对象,用于向标准输出设备(通常是控制台)输出数据。

  10. std::cin 和 std::cout 对象是 C++ 标准库中常用的输入输出对象,它们提供了一种方便和可移植的方法来处理输入和输出。在 C++ 中,标准库定义了许多输入输出对象和函数,它们可以用于处理各种输入输出操作。

  11. 在 C++ 中,std 是一个命名空间(namespace),它包含了大量的 C++ 标准库函数和对象。命名空间是 C++ 中的一种机制,它用于避免命名冲突和代码混淆。

    由于 C++ 标准库中定义了大量的函数和对象,这些函数和对象可能与用户自己编写的代码中的函数和对象名称相同。如果不使用命名空间,就会发生命名冲突,导致编译错误或运行时错误。

    因此,在 C++ 中,使用命名空间可以将相同名称的函数和对象分组,并通过命名空间限定符(::)来区分它们。在上述代码中,std::string 表示 std 命名空间中的 string 类型,用于存储和操作字符串数据。使用命名空间限定符 std:: 可以让编译器知道我们要使用的是 C++ 标准库中的 string 类型,而不是用户自定义的类型或其他可能存在的类型。

Python写法:

print(input());

Tips:
我愿称之为史上最简洁代码!!!

PHP写法:

<?php
$input_string = readline();
echo $input_string . "\n";
?>

Tips:
在 PHP 中,内置函数名是不区分大小写的,所以 readline() 和 readLine() 实际上是等效的。因此,无论是使用 readline() 还是 readLine(),都可以成功地调用该函数。

在 PHP 中,变量名、函数名和类名都是区分大小写的。如果将变量名或函数名拼写错误,PHP 解释器将无法识别该变量或函数,从而导致错误。因此,在 PHP 中,应该始终使用正确的拼写和大小写来命名变量、函数和类。

完成啦…明天再见辣嘿嘿
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值