目录
题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
C 语言实现
方法 1: 定义 length() 函数
首先,length
函数的定义应该在 main
函数之前,或者在 main
函数之前进行函数声明。其次,scanf
函数在读取字符串时没有限制输入长度,可能会导致缓冲区溢出。最后,建议在输出字符串长度时添加换行符以提高可读性。
#include <stdio.h>
#include <stdlib.h>
// 函数声明
int length(char *s);
int main()
{
int len;
char str[20];
printf("请输入字符串:\n");
scanf("%19s", str); // 限制输入长度,防止缓冲区溢出
len = length(str);
printf("字符串有 %d 个字符。\n", len); // 添加换行符
return 0; // 返回 0 表示程序正常结束
}
// 求字符串长度
int length(char *s)
{
int i = 0;
while (*s != '\0')
{
i++;
s++;
}
return i;
}
- 函数声明:在
main
函数之前声明length
函数,以便编译器知道它的存在。 - 输入限制:在
scanf
中使用%19s
,这样可以限制输入的最大长度为 19 个字符,留出一个字符的位置给字符串结束符\0
。 - 换行符:在输出字符串长度时添加了换行符
\n
,使输出更整洁。 - 返回值:在
main
函数的末尾添加了return 0;
,表示程序正常结束。
方法 2: 使用 strlen() 函数
C 语言标准库中已经提供了一个函数 strlen
,可以用来计算字符串的长度。使用 strlen
可以使代码更加简洁和易读。
#include <stdio.h>
#include <string.h> // 包含 strlen 函数的头文件
int main()
{
char str[20];
printf("请输入字符串:\n");
scanf("%19s", str); // 限制输入长度,防止缓冲区溢出
int len = strlen(str); // 使用 strlen 函数计算字符串长度
printf("字符串有 %d 个字符。\n", len); // 添加换行符
return 0; // 返回 0 表示程序正常结束
}
- 包含头文件:使用
#include <string.h>
来包含字符串处理函数的头文件。 - 使用
strlen
:直接调用strlen
函数来计算字符串的长度,简化了代码。
方法 3: 指针遍历
#include <stdio.h>
int length(char *s) {
char *p = s; // 使用指针遍历
while (*p) {
p++;
}
return p - s; // 返回指针差值,即长度
}
int main() {
char str[20];
printf("请输入字符串:\n");
scanf("%19s", str);
int len = length(str);
printf("字符串有 %d 个字符。\n", len);
return 0;
}
Python 实现
方法 1: 使用 length() 函数
def length(s):
return len(s)
def main():
str_input = input("请输入字符串:\n") # 获取用户输入
len_str = length(str_input) # 计算字符串长度
print(f"字符串有 {len_str} 个字符。") # 打印字符串长度
if __name__ == "__main__":
main() # 调用主函数
- 函数定义:
length(s)
使用 Python 内置的len()
函数来计算字符串的长度。 - 主函数:
- 使用
input()
函数获取用户输入的字符串。 - 调用
length
函数计算字符串长度。 - 使用
print()
函数输出字符串的长度。
- 使用
方法 2: 使用循环
def length(s):
count = 0
for char in s:
count += 1
return count
def main():
str_input = input("请输入字符串:\n") # 获取用户输入
len_str = length(str_input) # 计算字符串长度
print(f"字符串有 {len_str} 个字符。") # 打印字符串长度
if __name__ == "__main__":
main() # 调用主函数
方法 3: 使用 map()
和 sum()
def length(s):
return sum(map(lambda x: 1, s)) # 对每个字符返回 1,然后求和
def main():
str_input = input("请输入字符串:\n") # 获取用户输入
len_str = length(str_input) # 计算字符串长度
print(f"字符串有 {len_str} 个字符。") # 打印字符串长度
if __name__ == "__main__":
main() # 调用主函数
方法 4: 使用 collections.Counter
from collections import Counter
def length(s):
return sum(Counter(s).values()) # 统计字符出现次数并求和
def main():
str_input = input("请输入字符串:\n") # 获取用户输入
len_str = length(str_input) # 计算字符串长度
print(f"字符串有 {len_str} 个字符。") # 打印字符串长度
if __name__ == "__main__":
main() # 调用主函数
Java 实现
方法 1: 使用 length() 函数实现
import java.util.Scanner;
public class StringLength {
// 计算字符串长度的方法
public static int length(String s) {
return s.length(); // 使用 String 类的 length() 方法
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // 创建 Scanner 对象以获取用户输入
System.out.println("请输入字符串:"); // 提示用户输入
String strInput = scanner.nextLine(); // 读取用户输入的字符串
int lenStr = length(strInput); // 计算字符串长度
System.out.printf("字符串有 %d 个字符。\n", lenStr); // 打印字符串长度
scanner.close(); // 关闭 Scanner 对象
}
}
- 导入 Scanner 类:
import java.util.Scanner;
用于获取用户输入。 - 类定义:
public class StringLength
定义了一个名为StringLength
的公共类。 - 计算字符串长度的方法:
public static int length(String s)
使用String
类的length()
方法来计算字符串的长度。 - 主方法:
- 创建
Scanner
对象以读取用户输入。 - 使用
nextLine()
方法读取整行输入。 - 调用
length
方法计算字符串长度。 - 使用
System.out.printf
打印字符串的长度。 - 最后,关闭
Scanner
对象以释放资源。
- 创建
方法 2: 使用循环
您可以手动遍历字符串中的每个字符并计数:
import java.util.Scanner;
public class StringLength {
// 计算字符串长度的方法
public static int length(String s) {
int count = 0;
for (char c : s.toCharArray()) { // 将字符串转换为字符数组
count++;
}
return count;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入字符串:");
String strInput = scanner.nextLine();
int lenStr = length(strInput);
System.out.printf("字符串有 %d 个字符。\n", lenStr);
scanner.close();
}
}
方法 3: 使用 StringBuilder
您可以使用 StringBuilder
来构建字符串并计算长度:
import java.util.Scanner;
public class StringLength {
// 计算字符串长度的方法
public static int length(String s) {
StringBuilder sb = new StringBuilder(s);
int count = 0;
while (sb.length() > 0) {
sb.deleteCharAt(0); // 删除第一个字符
count++;
}
return count;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入字符串:");
String strInput = scanner.nextLine();
int lenStr = length(strInput);
System.out.printf("字符串有 %d 个字符。\n", lenStr);
scanner.close();
}
}
方法 4: 使用 Stream
API
如果您使用的是 Java 8 或更高版本,可以使用 Stream
API 来计算字符串的长度:
import java.util.Scanner;
public class StringLength {
// 计算字符串长度的方法
public static int length(String s) {
return (int) s.chars().count(); // 使用 Stream API 计算字符数量
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入字符串:");
String strInput = scanner.nextLine();
int lenStr = length(strInput);
System.out.printf("字符串有 %d 个字符。\n", lenStr);
scanner.close();
}
}
Js 实现
// 计算字符串长度的函数
function length(s) {
let count = 0;
for (let char of s) {
count++;
}
return count;
}
// 主函数
function main() {
const strInput = prompt("请输入字符串:"); // 获取用户输入
const lenStr = length(strInput); // 计算字符串长度
console.log(`字符串有 ${lenStr} 个字符。`); // 打印字符串长度
}
// 调用主函数
main();
- 计算字符串长度的函数:
function length(s)
使用for...of
循环遍历字符串中的每个字符并计数。 - 主函数:
- 使用
prompt()
函数获取用户输入的字符串。 - 调用
length
函数计算字符串长度。 - 使用
console.log()
打印字符串的长度。
- 使用