c语言编辑程序统计单词数量
时间: 2023-12-16 16:02:21 浏览: 173
以下是一个C语言编辑程序统计单词数量的例子:
```c
#include <stdio.h>
#include <ctype.h>
#define IN 1
#define OUT 0
void countWords() {
int c, nl, nw, nc, state;
state = OUT;
nl = nw = nc = 0;
while ((c = getchar()) != EOF) {
++nc;
if (isspace(c)) {
state = OUT;
if (c == '\n') {
++nl;
}
} else if (state == OUT) {
state = IN;
++nw;
}
}
printf("Lines: %d, Words: %d, Characters: %d\n", nl, nw, nc);
}
int main() {
countWords();
return 0;
}
```
该程序通过遍历输入的字符,统计行数、单词数和字符数。其中,单词数的统计是通过判断当前字符是否为空格或换行符,以及前一个字符是否为单词字符来实现的。
相关问题
帮我用c语言写一个单词本程序:用文本存储单词基本信息,英文、词性、中文解释等。选择词库维护编辑单词本 信息,实现增加、修改、删除、补充(单词已有,补充新的释义)的功能。 (3)单词背诵及成绩统计:选择单词预览进行单词学习。单词背诵时有两种模式选择, 选择题背诵及拼写单词背诵,而且支持多次背诵。答对加十分,答错扣十分,错词计入错题 本。
好的,这是一个比较复杂的程序,需要分步骤实现。首先,我们需要定义一个单词结构体,用于存储单词的基本信息。结构体中包含三个成员:英文单词、词性和中文解释。
```
typedef struct word {
char english[50];
char partOfSpeech[20];
char chinese[100];
} Word;
```
然后,我们需要定义一个单词本结构体,用于存储所有单词的信息。单词本结构体中包含两个成员:单词数量和单词数组。
```
typedef struct wordBook {
int count;
Word words[1000];
} WordBook;
```
接下来,我们可以实现增加、修改、删除和补充单词等功能。我们可以使用文件来存储单词本信息。在程序启动时,我们可以读取文件中的单词信息,然后将其存储到单词本结构体中。
```
void loadWordBook(WordBook* book) {
FILE* fp = fopen("wordbook.txt", "r");
if (fp == NULL) {
book->count = 0;
return;
}
fscanf(fp, "%d", &book->count);
for (int i = 0; i < book->count; i++) {
fscanf(fp, "%s %s %[^\n]s", book->words[i].english, book->words[i].partOfSpeech, book->words[i].chinese);
}
fclose(fp);
}
```
增加单词的功能可以通过向单词本结构体中添加一个新的单词实现。
```
void addWord(WordBook* book, Word word) {
book->words[book->count] = word;
book->count++;
saveWordBook(book);
}
```
修改单词的功能可以通过查找单词本结构体中指定位置的单词并对其进行修改实现。
```
void modifyWord(WordBook* book, int index, Word word) {
book->words[index] = word;
saveWordBook(book);
}
```
删除单词的功能可以通过将单词本结构体中指定位置的单词删除并将后面的单词前移实现。
```
void deleteWord(WordBook* book, int index) {
for (int i = index; i < book->count - 1; i++) {
book->words[i] = book->words[i + 1];
}
book->count--;
saveWordBook(book);
}
```
补充单词的功能可以通过查找单词本结构体中指定位置的单词并在其后面添加一个新的解释实现。
```
void supplementWord(WordBook* book, int index, char* chinese) {
strcat(book->words[index].chinese, "; ");
strcat(book->words[index].chinese, chinese);
saveWordBook(book);
}
```
接下来,我们可以实现单词背诵及成绩统计的功能。我们可以使用随机数来选择一些单词进行背诵。在每次背诵单词时,我们可以随机选择一种背诵模式,然后根据用户的答案给出相应的分数。
```
void studyWord(WordBook* book) {
int count = 0, score = 0, wrong_count = 0;
int index[100];
for (int i = 0; i < 100; i++) {
int random_index = rand() % book->count;
index[i] = random_index;
}
for (int i = 0; i < 100; i++) {
int random_mode = rand() % 2;
char answer[100];
if (random_mode == 0) {
printf("What is the part of speech of the word '%s'?\n", book->words[index[i]].english);
scanf("%s", answer);
if (strcmp(answer, book->words[index[i]].partOfSpeech) == 0) {
printf("Correct!\n");
score += 10;
}
else {
printf("Wrong! The answer is '%s'.\n", book->words[index[i]].partOfSpeech);
score -= 10;
wrong_count++;
}
}
else {
printf("Spell the word '%s'.\n", book->words[index[i]].chinese);
scanf("%s", answer);
if (strcmp(answer, book->words[index[i]].english) == 0) {
printf("Correct!\n");
score += 10;
}
else {
printf("Wrong! The answer is '%s'.\n", book->words[index[i]].english);
score -= 10;
wrong_count++;
}
}
}
printf("You have answered %d words correctly and %d words incorrectly.\n", 100 - wrong_count, wrong_count);
printf("Your score is %d.\n", score);
}
```
最后,我们需要实现保存单词本信息的功能。在程序结束时,我们可以将单词本结构体中的信息写入文件中。
```
void saveWordBook(WordBook* book) {
FILE* fp = fopen("wordbook.txt", "w");
fprintf(fp, "%d\n", book->count);
for (int i = 0; i < book->count; i++) {
fprintf(fp, "%s %s %s\n", book->words[i].english, book->words[i].partOfSpeech, book->words[i].chinese);
}
fclose(fp);
}
```
以上就是一个简单的单词本程序的实现。完整代码如下:
阅读全文