标点符号课程设计
㈠ 急~关于C语言课程设计用星号构成A~Z字母输出~~~!!!
/* 第一题 */
#include <stdio.h>
#include <string.h>
#define SCREEN_COLS 80 /* how many columns does terminal have */
#define HORIZONTAL_DISTANCE 4 /* horizontal distance between two characters (列距) */
#define VERTICAL_DISTANCE 1 /* vertical distance between two rows of characters (行距) */
#define BRUSH_CHAR ('*')
#define BLANK_CHAR (' ')
/* ASCII_TAB字模中字体的高度和宽度 */
#define FONT_ROWS 7
#define FONT_COLS 5
/* 屏幕每行最多可以显示的字符个数 */
#define CHAR_PER_LINE (SCREEN_COLS/(FONT_COLS + HORIZONTAL_DISTANCE))
// ASCII_TAB[] contains all ASCII characters from sp (32) to z (122)
static const unsigned char ASCII_TAB[][5]= //5*7
{
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, // sp
{ 0x00, 0x00, 0x2f, 0x00, 0x00 }, // !
{ 0x00, 0x07, 0x00, 0x07, 0x00 }, // "
{ 0x14, 0x7f, 0x14, 0x7f, 0x14 }, // #
{ 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, // $
{ 0xc4, 0xc8, 0x10, 0x26, 0x46 }, // %
{ 0x36, 0x49, 0x55, 0x22, 0x50 }, // &
{ 0x00, 0x05, 0x03, 0x00, 0x00 }, // '
{ 0x00, 0x1c, 0x22, 0x41, 0x00 }, // (
{ 0x00, 0x41, 0x22, 0x1c, 0x00 }, // )
{ 0x14, 0x08, 0x3E, 0x08, 0x14 }, // *
{ 0x08, 0x08, 0x3E, 0x08, 0x08 }, // +
{ 0x00, 0x00, 0x50, 0x30, 0x00 }, // ,
{ 0x10, 0x10, 0x10, 0x10, 0x10 }, // -
{ 0x00, 0x60, 0x60, 0x00, 0x00 }, // .
{ 0x20, 0x10, 0x08, 0x04, 0x02 }, // /
{ 0x3E, 0x51, 0x49, 0x45, 0x3E }, // 0
{ 0x00, 0x42, 0x7F, 0x40, 0x00 }, // 1
{ 0x42, 0x61, 0x51, 0x49, 0x46 }, // 2
{ 0x21, 0x41, 0x45, 0x4B, 0x31 }, // 3
{ 0x18, 0x14, 0x12, 0x7F, 0x10 }, // 4
{ 0x27, 0x45, 0x45, 0x45, 0x39 }, // 5
{ 0x3C, 0x4A, 0x49, 0x49, 0x30 }, // 6
{ 0x01, 0x71, 0x09, 0x05, 0x03 }, // 7
{ 0x36, 0x49, 0x49, 0x49, 0x36 }, // 8
{ 0x06, 0x49, 0x49, 0x29, 0x1E }, // 9
{ 0x00, 0x36, 0x36, 0x00, 0x00 }, // :
{ 0x00, 0x56, 0x36, 0x00, 0x00 }, // ;
{ 0x08, 0x14, 0x22, 0x41, 0x00 }, // <
{ 0x14, 0x14, 0x14, 0x14, 0x14 }, // =
{ 0x00, 0x41, 0x22, 0x14, 0x08 }, // >
{ 0x02, 0x01, 0x51, 0x09, 0x06 }, // ?
{ 0x32, 0x49, 0x59, 0x51, 0x3E }, // @
{ 0x7E, 0x11, 0x11, 0x11, 0x7E }, // A
{ 0x7F, 0x49, 0x49, 0x49, 0x36 }, // B
{ 0x3E, 0x41, 0x41, 0x41, 0x22 }, // C
{ 0x7F, 0x41, 0x41, 0x22, 0x1C }, // D
{ 0x7F, 0x49, 0x49, 0x49, 0x41 }, // E
{ 0x7F, 0x09, 0x09, 0x09, 0x01 }, // F
{ 0x3E, 0x41, 0x49, 0x49, 0x7A }, // G
{ 0x7F, 0x08, 0x08, 0x08, 0x7F }, // H
{ 0x00, 0x41, 0x7F, 0x41, 0x00 }, // I
{ 0x20, 0x40, 0x41, 0x3F, 0x01 }, // J
{ 0x7F, 0x08, 0x14, 0x22, 0x41 }, // K
{ 0x7F, 0x40, 0x40, 0x40, 0x40 }, // L
{ 0x7F, 0x02, 0x0C, 0x02, 0x7F }, // M
{ 0x7F, 0x04, 0x08, 0x10, 0x7F }, // N
{ 0x3E, 0x41, 0x41, 0x41, 0x3E }, // O
{ 0x7F, 0x09, 0x09, 0x09, 0x06 }, // P
{ 0x3E, 0x41, 0x51, 0x21, 0x5E }, // Q
{ 0x7F, 0x09, 0x19, 0x29, 0x46 }, // R
{ 0x46, 0x49, 0x49, 0x49, 0x31 }, // S
{ 0x01, 0x01, 0x7F, 0x01, 0x01 }, // T
{ 0x3F, 0x40, 0x40, 0x40, 0x3F }, // U
{ 0x1F, 0x20, 0x40, 0x20, 0x1F }, // V
{ 0x3F, 0x40, 0x38, 0x40, 0x3F }, // W
{ 0x63, 0x14, 0x08, 0x14, 0x63 }, // X
{ 0x07, 0x08, 0x70, 0x08, 0x07 }, // Y
{ 0x61, 0x51, 0x49, 0x45, 0x43 }, // Z
{ 0x00, 0x7F, 0x41, 0x41, 0x00 }, // [
{ 0x55, 0x2A, 0x55, 0x2A, 0x55 }, // '\'
{ 0x00, 0x41, 0x41, 0x7F, 0x00 }, // ]
{ 0x04, 0x02, 0x01, 0x02, 0x04 }, // ^
{ 0x40, 0x40, 0x40, 0x40, 0x40 }, // _
{ 0x00, 0x01, 0x02, 0x04, 0x00 }, // '
{ 0x20, 0x54, 0x54, 0x54, 0x78 }, // a
{ 0x7F, 0x48, 0x44, 0x44, 0x38 }, // b
{ 0x38, 0x44, 0x44, 0x44, 0x20 }, // c
{ 0x38, 0x44, 0x44, 0x48, 0x7F }, // d
{ 0x38, 0x54, 0x54, 0x54, 0x18 }, // e
{ 0x08, 0x7E, 0x09, 0x01, 0x02 }, // f
{ 0x0C, 0x52, 0x52, 0x52, 0x3E }, // g
{ 0x7F, 0x08, 0x04, 0x04, 0x78 }, // h
{ 0x00, 0x44, 0x7D, 0x40, 0x00 }, // i
{ 0x20, 0x40, 0x44, 0x3D, 0x00 }, // j
{ 0x7F, 0x10, 0x28, 0x44, 0x00 }, // k
{ 0x00, 0x41, 0x7F, 0x40, 0x00 }, // l
{ 0x7C, 0x04, 0x18, 0x04, 0x78 }, // m
{ 0x7C, 0x08, 0x04, 0x04, 0x78 }, // n
{ 0x38, 0x44, 0x44, 0x44, 0x38 }, // o
{ 0x7C, 0x14, 0x14, 0x14, 0x08 }, // p
{ 0x08, 0x14, 0x14, 0x18, 0x7C }, // q
{ 0x7C, 0x08, 0x04, 0x04, 0x08 }, // r
{ 0x48, 0x54, 0x54, 0x54, 0x20 }, // s
{ 0x04, 0x3F, 0x44, 0x40, 0x20 }, // t
{ 0x3C, 0x40, 0x40, 0x20, 0x7C }, // u
{ 0x1C, 0x20, 0x40, 0x20, 0x1C }, // v
{ 0x3C, 0x40, 0x30, 0x40, 0x3C }, // w
{ 0x44, 0x28, 0x10, 0x28, 0x44 }, // x
{ 0x0C, 0x50, 0x50, 0x50, 0x3C }, // y
{ 0x44, 0x64, 0x54, 0x4C, 0x44 } // z
};
static char get_char_xy(char ch, int x, int y)
{
if (ch < ' ' || ch > 'z')
ch = ' ';
ch -= ' ';
return (ASCII_TAB[ch][x] & (1<<y)) ? BRUSH_CHAR : BLANK_CHAR;
}
static void print_row(char ch, int row)
{
int i;
for (i = 0; i < FONT_COLS; i++) {
printf("%c", get_char_xy(ch, i, row));
}
}
int main(int argc, char *argv[])
{
char str[80] = { '\0' };
int i, j, k, len, index = 0;
printf("Please input a string:\n");
scanf("%s", str);
len = strlen(str);
while (index < len) {
for (i = 0; i < FONT_ROWS; i++) {
for (j = 0; j < CHAR_PER_LINE && j + index < len; j++) {
print_row(str[index + j], i);
for (k = 0; k < HORIZONTAL_DISTANCE; k++) {
printf("%c", BLANK_CHAR);
}
}
printf("\n");
}
index += CHAR_PER_LINE;
for (k = 0; k < VERTICAL_DISTANCE; k++) {
printf("\n");
}
}
return 0;
}
/* 第二题 */
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define MIN_POINT_NUMBER 3
#define MAX_POINT_NUMBER 100
#define MAX_POINT_COORD 1000.0
typedef struct Point_ {
float x;
float y;
} Point;
typedef struct Circle_ {
Point o; /* centre */
Point p1;
Point p2;
float r; /* radius */
} Circle;
typedef struct {
Point p;
int included;
} Element;
/* return squared distance of points a & b */
#define SQUARE(a) ((a)*(a))
#define SQUARED_DISTANCE(a,b) (SQUARE((a).x-(b).x) + SQUARE((a).y-(b).y))
#define DISTANCE(a,b) (sqrt(SQUARED_DISTANCE((a),(b))))
#define MAX(a,b) ((a) > (b) ? (a) : (b))
#define MIN(a,b) ((a) < (b) ? (a) : (b))
#define EQUAL_FLOAT(a,b) (fabs((a)-(b)) < 0.00001)
/* get the circumcircle of a triangle */
static Circle
get_circumcircle(Point a, Point b, Point c)
{
Circle result;
float dx1 = a.x - b.x;
float dx2 = b.x - c.x;
float dy1 = a.y - b.y;
float dy2 = b.y - c.y;
float x1 = (a.x + b.x) / 2.0;
float x2 = (b.x + c.x) / 2.0;
float y1 = (a.y + b.y) / 2.0;
float y2 = (b.y + c.y) / 2.0;
result.o.x = ((dy1*dy2*(y2-y1) + x2*dx2*dy1 - x1*dx1*dy2)) / \
(dx2*dy1 - dx1*dy2);
result.o.y = ((dx1*dx2*(x2-x1) + y2*dy2*dx1 - y1*dy1*dx2)) / \
(dy2*dx1 - dy1*dx2);
result.r = DISTANCE(result.o, a);
result.p1 = a;
result.p2 = c;
return result;
}
/* get the mininal circle that includes three given points
* Note:
* 1) the tree points may be in one line
* or
* 2) the tree points make up a triangle
*/
static Circle
get_min_circle(Point a, Point b, Point c)
{
Circle result;
float ab,bc,ac, max;
ab = DISTANCE(a,b);
bc = DISTANCE(b,c);
ac = DISTANCE(a,c);
max = MAX(ab, MAX(bc,ac));
printf("[%f, %f]\n[%f, %f]\n[%f, %f]\n",a.x,a.y,b.x,b.y,c.x,c.y);
if (EQUAL_FLOAT(max*2, ab+bc+ac)) { /* in the same line */
printf("line\n");
if (EQUAL_FLOAT(max, ab)) {
/* ab is the diameter */
result.o.x = (a.x + b.x) / 2.0;
result.o.y = (a.y + b.y) / 2.0;
result.r = max / 2.0;
result.p1 = a;
result.p2 = b;
} else if (EQUAL_FLOAT(max, bc)) {
/* bc is the diameter */
result.o.x = (b.x + c.x) / 2.0;
result.o.y = (b.y + c.y) / 2.0;
result.r = max / 2.0;
result.p1 = b;
result.p2 = c;
} else {
/* ac is the diameter */
result.o.x = (a.x + c.x) / 2.0;
result.o.y = (a.y + c.y) / 2.0;
result.r = max / 2.0;
result.p1 = a;
result.p2 = c;
}
} else { /* triangle */
/* get the circumcircle of the triangle */
printf("triangle\n");
result = get_circumcircle(a, b, c);
}
printf("The circle's center is [%f, %f], radius is %f\n",
result.o.x, result.o.y, result.r);
return result;
}
int
main(int argc, char *argv[])
{
Circle circle;
Element *elements;
int n = 0, i;
while (n < MIN_POINT_NUMBER || n > MAX_POINT_NUMBER) {
printf("Please input point number (3-100):\n");
scanf("%d", &n);
}
elements = (Element*)malloc(sizeof(Element)*n);
memset(elements, 0, sizeof(Element)*n);
for (i = 0; i < n; i++) {
printf("Please input point (%d in %d):\n", i+1, n);
scanf("%f %f", &elements[i].p.x, &elements[i].p.y);
}
elements[0].included = 1;
elements[1].included = 1;
elements[2].included = 1;
circle = get_min_circle(elements[0].p, elements[1].p, elements[2].p);
for (i = 0; i < n; i++) {
if (elements[i].included)
continue;
if (DISTANCE(elements[i].p, circle.o) - circle.r > 0.00001) {
circle = get_min_circle(circle.p1, circle.p2, elements[i].p);
}
elements[i].included = 1;
}
return 0;
}
㈡ 电子类毕业设计或课程设计
毕业设计(论文)是学生毕业前最后一个重要学习环节,是学习深化与升华的重要过程。它既是学生学习、研究与实践成果的全面总结,又是对学生素质与能力的一次全面检验,而且还是对学生的毕业资格及学位资格认证的重要依据。为了保证我校本科生毕业设计(论文)质量,特制定“同济大学本科生毕业设计(论文)撰写规范”。
一、毕业设计(论文)资料的组成A.毕业设计(论文)任务书;B.毕业设计(论文)成绩评定书;C.毕业论文或毕业设计说明书(包括:封面、中外文摘要或设计总说明(包括关键词)、目录、正文、谢辞、参考文献、附录);D.译文及原文复印件;E.图纸、软盘等。
二、毕业设计(论文)资料的填写及有关资料的装订毕业设计(论文)统一使用学校印制的毕业设计(论文)资料袋、毕业设计(论文)任务书、毕业设计(论文)成绩评定书、毕业设计(论文)封面、稿纸(在教务处网上下载用,学校统一纸面格式,使用A4打印纸)。
毕业设计(论文)资料按要求认真填写,字体要工整,卷面要整洁,手写一律用黑或蓝黑墨水;任务书由指导教师填写并签字,经院长(系主任)签字后发出。毕业论文或设计说明书要按顺序装订:封面、中外文摘要或设计总说明(包括关键词)、目录、正文、谢辞、参考文献、附录装订在一起,然后与毕业设计(论文)任务书、毕业设计(论文)成绩评定书、译文及原文复印件(订在一起)、工程图纸(按国家标准折叠装订)、软盘等一起放入填写好的资料袋内交指导教师查收,经审阅评定后归档。
三、毕业设计说明书(论文)撰写的内容与要求一份完整的毕业设计(论文)应包括以下几个方面:
1.标题
标题应该简短、明确、有概括性。标题字数要适当,不宜超过20个字,如果有些细节必须放进标题,可以分成主标题和副标题。
2.论文摘要或设计总说明论文摘要以浓缩的形式概括研究课题的内容,中文摘要在300字左右,外文摘要以250个左右实词为宜,关键词一般以3~5个为妥。
设计总说明主要介绍设计任务来源、设计标准、设计原则及主要技术资料,中文字数要在1500~2000字以内,外文字数以1000个左右实词为宜,关键词一般以5个左右为妥。
3.目录
目录按三级标题编写(即:1……、1.1……、1.1.1……),要求标题层次清晰。目录中的标题应与正文中的标题一致,附录也应依次列入目录。
4.正文
毕业设计说明书(论文)正文包括绪论、正文主体与结论,其内容分别如下:绪论应说明本课题的意义、目的、研究范围及要达到的技术要求;简述本课题在国内外的发展概况及存在的问题;说明本课题的指导思想;阐述本课题应解决的主要问题,在文字量上要比摘要多。
正文主体是对研究工作的详细表述,其内容包括:问题的提出,研究工作的基本前提、假设和条件;模型的建立,实验方案的拟定;基本概念和理论基础;设计计算的主要方法和内容;实验方法、内容及其分析;理论论证,理论在课题中的应用,课题得出的结果,以及对结果的讨论等。学生根据毕业设计(论文)课题的性质,一般仅涉及上述一部分内容。
结论是对整个研究工作进行归纳和综合而得出的总结,对所得结果与已有结果的比较和课题尚存在的问题,以及进一步开展研究的见解与建议。结论要写得概括、简短。
5.谢辞
谢辞应以简短的文字对在课题研究和设计说明书(论文)撰写过程中曾直接给予帮助的人员(例如指导教师、答疑教师及其他人员)表示自己的谢意,这不仅是一种礼貌,也是对他人劳动的尊重,是治学者应有的思想作风。
6.参考文献与附录
参考文献是毕业设计(论文)不可缺少的组成部分,它反映毕业设计(论文)的取材来源、材料的广博程度和材料的可靠程度,也是作者对他人知识成果的承认和尊重。一份完整的参考文献可向读者提供一份有价值的信息资料。一般做毕业设计(论文)的参考文献不宜过多,但应列入主要的文献可10篇以上,其中外文文献在2篇以上。
附录是对于一些不宜放在正文中,但有参考价值的内容,可编入毕业设计(论文)的附录中,例如公式的推演、编写的程序等;如果文章中引用的符号较多时,便于读者查阅,可以编写一个符号说明,注明符号代表的意义。一般附录的篇幅不宜过大,若附录篇幅超过正文,会让人产生头轻脚重的感觉。
四、毕业设计(论文)要求
我校毕业设计(论文)大致有设计类、理论研究类(理科)、实验研究类、计算机软件设计类、经济、管理及文科类、综合类等,具体要求如下:
1.设计类(包括机械、建筑、土建工程等):学生必须独立绘制完成一定数量的图纸,工程图除了用计算机绘图外必须要有1~2张(2号以上含2号图)是手工绘图;一份15000字以上的设计说明书(包括计算书、调研报告);参考文献不低于10篇,其中外文文献要在2篇以上。
2.理论研究类(理科):对该类课题工科学生一般不提倡,各院系要慎重选题,除非题目确实有实际意义。该毕业设计报告或论文字数要在20000字以上;根据课题提出问题、分析问题,提出方案、并进行建模、仿真和设计计算等;参考文献不低于15篇,其中外文文献要在4篇以上。
3.实验研究类:学生要独立完成一个完整的实验,取得足够的实验数据,实验要有探索性,而不是简单重复已有的工作;要完成15000字以上的论文,其包括文献综述,实验部分的讨论与结论等内容;参考文献不少于10篇,包括2篇以上外文文献。
4.计算机软件类:学生要独立完成一个软件或较大软件中的一个模块,要有足够的工作量;要写出10000字以上的软件说明书和论文;毕业设计(论文)中如涉及到有关电路方面的内容时,必须完成调试工作,要有完整的测试结果和给出各种参数指标;当涉及到有关计算机软件方面的内容时,要进行计算机演示程序运行和给出运行结果。
5.经济、管理及文科类:学生在教师的指导下完成开题报告;撰写一篇20000字以上的有一定水平的专题论文(外国语专业论文篇幅为5000个词以上。);参考文献不少于10篇,包括1-2篇外文文献。
6.综合类:综合类毕业设计(论文)要求至少包括以上三类内容,如有工程设计内容时,在图纸工作量上可酌情减少,完成10000字以上的论文,参考文献不少于10篇,包括2篇以上外文文献。
每位学生在完成毕业设计(论文)的同时要求:(1)翻译2万外文印刷字符或译出5000汉字以上的有关技术资料或专业文献(外语专业学生翻译6000~8000字符的专业外文文献或写出10000字符的外文文献的中文读书报告),内容要尽量结合课题(译文连同原文单独装订成册)。(2)使用计算机进行绘图,或进行数据采集、数据处理、数据分析,或进行文献检索、论文编辑等。绘图是工程设计的基本训练,毕业设计中学生应用计算机绘图,但作为绘图基本训练可要求一定量的墨线和铅笔线图。毕业设计图纸应符合制图标准,学生应参照教务处2004年3月印制的《毕业设计制图规范》进行绘图。
五、毕业设计(论文)的写作细则
1.书写
毕业设计(论文)要用学校规定的文稿纸书写或打印(手写时必须用黑或蓝墨水),文稿纸背面不得书写正文和图表,正文中的任何部分不得写到文稿纸边框以外,文稿纸不得随意接长或截短。汉字必须使用国家公布的规范字。
2.标点符号毕业设计(论文)中的标点符号应按新闻出版署公布的"标点符号用法"使用。3.名词、名称科学技术名词术语尽量采用全国自然科学名词审定委员会公布的规范词或国家标准、部标准中规定的名称,尚未统一规定或叫法有争议的名称术语,可采用惯用的名称。使用外文缩写代替某一名词术语时,首次出现时应在括号内注明其含义。外国人名一般采用英文原名,按名前姓后的原则书写。一般很熟知的外国人名(如牛顿、达尔文、马克思等)可按通常标准译法写译名。
4.量和单位
量和单位必须采用中华人民共和国的国家标准GB3100~GB3102-93,它是以国际单位制(SI)为基础的。非物理量的单位,如件、台、人、元等,可用汉字与符号构成组合形式的单位,例如件/台、元/km。
5.数字
毕业设计(论文)中的测量统计数据一律用阿拉伯数字,但在叙述不很大的数目时,一般不用阿拉伯数字,如"他发现两颗小行星"、"三力作用于一点",不宜写成"他发现2颗小行星"、"3力作用于1点"。大约的数字可以用中文数字,也可以用阿拉伯数字,如"约一百五十人",也可写成"约150人"。
6.标题层次
毕业设计(论文)的全部标题层次应有条不紊,整齐清晰。相同的层次应采用统一的表示体例,正文中各级标题下的内容应同各自的标题对应,不应有与标题无关的内容。章节编号方法应采用分级阿拉伯数字编号方法,第一级为"1"、"2"、"3"等,第二级为"2.1"、"2.2"、"2.3"等,第三级为"2.2.1"、"2.2.2"、"2.2.3"等,但分级阿拉伯数字的编号一般不超过四级,两级之间用下角圆点隔开,每一级的末尾不加标点。
各层标题均单独占行书写。第一级标题居中书写;第二级标题序数顶格书写,后空一格接写标题,末尾不加标点;第三级和第四级标题均空两格书写序数,后空一格书写标题。第四级以下单独占行的标题顺序采用A.B.C.…和a.b.c.两层,标题均空两格书写序数,后空一格写标题。正文中对总项包括的分项采用⑴、⑵、⑶…单独序号,对分项中的小项采用①、②、③…的序号或数字加半括号,括号后不再加其他标点。
7.注释
毕业设计(论文)中有个别名词或情况需要解释时,可加注说明,注释可用页末注(将注文放在加注页的下端)或篇末注(将全部注文集中在文章末尾),而不可行中注(夹在正文中的注)。注释只限于写在注释符号出现的同页,不得隔页。
8.公式
公式应居中书写,公式的编号用圆括号括起放在公式右边行末,公式和编号之间不加虚线。9.表格
每个表格应有表序和表题,表序和表题应写在表格上放正中,表序后空一格书写表题。表格允许下页接写,表题可省略,表头应重复写,并在右上方写"续表××"。
10.插图
毕业设计的插图必须精心制作,线条粗细要合适,图面要整洁美观。每幅插图应有图序和图题,图序和图题应放在图位下方居中处。图应在描图纸或在白纸上用墨线绘成,也可以用计算机绘图。
11.参考文献
参考文献一律放在文后,参考文献的书写格式要按国家标准GB7714-87规定。参考文献按文中出现的先后统一用阿拉伯数字进行自然编号,一般序码宜用方括号括起,不用园括号括起。
㈢ [数据结构课程设计代码]C编写,好的话追加80分,谢谢]
typedef struct
{
unsigned int weight;
unsigned int parent,lchild,rchild;
}HTNode,*HuffmanTree; /* 动态分配数组存储赫夫曼树 */
typedef char **HuffmanCode; /* 动态分配数组存储赫夫曼编码表 */
/* 求赫夫曼编码 */
#include"c1.h"
#include"c6-7.h"
#include"func6-1.c"
void HuffmanCoding(HuffmanTree *HT,HuffmanCode *HC,int *w,int n) /* 算法6.12 */
{ /* w存放n个字符的权值(均>0),构造赫夫曼树HT,并求出n个字符的赫夫曼编码HC */
int m,i,s1,s2,start;
unsigned c,f;
HuffmanTree p;
char *cd;
if(n<=1)
return;
m=2*n-1;
*HT=(HuffmanTree)malloc((m+1)*sizeof(HTNode)); /* 0号单元未用 */
for(p=*HT+1,i=1;i<=n;++i,++p,++w)
{
(*p).weight=*w;
(*p).parent=0;
(*p).lchild=0;
(*p).rchild=0;
}
for(;i<=m;++i,++p)
(*p).parent=0;
for(i=n+1;i<=m;++i) /* 建赫夫曼树 */
{ /* 在HT[1~i-1]中选择parent为0且weight最小的两个结点,其序号分别为s1和s2 */
select(*HT,i-1,&s1,&s2);
(*HT)[s1].parent=(*HT)[s2].parent=i;
(*HT)[i].lchild=s1;
(*HT)[i].rchild=s2;
(*HT)[i].weight=(*HT)[s1].weight+(*HT)[s2].weight;
}
/* 从叶子到根逆向求每个字符的赫夫曼编码 */
*HC=(HuffmanCode)malloc((n+1)*sizeof(char*));
/* 分配n个字符编码的头指针向量([0]不用) */
cd=(char*)malloc(n*sizeof(char)); /* 分配求编码的工作空间 */
cd[n-1]='\0'; /* 编码结束符 */
for(i=1;i<=n;i++)
{ /* 逐个字符求赫夫曼编码 */
start=n-1; /* 编码结束符位置 */
for(c=i,f=(*HT)[i].parent;f!=0;c=f,f=(*HT)[f].parent)
/* 从叶子到根逆向求编码 */
if((*HT)[f].lchild==c)
cd[--start]='0';
else
cd[--start]='1';
(*HC)[i]=(char*)malloc((n-start)*sizeof(char));
/* 为第i个字符编码分配空间 */
strcpy((*HC)[i],&cd[start]); /* 从cd复制编码(串)到HC */
}
free(cd); /* 释放工作空间 */
}
void main()
{
HuffmanTree HT;
HuffmanCode HC;
int *w,n,i;
printf("请输入权值的个数(>1): ");
scanf("%d",&n);
w=(int*)malloc(n*sizeof(int));
printf("请依次输入%d个权值(整型):\n",n);
for(i=0;i<=n-1;i++)
scanf("%d",w+i);
HuffmanCoding(&HT,&HC,w,n);
for(i=1;i<=n;i++)
puts(HC[i]);
}
/*无栈非递归遍历赫夫曼树,求赫夫曼编码*/
#include"c1.h"
#include"c6-7.h"
#include"func6-1.c"
void HuffmanCoding(HuffmanTree *HT,HuffmanCode *HC,int *w,int n) */
{ /* w存放n个字符的权值(均>0),构造赫夫曼树HT,并求出n个字符的赫夫曼编码HC */
int m,i,s1,s2; /* 此句与algo6-1.c不同 */
unsigned c,cdlen; /* 此句与algo6-1.c不同 */
HuffmanTree p;
char *cd;
if(n<=1)
return;
m=2*n-1;
*HT=(HuffmanTree)malloc((m+1)*sizeof(HTNode)); /* 0号单元未用 */
for(p=*HT+1,i=1;i<=n;++i,++p,++w)
{
(*p).weight=*w;
(*p).parent=0;
(*p).lchild=0;
(*p).rchild=0;
}
for(;i<=m;++i,++p)
(*p).parent=0;
for(i=n+1;i<=m;++i) /* 建赫夫曼树 */
{ /* 在HT[1~i-1]中选择parent为0且weight最小的两个结点,其序号分别为s1和s2 */
select(*HT,i-1,&s1,&s2);
(*HT)[s1].parent=(*HT)[s2].parent=i;
(*HT)[i].lchild=s1;
(*HT)[i].rchild=s2;
(*HT)[i].weight=(*HT)[s1].weight+(*HT)[s2].weight;
}
/* 以下为算法6.13,无栈非递归遍历赫夫曼树,求赫夫曼编码,以上同算法6.12 */
*HC=(HuffmanCode)malloc((n+1)*sizeof(char*));
/* 分配n个字符编码的头指针向量([0]不用) */
cd=(char*)malloc(n*sizeof(char)); /* 分配求编码的工作空间 */
c=m;
cdlen=0;
for(i=1;i<=m;++i)
(*HT)[i].weight=0; /* 遍历赫夫曼树时用作结点状态标志 */
while(c)
{
if((*HT)[c].weight==0)
{ /* 向左 */
(*HT)[c].weight=1;
if((*HT)[c].lchild!=0)
{
c=(*HT)[c].lchild;
cd[cdlen++]='0';
}
else if((*HT)[c].rchild==0)
{ /* 登记叶子结点的字符的编码 */
(*HC)[c]=(char *)malloc((cdlen+1)*sizeof(char));
cd[cdlen]='\0';
strcpy((*HC)[c],cd); /* 复制编码(串) */
}
}
else if((*HT)[c].weight==1)
{ /* 向右 */
(*HT)[c].weight=2;
if((*HT)[c].rchild!=0)
{
c=(*HT)[c].rchild;
cd[cdlen++]='1';
}
}
else
{ /* HT[c].weight==2,退回 */
(*HT)[c].weight=0;
c=(*HT)[c].parent;
--cdlen; /* 退到父结点,编码长度减1 */
}
}
free(cd);
}
void main()
{ /* 主程序同algo6-1.c */
HuffmanTree HT;
HuffmanCode HC;
int *w,n,i;
printf("请输入权值的个数(>1): ");
scanf("%d",&n);
w=(int *)malloc(n*sizeof(int));
printf("请依次输入%d个权值(整型):\n",n);
for(i=0;i<=n-1;i++)
scanf("%d",w+i);
HuffmanCoding(&HT,&HC,w,n);
for(i=1;i<=n;i++)
puts(HC[i]);
}
㈣ 数据结构课程设计
这个自己看下 不过是用C实现的
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAXSIZE 1000
typedef char datatype;
typedef struct {
datatype a[MAXSIZE];
int size;
}e_list;
e_list s;
e_list t;
void ptint_slt(e_list slt); /*输出文本*/
void letter_number(e_list slt); /*全部字母个数*/
void space_number(e_list slt); /*全部空格个数*/
void digit_number(e_list slt); /*全部数字总数*/
void size_number(e_list slt); /*文章总字数*/
void dele_print(e_list p,e_list slt); /*输出删除某一字符串后的文章*/
void ptint_slt(e_list slt) /*输出文本*/
{
int i,j=0;
if(!slt.size) {printf("\n错误!");exit(1);}
else
for(i=0;i<slt.size;i++)
{
printf("%c",slt.a[i]);
j++;
if(j%20==0) printf("\n");
}
}
void letter_number(e_list slt) /*全部字母个数*/
{
int i,j=0;
if(!slt.size) {printf("\n错误!");exit(1);}
else
for(i=0;i<slt.size;i++)
{
if((slt.a[i]>='a'&&slt.a[i]<='z')||(slt.a[i]>='A'&&slt.a[i]<='Z'))
j++;
}
printf("%d",j);
}
void space_number(e_list slt) /*全部空格个数*/
{
int i,j=0;
if(!slt.size) {printf("\n错误!");exit(1);}
else
for(i=0;i<slt.size;i++)
{
if(slt.a[i]==' ')
j++;
}
printf("%d",j);
}
void digit_number(e_list slt) /*全部数字总数*/
{
int i,j=0;
if(!slt.size) {printf("\n错误!");exit(1);}
else
for(i=0;i<slt.size;i++)
{
if(slt.a[i]>='0'&&slt.a[i]<='9')
j++;
}
printf("%d",j);
}
void size_number(e_list slt) /*文章总字数*/
{
printf("%d",slt.size);
}
void dele_print(e_list p,e_list slt) /*输出删除某一字符串后的文章*/
{
int i,j,succ;
i=0;succ=0; /*用i扫描正文t,succ为匹配成功标志*/
while((i<=slt.size-p.size+1)&&(!succ))
{
j=0;succ=1; /*用j扫描模式p*/
while((j<=p.size-1)&&succ)
if(p.a[j]==slt.a[i+j]) j++;
else succ=0;
i++;
}
if(succ)
{
for(j=0;j<(slt.size-p.size-1);j++)
{
slt.a[i-1]=slt.a[i+p.size-1];
i++;
}
slt.size=slt.size-p.size;
for(i=0;i<slt.size;i++)
{
printf("%c",slt.a[i]);
}
printf("\n");
}
else printf("\n错误!没有与字符串相配的子串!");
}
void main()
{
int i;
int right;
s.size=0;
for(i=0;i<MAXSIZE;i++)
{
s.a[i]=getchar();
s.size++;
if(s.a[i]=='\n') {s.size--; break;}
}
printf("\n文本录入完毕!输出的文本为..\n");
ptint_slt(s);
printf("\n全部字母个数为:");
letter_number(s);
printf("\n全部空格个数为:");
space_number(s);
printf("\n全部数字个数为:");
digit_number(s);
printf("\n文章总字数为:");
size_number(s);
printf("\n要删除的字符串为:");
for(i=0;i<MAXSIZE;i++)
{
t.a[i]=getchar();
t.size++;
if(t.a[i]=='\n') {t.size--; break;}
}
printf("\n删除字符串后的结果为:");
dele_print(t,s);
}
㈤ 专业毕业设计及课程设计
毕业设计(论文)是学生毕业前最后一个重要学习环节,是学习深化与升华的重要过程。它既是学生学习、研究与实践成果的全面总结,又是对学生素质与能力的一次全面检验,而且还是对学生的毕业资格及学位资格认证的重要依据。
一、毕业设计(论文)资料的组成A.毕业设计(论文)任务书;B.毕业设计(论文)成绩评定书;C.毕业论文或毕业设计说明书(包括:封面、中外文摘要或设计总说明(包括关键词)、目录、正文、谢辞、参考文献、附录);D.译文及原文复印件;E.图纸、软盘等。
二、毕业设计(论文)资料的填写及有关资料的装订毕业设计(论文)统一使用学校印制的毕业设计(论文)资料袋、毕业设计(论文)任务书、毕业设计(论文)成绩评定书、毕业设计(论文)封面、稿纸(在教务处网上下载用,学校统一纸面格式,使用A4打印纸)。
毕业设计(论文)资料按要求认真填写,字体要工整,卷面要整洁,手写一律用黑或蓝黑墨水;任务书由指导教师填写并签字,经院长(系主任)签字后发出。毕业论文或设计说明书要按顺序装订:封面、中外文摘要或设计总说明(包括关键词)、目录、正文、谢辞、参考文献、附录装订在一起,然后与毕业设计(论文)任务书、毕业设计(论文)成绩评定书、译文及原文复印件(订在一起)、工程图纸(按国家标准折叠装订)、软盘等一起放入填写好的资料袋内交指导教师查收,经审阅评定后归档。
三、毕业设计说明书(论文)撰写的内容与要求一份完整的毕业设计(论文)应包括以下几个方面:
1.标题
标题应该简短、明确、有概括性。标题字数要适当,不宜超过20个字,如果有些细节必须放进标题,可以分成主标题和副标题。
2.论文摘要或设计总说明论文摘要以浓缩的形式概括研究课题的内容,中文摘要在300字左右,外文摘要以250个左右实词为宜,关键词一般以3~5个为妥。
设计总说明主要介绍设计任务来源、设计标准、设计原则及主要技术资料,中文字数要在1500~2000字以内,外文字数以1000个左右实词为宜,关键词一般以5个左右为妥。
3.目录
目录按三级标题编写(即:1……、1.1……、1.1.1……),要求标题层次清晰。目录中的标题应与正文中的标题一致,附录也应依次列入目录。
4.正文
毕业设计说明书(论文)正文包括绪论、正文主体与结论,其内容分别如下:绪论应说明本课题的意义、目的、研究范围及要达到的技术要求;简述本课题在国内外的发展概况及存在的问题;说明本课题的指导思想;阐述本课题应解决的主要问题,在文字量上要比摘要多。
正文主体是对研究工作的详细表述,其内容包括:问题的提出,研究工作的基本前提、假设和条件;模型的建立,实验方案的拟定;基本概念和理论基础;设计计算的主要方法和内容;实验方法、内容及其分析;理论论证,理论在课题中的应用,课题得出的结果,以及对结果的讨论等。学生根据毕业设计(论文)课题的性质,一般仅涉及上述一部分内容。
结论是对整个研究工作进行归纳和综合而得出的总结,对所得结果与已有结果的比较和课题尚存在的问题,以及进一步开展研究的见解与建议。结论要写得概括、简短。
5.谢辞
谢辞应以简短的文字对在课题研究和设计说明书(论文)撰写过程中曾直接给予帮助的人员(例如指导教师、答疑教师及其他人员)表示自己的谢意,这不仅是一种礼貌,也是对他人劳动的尊重,是治学者应有的思想作风。
6.参考文献与附录
参考文献是毕业设计(论文)不可缺少的组成部分,它反映毕业设计(论文)的取材来源、材料的广博程度和材料的可靠程度,也是作者对他人知识成果的承认和尊重。一份完整的参考文献可向读者提供一份有价值的信息资料。一般做毕业设计(论文)的参考文献不宜过多,但应列入主要的文献可10篇以上,其中外文文献在2篇以上。
附录是对于一些不宜放在正文中,但有参考价值的内容,可编入毕业设计(论文)的附录中,例如公式的推演、编写的程序等;如果文章中引用的符号较多时,便于读者查阅,可以编写一个符号说明,注明符号代表的意义。一般附录的篇幅不宜过大,若附录篇幅超过正文,会让人产生头轻脚重的感觉。
四、毕业设计(论文)要求
我校毕业设计(论文)大致有设计类、理论研究类(理科)、实验研究类、计算机软件设计类、经济、管理及文科类、综合类等,具体要求如下:
1.设计类(包括机械、建筑、土建工程等):学生必须独立绘制完成一定数量的图纸,工程图除了用计算机绘图外必须要有1~2张(2号以上含2号图)是手工绘图;一份15000字以上的设计说明书(包括计算书、调研报告);参考文献不低于10篇,其中外文文献要在2篇以上。
2.理论研究类(理科):对该类课题工科学生一般不提倡,各院系要慎重选题,除非题目确实有实际意义。该毕业设计报告或论文字数要在20000字以上;根据课题提出问题、分析问题,提出方案、并进行建模、仿真和设计计算等;参考文献不低于15篇,其中外文文献要在4篇以上。
3.实验研究类:学生要独立完成一个完整的实验,取得足够的实验数据,实验要有探索性,而不是简单重复已有的工作;要完成15000字以上的论文,其包括文献综述,实验部分的讨论与结论等内容;参考文献不少于10篇,包括2篇以上外文文献。
4.计算机软件类:学生要独立完成一个软件或较大软件中的一个模块,要有足够的工作量;要写出10000字以上的软件说明书和论文;毕业设计(论文)中如涉及到有关电路方面的内容时,必须完成调试工作,要有完整的测试结果和给出各种参数指标;当涉及到有关计算机软件方面的内容时,要进行计算机演示程序运行和给出运行结果。
5.经济、管理及文科类:学生在教师的指导下完成开题报告;撰写一篇20000字以上的有一定水平的专题论文(外国语专业论文篇幅为5000个词以上。);参考文献不少于10篇,包括1-2篇外文文献。
6.综合类:综合类毕业设计(论文)要求至少包括以上三类内容,如有工程设计内容时,在图纸工作量上可酌情减少,完成10000字以上的论文,参考文献不少于10篇,包括2篇以上外文文献。
每位学生在完成毕业设计(论文)的同时要求:(1)翻译2万外文印刷字符或译出5000汉字以上的有关技术资料或专业文献(外语专业学生翻译6000~8000字符的专业外文文献或写出10000字符的外文文献的中文读书报告),内容要尽量结合课题(译文连同原文单独装订成册)。(2)使用计算机进行绘图,或进行数据采集、数据处理、数据分析,或进行文献检索、论文编辑等。绘图是工程设计的基本训练,毕业设计中学生应用计算机绘图,但作为绘图基本训练可要求一定量的墨线和铅笔线图。毕业设计图纸应符合制图标准,学生应参照教务处2004年3月印制的《毕业设计制图规范》进行绘图。
五、毕业设计(论文)的写作细则
1.书写
毕业设计(论文)要用学校规定的文稿纸书写或打印(手写时必须用黑或蓝墨水),文稿纸背面不得书写正文和图表,正文中的任何部分不得写到文稿纸边框以外,文稿纸不得随意接长或截短。汉字必须使用国家公布的规范字。
2.标点符号毕业设计(论文)中的标点符号应按新闻出版署公布的"标点符号用法"使用。3.名词、名称科学技术名词术语尽量采用全国自然科学名词审定委员会公布的规范词或国家标准、部标准中规定的名称,尚未统一规定或叫法有争议的名称术语,可采用惯用的名称。使用外文缩写代替某一名词术语时,首次出现时应在括号内注明其含义。外国人名一般采用英文原名,按名前姓后的原则书写。一般很熟知的外国人名(如牛顿、达尔文、马克思等)可按通常标准译法写译名。
4.量和单位
量和单位必须采用中华人民共和国的国家标准GB3100~GB3102-93,它是以国际单位制(SI)为基础的。非物理量的单位,如件、台、人、元等,可用汉字与符号构成组合形式的单位,例如件/台、元/km。
5.数字
毕业设计(论文)中的测量统计数据一律用阿拉伯数字,但在叙述不很大的数目时,一般不用阿拉伯数字,如"他发现两颗小行星"、"三力作用于一点",不宜写成"他发现2颗小行星"、"3力作用于1点"。大约的数字可以用中文数字,也可以用阿拉伯数字,如"约一百五十人",也可写成"约150人"。
6.标题层次
毕业设计(论文)的全部标题层次应有条不紊,整齐清晰。相同的层次应采用统一的表示体例,正文中各级标题下的内容应同各自的标题对应,不应有与标题无关的内容。章节编号方法应采用分级阿拉伯数字编号方法,第一级为"1"、"2"、"3"等,第二级为"2.1"、"2.2"、"2.3"等,第三级为"2.2.1"、"2.2.2"、"2.2.3"等,但分级阿拉伯数字的编号一般不超过四级,两级之间用下角圆点隔开,每一级的末尾不加标点。
各层标题均单独占行书写。第一级标题居中书写;第二级标题序数顶格书写,后空一格接写标题,末尾不加标点;第三级和第四级标题均空两格书写序数,后空一格书写标题。第四级以下单独占行的标题顺序采用A.B.C.…和a.b.c.两层,标题均空两格书写序数,后空一格写标题。正文中对总项包括的分项采用⑴、⑵、⑶…单独序号,对分项中的小项采用①、②、③…的序号或数字加半括号,括号后不再加其他标点。
7.注释
毕业设计(论文)中有个别名词或情况需要解释时,可加注说明,注释可用页末注(将注文放在加注页的下端)或篇末注(将全部注文集中在文章末尾),而不可行中注(夹在正文中的注)。注释只限于写在注释符号出现的同页,不得隔页。
8.公式
公式应居中书写,公式的编号用圆括号括起放在公式右边行末,公式和编号之间不加虚线。9.表格
每个表格应有表序和表题,表序和表题应写在表格上放正中,表序后空一格书写表题。表格允许下页接写,表题可省略,表头应重复写,并在右上方写"续表××"。
10.插图
毕业设计的插图必须精心制作,线条粗细要合适,图面要整洁美观。每幅插图应有图序和图题,图序和图题应放在图位下方居中处。图应在描图纸或在白纸上用墨线绘成,也可以用计算机绘图。
11.参考文献
参考文献一律放在文后,参考文献的书写格式要按国家标准GB7714-87规定。参考文献按文中出现的先后统一用阿拉伯数字进行自然编号,一般序码宜用方括号括起,不用园括号括起。
㈥ 求数据结构课程设计带详细解释的:文章编辑(限1 人完成)
我从网上下了个,传给你看看
㈦ 数据结构,课程设计(文章编辑) 急求啊 [email protected]
#易#此回复针对所有访问者和需求者有效
#软#可 Bai Hi / 私信/追问/求助联系,有偿解决此种问题,
#科#功能可定制,全面匹配学习版/专业版/企业版等不同程度的应用,
#技#其他联系方式看个人简介,
㈧ c语言:统计单词。要求读取一个英文文章,文章内有数字,空格,标点符号等,请统计出该文章中单词的个数
so easy~~
㈨ 简单的文本编辑器 数据结构课程设计
我给个思路吧:
1.把要统计的文章第次读入一行到数组中,以便统专计。
2.对这个数组从头属到尾循环,每次读入一个字符来分析,判断它是汉字还是字母、符号、数字。
3.写一个函数来统计串出现的次数,用strstr()函数。
4.删除某一子串时,可以把去掉串后的文本重新写入磁盘。