写一个可以输入人名的C语言代码
时间: 2024-10-17 08:13:29 浏览: 24
当然,这里是一个简单的C语言程序,它会提示用户输入名字,然后输出欢迎语。你可以根据需要修改输出内容。
```c
#include <stdio.h> // 引入标准输入输出库
// 主函数
int main() {
char userName[50]; // 定义一个足够大的字符数组来存放名字
printf("请输入你的名字: "); // 提示用户输入
fgets(userName, sizeof(userName), stdin); // 使用fgets获取用户输入,包括换行符
// 删除最后的换行符,因为fgets默认会包含这个
userName[strcspn(userName, "\n")] = '\0';
printf("你好, %s! 欢迎来到我们的世界.\n", userName); // 根据输入的名字输出欢迎语
return 0;
}
```
在这个程序里,我们使用了`fgets`来接收用户输入的名字,直到遇到换行符为止。`strcspn`函数用来找到字符串中的第一个终止符,这里就是`\n`。
相关问题
能否提供一个C语言编程中制作动态爱心形状并可以显示特定人名的代码示例?
C语言本身并不是最适合做这种图形化的编程语言,因为它缺乏标准库支持复杂的图形绘制。不过,如果你想在控制台输出一个包含特定人名的心形,并保持基本的动态效果,例如滚动显示人名,你可以结合循环和字符串处理来实现。这里有一个简化的示例,它会在屏幕上显示“LOVE”字符替换为用户输入的人名,然后逐字母移动爱心:
```c
#include <stdio.h>
#include <string.h>
#define NAME_LENGTH 8 // 假设名字的最大长度
#define HEART_WIDTH 10
void draw_heart(char name[]) {
char heart[HEART_WIDTH] = "**********";
int i, j;
for (i = 0; i < NAME_LENGTH; i++) {
// 将每个字符插入到心形中间
for (j = 0; j < HEART_WIDTH; j++) {
if (heart[j] != '*') {
continue;
}
if (i == 0 && j > (HEART_WIDTH / 2 - strlen(name) / 2)) {
heart[j] = name[i];
} else if (i == NAME_LENGTH - 1 && j < (HEART_WIDTH / 2 + strlen(name) / 2)) {
heart[j] = name[i];
} else {
heart[j] = ' ';
}
}
// 显示更新后的爱心
printf("%s\n", heart);
// 移动爱心,这里简单地向右移动一个字符
for (j = 0; j < HEART_WIDTH; j++) {
if (heart[j] != ' ') {
heart[j] = ' ';
}
heart[j - 1] = heart[j];
}
}
}
int main() {
char name[NAME_LENGTH + 1]; // 包含名字的空间
printf("请输入你的名字(不超过%lu个字符):", NAME_LENGTH);
fgets(name, NAME_LENGTH + 1, stdin); // 获取用户输入
name[strlen(name) - 1] = '\0'; // 去掉换行符
draw_heart(name);
return 0;
}
```
研究文学的人通常需要统计一篇文章【用英文写】中某个人名、地名或形容词出现的次数和位置,请帮我写一个统计系统,完成以下功能,其中文章存放在一个名为wen.txt的文件中,要查找的人名,地名和形容词一次性输入在另一个名为cha.txt的文本文件中,要求系统读取wen.txt和cha.txt这两个文件并运行一次,全部统计完成,并把结果存放在文件result.txt中,并且统计所有查找对象出现的概率 使用基于c语言的代码
好的,我可以为你编写一个基于C语言的统计系统。以下是代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_WORD_LEN 50
#define MAX_FILE_LEN 100000
typedef struct {
char word[MAX_WORD_LEN];
int count;
int *positions;
int pos_count;
double probability;
} Word;
typedef struct {
Word *words;
int count;
} WordList;
int count_words(char *str, char *word) {
int count = 0;
char *pos = str;
while ((pos = strstr(pos, word)) != NULL) {
count++;
pos += strlen(word);
}
return count;
}
WordList *load_word_list(char *filename) {
FILE *fp = fopen(filename, "r");
if (fp == NULL) {
printf("Failed to open file: %s\n", filename);
exit(1);
}
char buf[MAX_WORD_LEN];
WordList *word_list = (WordList *)malloc(sizeof(WordList));
word_list->words = (Word *)malloc(sizeof(Word));
word_list->count = 0;
while (fgets(buf, MAX_WORD_LEN, fp) != NULL) {
buf[strcspn(buf, "\r\n")] = '\0'; // remove newline characters
word_list->words = (Word *)realloc(word_list->words, (word_list->count + 1) * sizeof(Word));
strcpy(word_list->words[word_list->count].word, buf);
word_list->words[word_list->count].count = 0;
word_list->words[word_list->count].positions = NULL;
word_list->words[word_list->count].pos_count = 0;
word_list->words[word_list->count].probability = 0.0;
word_list->count++;
}
fclose(fp);
return word_list;
}
void count_words_in_file(char *filename, WordList *word_list) {
FILE *fp = fopen(filename, "r");
if (fp == NULL) {
printf("Failed to open file: %s\n", filename);
exit(1);
}
char *file_contents = (char *)malloc(MAX_FILE_LEN);
fread(file_contents, 1, MAX_FILE_LEN, fp);
fclose(fp);
// count occurrences of each word in the file
char *pos = file_contents;
while (*pos != '\0') {
for (int i = 0; i < word_list->count; i++) {
int count = count_words(pos, word_list->words[i].word);
if (count > 0) {
word_list->words[i].count += count;
word_list->words[i].positions = (int *)realloc(word_list->words[i].positions, (word_list->words[i].pos_count + count) * sizeof(int));
char *word_pos = strstr(pos, word_list->words[i].word);
for (int j = 0; j < count; j++) {
word_list->words[i].positions[word_list->words[i].pos_count] = word_pos - file_contents;
word_list->words[i].pos_count++;
word_pos += strlen(word_list->words[i].word);
}
}
}
pos++;
}
free(file_contents);
}
void calculate_probabilities(WordList *word_list, int total_words) {
for (int i = 0; i < word_list->count; i++) {
word_list->words[i].probability = (double)word_list->words[i].count / total_words;
}
}
void write_results_to_file(char *filename, WordList *word_list, int total_words) {
FILE *fp = fopen(filename, "w");
if (fp == NULL) {
printf("Failed to open file: %s\n", filename);
exit(1);
}
for (int i = 0; i < word_list->count; i++) {
fprintf(fp, "%s:\n", word_list->words[i].word);
fprintf(fp, "\tCount: %d\n", word_list->words[i].count);
fprintf(fp, "\tPositions: ");
for (int j = 0; j < word_list->words[i].pos_count; j++) {
fprintf(fp, "%d", word_list->words[i].positions[j]);
if (j < word_list->words[i].pos_count - 1) {
fprintf(fp, ", ");
}
}
fprintf(fp, "\n");
fprintf(fp, "\tProbability: %.2f%%\n", word_list->words[i].probability * 100);
}
fprintf(fp, "Total words: %d\n", total_words);
fclose(fp);
}
int main() {
WordList *word_list = load_word_list("cha.txt");
count_words_in_file("wen.txt", word_list);
int total_words = 0;
for (int i = 0; i < word_list->count; i++) {
total_words += word_list->words[i].count;
}
calculate_probabilities(word_list, total_words);
write_results_to_file("result.txt", word_list, total_words);
printf("Done!\n");
return 0;
}
```
这个程序定义了一个 `Word` 结构体,用于存储一个单词的信息,包括单词本身、出现次数、出现位置等。`WordList` 结构体则用于存储所有要查找的单词,包括它们的出现次数和位置。程序从两个文件中读取要查找的单词和要搜索的文章,然后统计所有单词在文章中的出现次数和位置,并计算每个单词出现的概率,最后将结果写入到一个名为 `result.txt` 的文件中。
阅读全文