/*字符函数之求单词个数 定义单词为一串连续的字母.单词内不含非字母字符. 输入一个字符串,在函数内求串中单词的个数 输入输出样例: hello world total word= 2 程序的主要框架已经给出,请仅在 ********** Begin ********** ********** End *********** 注释对之间的空行中添加你的代码,任何修改该两行注释,以及修改注释外代码均将被判失败 */ #include <math.h> #include <stdio.h> #include <ctype.h> #define N 256 #define BUFSZ N int fun(char *p) { /********** Begin **********/ /********** End ***********/ } void f() { char s[256]; gets(s); printf("total word= %d\n",fun(s)); } int main() { f(); return 0; }
时间: 2023-07-05 14:27:30 浏览: 96
下面是代码实现:
```c
#include <stdio.h>
#include <ctype.h>
int fun(char *p) {
int count = 0, flag = 0;
while (*p) {
if (isalpha(*p)) { // 判断当前字符是否为字母
if (!flag) { // 如果当前字符是一个单词的开头,则单词数加一
flag = 1;
count++;
}
} else {
flag = 0; // 如果当前字符不是字母,则标记为单词结尾
}
p++;
}
return count;
}
void f() {
char s[256];
gets(s);
printf("total word= %d\n", fun(s));
}
int main() {
f();
return 0;
}
```
在上述代码中,我们使用了指针的方式来遍历字符串,用一个标志位flag来标记当前字符是否是一个单词的开头。如果当前字符是字母,则判断是否是单词开头,如果是,则单词数加一。如果当前字符不是字母,则标记为单词结尾。最后返回单词数。
希望能够帮助到你,如果还有其他问题,请随时提出。
相关问题
输入一串对话,统计字符串中的最长单词的字母个数的c语言代码
在 C 语言中,你可以使用标准库函数来解决这个问题。首先需要分割输入的字符串成单个单词,然后遍历找出最长的单词及其长度。以下是一个简单的示例代码:
```c
#include <stdio.h>
#include <ctype.h>
#include <string.h>
// 函数声明
char* longest_word(const char* sentence, int* length);
int main() {
char input[] = "Hello, how are you doing today?"; // 输入的字符串
int word_length = 0; // 存储最长单词长度
char* longest_word_str;
longest_word(input, &word_length);
longest_word_str = malloc(word_length + 1); // 分配内存存储最长单词
if (longest_word_str != NULL) {
strncpy(longest_word_str, input, word_length); // 将最长单词复制到新分配的空间
longest_word_str[word_length] = '\0'; // 添加终止符
printf("The longest word has %d letters: %s\n", word_length, longest_word_str);
free(longest_word_str); // 释放内存
} else {
printf("Error allocating memory for the longest word.\n");
}
return 0;
}
// 找出最长单词及其长度的函数
char* longest_word(const char* sentence, int* length) {
*length = 0;
char current_word[100]; // 假设最大单词长度不超过99个字符
const char* word_start = sentence;
while (*sentence != '\0') { // 遍历整个字符串
if (isalpha(*sentence)) { // 当前字符是字母
if (!*current_word) { // 如果单词未开始,则从当前字符开始
word_start = sentence;
}
current_word[*length++] = tolower(*sentence); // 转换为小写并添加到当前单词
} else if (*current_word) { // 如果遇到非字母字符且有当前单词
*length += 1; // 结束单词计数
current_word[*length] = '\0'; // 添加终止符
if (strlen(current_word) > *length) { // 更新最长单词长度和内容
*length = strlen(current_word);
strncpy(longest_word_str, current_word, *length);
}
current_word[0] = '\0'; // 清空当前单词准备下一次循环
}
sentence++;
}
if (*current_word) { // 如果最后一个是单词
*length += 1; // 结束单词计数
current_word[*length] = '\0';
if (strlen(current_word) > *length) {
*length = strlen(current_word);
strncpy(longest_word_str, current_word, *length);
}
}
return longest_word_str;
}
使用C语言编写以下代码:/*字符函数之求单词个数 定义单词为一串连续的字母.单词内不含非字母字符. 输入一个字符串,在函数内求串中单词的个数 输入输出样例: hello world total word= 2 程序的主要框架已经给出,请仅在 ********** Begin ********** ********** End *********** 注释对之间的空行中添加你的代码,任何修改该两行注释,以及修改注释外代码均将被判失败 */ #include <math.h> #include <stdio.h> #include <ctype.h> #define N 256 #define BUFSZ N int fun(char *p) { /********** Begin **********/ /********** End ***********/ } void f() { char s[256]; gets(s); printf("total word= %d\n",fun(s)); } int main() { f(); return 0; }
#include <math.h>
#include <stdio.h>
#include <ctype.h>
#define N 256
#define BUFSZ N
int fun(char *p) {
int cnt = 0;
while (*p != '\0') {
if (isalpha(*p)) {
// 当前字符是字母,向后扫描直到遇到非字母字符
while (isalpha(*p)) {
p++;
}
cnt++;
} else {
// 当前字符不是字母,跳过
p++;
}
}
return cnt;
}
void f() {
char s[256];
gets(s);
printf("total word= %d\n",fun(s));
}
int main() {
f();
return 0;
}
阅读全文