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

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

写在前面

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

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

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

题目描述

核心知识点

这道题主要考察:

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

学习建议

  • 每道题都要自己动手敲一遍代码
  • 尝试用不同的方法解决同一个问题
  • 注意输入输出的格式,细节决定成败
  • 遇到问题先看报错信息,学会调试
相关推荐
为何创造硅基生物15 小时前
C 语言 typedef 结构体私有化
c语言·开发语言·算法
yzx99101315 小时前
递归算法入门:像俄罗斯套娃一样思考
人工智能·算法
心中有国也有家15 小时前
从零上手 CANN 学习中心:像逛技术便利店一样学昇腾
学习·算法·开源
oo哦哦15 小时前
搜索矩阵系统的最短路密码:用Dijkstra算法和网络流理论,解释为什么你做了1000个关键词,流量还不如别人30个
网络·算法·矩阵
Matlab程序猿小助手15 小时前
【MATLAB源码-第319期】基于matlab的帝王蝶优化算法(MBO)无人机三维路径规划,输出做短路径图和适应度曲线.
开发语言·算法·matlab
图码16 小时前
二分查找进阶:如何在有序数组中快速找到Upper Bound?
数据结构·算法·面试·分类·柔性数组
试剂界的爱马仕16 小时前
《古董局·终局5:潮生》第 2 章:镜子的天赋
大数据·人工智能·算法
Cthy_hy16 小时前
树状数组(BIT)进阶:差分优化实现区间修改、区间查询
数据结构·python·算法
YsyaaabB16 小时前
ACM 模式通用代码模板
java·c++·python·算法
ComputerInBook17 小时前
Euclid 几何变换——仿射(affine)变换
算法·仿射变换·几何变换