用简单的c语言设计一个背单词计划函数
时间: 2023-06-13 09:07:21 浏览: 68
好的,以下是一个简单的背单词计划函数的设计:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void vocabPlan(int numWords, int numDays) {
int i, j, k, wordsPerDay;
int *words; // 动态分配单词数组
srand(time(NULL)); // 随机数种子
// 计算每天要背多少单词
wordsPerDay = numWords / numDays;
if (numWords % numDays != 0) {
wordsPerDay++; // 如果不能整除,每天背的单词数加 1
}
// 分配单词数组的内存空间
words = (int *)malloc(sizeof(int) * numWords);
if (words == NULL) { // 内存分配失败
printf("Memory allocation failed.\n");
return;
}
// 随机生成单词数组内容
for (i = 0; i < numWords; i++) {
words[i] = i + 1; // 初始化单词数组为 1~numWords
}
for (i = 0; i < numWords; i++) {
j = rand() % numWords; // 随机生成一个位置
k = words[i];
words[i] = words[j];
words[j] = k; // 交换位置
}
// 输出背单词计划
printf("Vocabulary Plan:\n");
for (i = 0; i < numDays; i++) {
printf("Day %d: ", i + 1);
for (j = i * wordsPerDay; j < (i + 1) * wordsPerDay && j < numWords; j++) {
printf("%d ", words[j]); // 输出每天要背的单词
}
printf("\n");
}
// 释放单词数组内存
free(words);
}
```
这个函数接受两个参数:`numWords` 表示要背的单词总数,`numDays` 表示要分多少天背完这些单词。函数会先计算每天需要背多少单词,然后随机生成一个包含所有单词的数组,并将数组中的单词随机打乱。最后,函数会输出每天要背的单词列表。
需要注意的是,这个函数使用了动态内存分配来分配单词数组的内存空间,因此需要在使用完毕后记得调用 `free()` 函数释放内存。如果内存分配失败,函数会输出一条错误信息并直接返回。