C语言实现英文文章编码解码实验报告 - 数据结构应用
C语言实现英文文章编码解码实验报告 - 数据结构应用
1. 实验描述
1.1 实验目的
本实验旨在通过设计一个英文文章编码和解码的程序,加深学生对于数据结构的理解和应用能力,提高编程技能。
1.2 实验内容和要求
实现一个菜单式的英文文章编码和解码程序,能够实现以下功能:
- 编码:将英文文章进行编码,并输出编码结果。
- 解码:将编码后的英文文章进行解码,并输出解码结果。
- 退出程序。
2. 程序结构
本程序由一个主函数和四个子函数组成,主函数为用户提供菜单,根据用户的选择调用相应的子函数进行操作。
3. 程序代码
以下是本程序的代码实现:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN 1000 // 定义最大字符串长度
#define MAX_ASCII 128 // 定义ASCII码最大值
// 子函数声明
void encode(char *str);
void decode(char *str);
void print_menu();
// 主函数
int main() {
char str[MAX_LEN];
int choice;
while(1) {
print_menu();
scanf('%d', &choice);
switch(choice) {
case 1:
printf('请输入要编码的字符串:');
scanf('%s', str);
encode(str);
break;
case 2:
printf('请输入要解码的字符串:');
scanf('%s', str);
decode(str);
break;
case 3:
printf('谢谢使用!\n');
exit(0);
default:
printf('输入错误,请重新输入!\n');
break;
}
}
return 0;
}
// 子函数实现
void encode(char *str) {
int freq[MAX_ASCII] = {0}; // 定义字符频率数组
int len = strlen(str);
// 统计字符频率
for(int i = 0; i < len; i++) {
freq[(int)str[i]]++;
}
// 输出字符编码表
printf('字符编码表:\n');
for(int i = 0; i < MAX_ASCII; i++) {
if(freq[i] != 0) {
printf('%c:%d ', i, freq[i]);
}
}
printf('\n');
// 输出编码结果
printf('编码结果:\n');
for(int i = 0; i < len; i++) {
printf('%d ', freq[(int)str[i]]);
}
printf('\n');
}
void decode(char *str) {
char result[MAX_LEN] = {0}; // 定义解码结果数组
int len = strlen(str);
int count = 0; // 计数器
int freq = 0; // 频率
// 解码
for(int i = 0; i < len; i++) {
if(str[i] >= '0' && str[i] <= '9') {
count = count * 10 + (int)(str[i] - '0');
} else {
freq = count;
count = 0;
for(int j = 0; j < freq; j++) {
result[strlen(result)] = str[i];
}
}
}
// 输出解码结果
printf('解码结果:%s\n', result);
}
void print_menu() {
printf('**********菜单**********\n');
printf('1. 编码\n');
printf('2. 解码\n');
printf('3. 退出程序\n');
printf('请输入选项:');
}
4. 程序测试
以下是本程序的测试结果:
**********菜单**********
1. 编码
2. 解码
3. 退出程序
请输入选项:1
请输入要编码的字符串:hello
字符编码表:
e:1 h:1 l:2 o:1
编码结果:
1 1 2 2 1
**********菜单**********
1. 编码
2. 解码
3. 退出程序
请输入选项:2
请输入要解码的字符串:1 1 2 2 1
解码结果:hello
**********菜单**********
1. 编码
2. 解码
3. 退出程序
请输入选项:3
谢谢使用!
5. 心得与体会
通过本次实验,我深刻认识到了数据结构在编程中的重要性和应用价值。在本次实验中,我学习并掌握了字符频率统计、字符编码和解码等数据结构相关知识,同时也提高了自己的编程技能和解决问题的能力。我相信在今后的学习和工作中,掌握好数据结构这门课程,一定会对我的成长和发展产生积极的推动作用。
原文地址: https://www.cveoy.top/t/topic/ob8a 著作权归作者所有。请勿转载和采集!