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

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

写在前面

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

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

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

题目描述

核心知识点

这道题主要考察:

  • 整数的输入输出
  • 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. 混合输入输出 - 综合运用

学习建议

  • 每道题都要自己动手敲一遍代码
  • 尝试用不同的方法解决同一个问题
  • 注意输入输出的格式,细节决定成败
  • 遇到问题先看报错信息,学会调试
相关推荐
203号居民42 分钟前
LeetCode hot 100 —560. 和为 K 的子数组
java·算法·leetcode
退休倒计时1 小时前
【每日一题】LeetCode 20. 有效的括号 TypeScript
算法·leetcode·职场和发展·typescript
文心快码BaiduComate1 小时前
光本位联合文心快码打造面向光电芯片研发的全栈AI Agent Lightmate
算法
一次旅行1 小时前
ViT/CLIP/LLaVA/GPT-4V/VideoLLM多模态架构全解:原理仿真+工业落地选型+完整推理代码
人工智能·算法·架构
神明不懂浪漫2 小时前
【第五章】队列
开发语言·数据结构·经验分享·笔记·算法
happy_baymax2 小时前
MATLAB MCP Server+ MATLAB Agentic Toolkit+Simulink Agentic Toolkit自动更新批处理文件.ps1
人工智能·算法
神明不懂浪漫3 小时前
【第六章】二叉树
开发语言·数据结构·经验分享·笔记·算法
橘和柠3 小时前
知识图谱实战(一):数据采集与实体关系抽取(完整代码)
算法
Mem0rin3 小时前
前缀和:中心下标与数组乘积
数据结构·算法
windliang3 小时前
Claude Code 源码分析(八):Memory 如何被写入、整理与按需召回
前端·算法·面试