標點符號課程設計
㈠ 急~關於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.刪除某一子串時,可以把去掉串後的文本重新寫入磁碟。