c语言 写一个函数int slen(char *s),返回值为字符串s的长度。要求在主函数中输入一个长度不大于20的字符串,调用函数slen,输出字符串对应的长度。 输入: hello world 输出: 11(空格算作有效字符)
时间: 2024-02-27 18:57:23 浏览: 121
这是一个比较简单的字符串操作题,只需要遍历字符串,记录字符个数即可。以下是对应的函数实现:
```c
int slen(char *s) {
int len = 0;
while (*s != '\0') {
len++;
s++;
}
return len;
}
```
使用时,先读入字符串,然后调用该函数获取长度,最后输出结果:
```c
int main() {
char str[21];
scanf("%s", str);
printf("%d\n", slen(str));
return 0;
}
```
希望能够对你有所帮助!
相关问题
1.分别用循环结构和递归求字符串S的长度. 函数:int Slen(char*s).
当然可以。下面是用循环结构和递归结构分别实现求字符串S长度的函数。
**循环结构实现**
在循环结构中,我们可以遍历字符串的每个字符,直到遇到字符串的结尾(null字符)。以下是C语言的实现:
```c
#include <stdio.h>
int Slen(char* s) {
int len = 0;
while(*s != '\0') {
len++;
s++;
}
return len;
}
```
在这个函数中,我们使用了一个while循环,只要字符串s中还有字符,就增加长度计数器len的值,并将指针s向后移动一位。当遇到字符串结尾的null字符时,循环结束,返回长度。
**递归结构实现**
递归结构通常用于解决一些可以直接或间接地分解为更小的问题的情况。对于求字符串长度的问题,我们可以将问题分解为求单个字符的长度,再将这些长度累加起来。以下是C语言的递归实现:
```c
#include <stdio.h>
int Slen(char* s) {
if(*s == '\0') { // 基本情况:字符串为空,长度为0
return 0;
} else {
return 1 + Slen(s+1); // 递归情况:字符串非空,当前字符的长度为1,加上下一个字符的长度即可
}
}
```
在这个函数中,我们首先检查字符串是否为空。如果是,则返回0(空字符串的长度为0)。否则,我们将当前字符的长度设为1(因为一个字符的长度总是1),然后递归地计算下一个字符的长度并加到总长度上。当所有字符都被处理完时,递归结束,返回总长度。
1.分别用循环结构和递归求字符串S的长度. 函数:int Slen(char*s). c++
好的,以下是用循环结构和递归结构分别求字符串S长度的C++函数:
循环结构:
```cpp
int Slen(char* s) {
int len = 0;
while (*s != '\0') {
len++;
s++;
}
return len;
}
```
这个函数使用了一个while循环,当字符串指针s指向字符串的末尾时,循环结束。在循环过程中,每次将指针s向后移动一位,直到到达字符串的末尾。在每次循环中,将长度len加一,最后返回长度len。
递归结构:
```cpp
int Slen(char* s) {
if (s == '\0') { // 如果指针s指向空字符串,返回0
return 0;
} else {
return 1 + Slen(s + 1); // 否则返回当前字符的ASCII码值加上下一个字符的长度
}
}
```
这个函数也使用了一个if语句来检查指针s是否指向空字符串。如果是空字符串,函数返回0。否则,它将当前字符的ASCII码值加上下一个字符的长度,并递归调用自身来计算下一个字符的长度。递归调用将指针s向后移动一位,直到到达字符串的末尾。最后返回递归调用的结果。
这两个函数都可以用来求字符串S的长度,但递归结构通常比循环结构更简洁和高效,特别是当字符串较短时。不过对于较大的字符串,循环结构可能更适合实现。
阅读全文