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

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

核心知识点
这道题主要考察:
- 整数的输入输出
- 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 语言中使用
scanf和printf进行输入输出 - 注意输出格式,空格和换行符不要漏掉
第二题:牛牛学说话之-浮点数
题目链接: 牛牛学说话之-浮点数
题目描述
牛牛刚刚学会了浮点数,感觉很神奇。你能帮他输出浮点数吗?
输入一个浮点数 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 中使用
printf或String.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 语言中
fgets比scanf更安全,可以防止缓冲区溢出 - 注意
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()消耗掉多余的换行符 - 这道题是"复读机",就是把输入原样输出,但要注意格式
总结
恭喜你完成了算法入门的第一步!这四道题虽然简单,但涵盖了编程中最基础的输入输出操作:
- 整数输入输出 - 最基础的数据类型
- 浮点数输入输出 - 学会控制精度
- 字符串输入输出 - 处理文本数据
- 混合输入输出 - 综合运用
学习建议
- 每道题都要自己动手敲一遍代码
- 尝试用不同的方法解决同一个问题
- 注意输入输出的格式,细节决定成败
- 遇到问题先看报错信息,学会调试