【算法新手入门】基本数据类型

  • 大家好,我是程序员良辰,本文是笔试黑科技专栏的文章,帮助算法零基础的同学快速入门。题目来自牛客网算法学习篇,难度友好,适合新手练习。
  • 牛客网的算法新手入门专栏

写在前面

学算法就像学说话,得从最基础的开始。今天我们要学的是"牛牛学说话"系列,别看名字萌萌的,这可是打基础的关键一步。这四道题都来自牛客网的算法学习篇,点击链接就能直接跳转练习。

第一题:牛牛学说话之-整数

题目链接: 牛牛学说话之-整数

题目描述

核心知识点

这道题主要考察:

  • 整数的输入输出
  • Scanner 类的使用
  • 基本的 I/O 操作

Java 解法

java 复制代码
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        
        // 读取整数
        int a = in.nextInt();
        int b = in.nextInt();
        
        // 输出结果
        System.out.println(a + " " + b);
    }
}

C 语言解法

c 复制代码
#include <stdio.h>

int main() {
    int a, b;
    
    // 读取整数
    scanf("%d %d", &a, &b);
    
    // 输出结果
    printf("%d %d\n", a, b);
    
    return 0;
}

小贴士

  • Java 中使用 Scanner 类读取输入,记得导入 java.util.Scanner
  • C 语言中使用 scanfprintf 进行输入输出
  • 注意输出格式,空格和换行符不要漏掉

第二题:牛牛学说话之-浮点数

题目链接: 牛牛学说话之-浮点数

题目描述

牛牛刚刚学会了浮点数,感觉很神奇。你能帮他输出浮点数吗?

输入一个浮点数 n,输出这个浮点数 n。

核心知识点

这道题主要考察:

  • 浮点数的输入输出
  • 浮点数精度控制
  • 格式化输出

Java 解法

java 复制代码
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        
        // 读取浮点数
        double n = in.nextDouble();
        
        // 输出浮点数,保留一位小数
        System.out.printf("%.1f\n", n);
    }
}

C 语言解法

c 复制代码
#include <stdio.h>

int main() {
    double n;
    
    // 读取浮点数
    scanf("%lf", &n);
    
    // 输出浮点数,保留一位小数
    printf("%.1f\n", n);
    
    return 0;
}

小贴士

  • Java 中使用 printfString.format 控制小数位数
  • C 语言中 %.1f 表示保留一位小数
  • double 类型比 float 精度更高,推荐使用

第三题:牛牛学说话之-字符串

题目链接: 牛牛学说话之-字符串

题目描述

会说浮点数之后,牛牛又开始学说字符串了。

输入一个字符串,输出这个字符串。

核心知识点

这道题主要考察:

  • 字符串的输入输出
  • 处理带空格的字符串
  • 字符串的基本操作

Java 解法

java 复制代码
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        
        // 读取一行字符串(包含空格)
        String str = in.nextLine();
        
        // 输出字符串
        System.out.println(str);
    }
}

C 语言解法

c 复制代码
#include <stdio.h>

int main() {
    char str[1000];
    
    // 读取一行字符串(包含空格)
    fgets(str, sizeof(str), stdin);
    
    // 输出字符串
    printf("%s", str);
    
    return 0;
}

小贴士

  • Java 中 nextLine() 可以读取包含空格的整行字符串
  • C 语言中 fgetsscanf 更安全,可以防止缓冲区溢出
  • 注意 fgets 会读取换行符,有时需要手动去除

第四题:复读机

题目链接: 复读机

题目描述

无论输入了什么,你都应该输出你的内容。输出之后以换行符结束。

特别的,对于浮点数,由于浮点数精度问题,你需要输出一位小数点后的数,具体输入输出请参考输入输出。

核心知识点

这道题是前三题的综合应用:

  • 混合数据类型的输入输出
  • 多行输入处理
  • 格式化输出的综合运用

Java 解法

java 复制代码
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        
        // 读取整数
        int a = in.nextInt();
        int b = in.nextInt();
        
        // 读取浮点数
        double c = in.nextDouble();
        
        // 读取字符(注意要先消耗掉换行符)
        in.nextLine();
        char ch = in.nextLine().charAt(0);
        
        // 读取字符串
        String str = in.nextLine();
        
        // 输出结果
        System.out.println(a + " " + b);
        System.out.printf("%.1f\n", c);
        System.out.println(ch);
        System.out.println(str);
    }
}

C 语言解法

c 复制代码
#include <stdio.h>

int main() {
    int a, b;
    double c;
    char ch;
    char str[100];
    
    // 读取整数
    scanf("%d %d", &a, &b);
    
    // 读取浮点数
    scanf("%lf", &c);
    
    // 读取字符(注意要消耗掉换行符)
    getchar();
    scanf("%c", &ch);
    
    // 读取字符串
    getchar();
    fgets(str, sizeof(str), stdin);
    
    // 输出结果
    printf("%d %d\n", a, b);
    printf("%.1f\n", c);
    printf("%c\n", ch);
    printf("%s", str);
    
    return 0;
}

小贴士

  • 混合输入时要特别注意换行符的处理
  • Java 中在 nextInt()nextDouble() 后使用 nextLine() 前,要先调用一次 nextLine() 消耗掉换行符
  • C 语言中可以用 getchar() 消耗掉多余的换行符
  • 这道题是"复读机",就是把输入原样输出,但要注意格式

总结

恭喜你完成了算法入门的第一步!这四道题虽然简单,但涵盖了编程中最基础的输入输出操作:

  1. 整数输入输出 - 最基础的数据类型
  2. 浮点数输入输出 - 学会控制精度
  3. 字符串输入输出 - 处理文本数据
  4. 混合输入输出 - 综合运用

学习建议

  • 每道题都要自己动手敲一遍代码
  • 尝试用不同的方法解决同一个问题
  • 注意输入输出的格式,细节决定成败
  • 遇到问题先看报错信息,学会调试
相关推荐
地平线开发者5 小时前
SparseDrive 模型导出与性能优化实战
算法·自动驾驶
董董灿是个攻城狮5 小时前
大模型连载2:初步认识 tokenizer 的过程
算法
地平线开发者5 小时前
地平线 VP 接口工程实践(一):hbVPRoiResize 接口功能、使用约束与典型问题总结
算法·自动驾驶
罗西的思考6 小时前
AI Agent框架探秘:拆解 OpenHands(10)--- Runtime
人工智能·算法·机器学习
HXhlx9 小时前
CART决策树基本原理
算法·机器学习
Wect9 小时前
LeetCode 210. 课程表 II 题解:Kahn算法+DFS 双解法精讲
前端·算法·typescript
颜酱10 小时前
单调队列:滑动窗口极值问题的最优解(通用模板版)
javascript·后端·算法
Gorway17 小时前
解析残差网络 (ResNet)
算法
拖拉斯旋风17 小时前
LeetCode 经典算法题解析:优先队列与广度优先搜索的巧妙应用
算法
Wect17 小时前
LeetCode 207. 课程表:两种解法(BFS+DFS)详细解析
前端·算法·typescript