① 歸並排序c語言版
#include <stdio.h>
void merge(int r[], int s[], int x1, int x2, int x3) /*實現一次歸並排序函數*/
{
int i, j, k;
i = x1; /*第一部分的開始位置*/
j = x2 + 1; /*第二部分的開始位置*/
k = x1;
while ((i <= x2) && (j <= x3))
/*當i和j都在兩個要合並的部分中*/
if (r[i] <= r[j])
/*篩選兩部分中較小的元素放到數組s中*/
{
s[k] = r[i];
i++;
k++;
}
else
{
s[k] = r[j];
j++;
k++;
}
while (i <= x2)
/*將x1~x2范圍內的未比較的數順次加到數組r中*/
s[k++] = r[i++];
while (j <= x3)
/*將x2+1~x3范圍內的未比較的數順次加到數組r中*/
s[k++] = r[j++];
}
void merge_sort(int r[], int s[], int m, int n)
{
int p;
int t[20];
if (m == n)
s[m] = r[m];
else
{
p = (m + n) / 2;
merge_sort(r, t, m, p);
/*遞歸調用merge_sort函數將r[m]~r[p]歸並成有序的t[m]~t[p]*/
merge_sort(r, t, p + 1, n); /*遞歸調用merge_sort函數將r[p
+1]~r[n]歸並成有序的t[p+1]~t[n]*/
merge(t, s, m, p, n); /*調用函數將前兩部分歸並到s[m]~s[n]*/
}
}
main()
{
int a[11];
int i;
printf("please input 10 numbers:\n");
for (i = 1; i <= 10; i++)
scanf("%d", &a[i]);
/*從鍵盤中輸入10個數*/
merge_sort(a, a, 1, 10); /*調用merge_sort函數進行歸並排序*/
printf("the sorted numbers:\n");
for (i = 1; i <= 10; i++)
printf("%5d", a[i]);
/*將排序後的結構輸出*/
}
② 咋寫C語言實驗報告
c(c++)上機實驗報告格式:
⒈ 實驗目的
(1) 了解在具體的語言環境下如何編輯、編譯、連接和運行一個 C 程序。
⑵ 通過運行簡單的 C 程序,初步了解 C 源程序的特點。
⑶ 掌握 C 語言數據類型,熟悉如何定義一個整型、字元型和實型的變數,以及對它們賦值的方法。
⑷ 掌握不同的類型數據之間賦值的規律。
⑸ 學會使用 C 的有關算術運算符,以及包含這些運算符的表達式,特別是自加(++)和自減(--)運算符的使用。
2.實驗內容和步驟
⑴ 檢查所用的計算機系統是否已安裝了 C 編譯系統並確定他所在的子目錄。
⑵ 進入所用的集成環境。
⑶ 熟悉集成環境的界面和有關菜單的使用方法。
⑷ 輸入並運行一個簡單的、正確的程序。
⒊ 實驗題目
⑴ 輸入下面的程序
# include 「stdio.h」 void main()
{ printf(「This is a c program. 」); }
③ 有誰能夠告訴我c語言的實驗報告怎麼寫
實驗題目:
編程實現:二叉樹採用二叉鏈表存儲,要求建立一棵二叉樹,並輸出要求的樹狀形式與結點編號。
結點結構為:
lchied Data num rchied
其中二叉樹的num編號域為整數類型,data數據域為字元類型,
要求生成二叉樹中編號,從1開始進行連續編號,每個結點的編號大於其左右子樹中孩子的編號,同一個結點的左右孩子中,其左孩子的編號小於其右孩子的編號,
請給出對二叉樹中結點的實現如上要求編號並按如下樹狀形式列印出相應點編號的程序。
測試數據:輸入 AB∪D∪∪CE∪F∪∪∪ (其中符號「∪」表示空格(space)字元)
實驗分析:
本題的考察點:二叉樹遍歷應用。本題主要涉及到對二叉樹的創建,二叉樹的列印,以及在遍歷的時候順便給每個節點編號,這樣列印的時候順便就把節點的序號也列印出來了。下面分別給出三個演算法。
二叉樹的創建演算法:
二叉樹的列印演算法:
給結點的編號演算法:
另外在這里也闡明一下二叉樹的結構:
結合上面的四個演算法,這個問題自然也就迎刃而解了,這樣也就能得到這個問題的完整程序。
完整程序如下:
#include<stdio.h>
#include<stdlib.h>
typedef struct BiTNode
{
int num;
char data;
struct BiTNode *LChild,*RChild;
}BiTNode,*BiTree;
void CreateBiTree(BiTree *BT)
{
char ch;
ch=getchar();
if (ch==' ') (*BT)=NULL; /* #代表空指針*/
else
{
(*BT)=(BiTree) malloc(sizeof(BiTNode));/*申請結點 */
(*BT)->data=ch; /*生成根結點 */
CreateBiTree(&((*BT)->LChild)); /*構造左子樹 */
CreateBiTree(&((*BT)->RChild)); /*構造右子樹 */
}
}
void print(BiTree root,int nlayer)
{
int i;
if(root==NULL)return;
print(root->RChild,nlayer+4);
for(i=0;i<nlayer;i++)
printf(" ");
printf("%c%d\n",root->data,root->num);
print(root->LChild,nlayer+4);
}
void num(BiTree bt)
{
static int i=1; //定義靜態全局變數
if(bt!=NULL)
{
num(bt->LChild);
num(bt->RChild);
bt->num=i;
i++;
}
}
int main()
{
BiTree bt;
printf("請輸入相關字元以創建一個二叉樹:\n");
CreateBiTree(&bt);
num(bt);
print(bt,1);
return 0;
}
程序的測試結果:
實驗總結:
在解決具體的實驗問題時,我們要分析問題,將一個大的問題細分為一個個小的問題,再去分析解決一個個小的問題,這樣就能很好的解決問題了。在平時的實驗過程中,要注重培養自己的分析問題及解決問題的能力。
大致一個流程和格式是這樣的,具體的可以自己添加。。。。
④ c語言先排序後折半查找程序的實驗報告
1實驗目的:熟練掌握一維亮銷數組,二維數組的定首巧義,初始化和輸入輸出方法;熟練掌握與數組有關的常用演算法(如查找,排序等)。
2實驗內容:設定一個整形數組存放20個元素,用直接賦值的方法在程序中初始化該數組。先對這些無序的數據進行排序,然後採用折半查找,把要尋找的數的位置輸出出來。
3演算法描述流程圖
源程序:#include<stdio.h>
void main()
{int k,s,b,i,j,m,n,a[20]={12,9,16,21,6,11,19,4,8,20,15,2,5,18,14,7,3,10,13,17};
for(s=0;s<20;s++)
{
for(i=s+1;i<20;i++)
{
if(a[s]>a[i])
{
j=a[s];
a[s]=a[i];
a[i]=j;
}
}
}
scanf("%d",&b);
m=0;
n=19;
while(m<=n)
{
k=(m+n)/2;
if(b==a[k])
{
printf("FOUND\n");
printf("%d\n",k+1);
break;
}
else
{
if(b<a[k])
n=k-1;
else
m=k+1;
}
if(m>n)
printf("NO FOUND");
}
}
5測試數據:3,5, 20,30
6運行結果:FOUND 2;FOUND 4;FOUND 19 ;NO FOUND
7出現問題及解決方法:編譯時出錯,修改源程序,直到沒有錯誤為止
8實驗心得:通過折半查找,可以實現對數組數據的處敬芹游理,並且增加了查找速度
⑤ C語言實驗報告
我寫了個,不知道行不,有什麼不妥的請指出哈,如要格式請加我,將之發給你
四 川 大 學 計 算 機 學 院、軟 件 學 院
實 驗 報 告
學號: 姓名: 專業:計算機科學與技術 班級:5 第 13 周
課程名稱 c/C++ 實驗課時 2
實驗項目 字元串的復制與追加 實驗時間 08.5. 16
實驗目的 1.掌握字元串的基本操作和理解數據結構
實驗環境 VC 6.0
實驗內容(演算法、程序、步驟和方法) 先計算出S1和S2的字元個數,為S3分配好空間,利用已有庫函數先將S1復制到S3中,再將S2追加到S3中,當顯示完後要記住收回空間,做好善後處理。
源代碼如下:
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
char *s1="abcdef";
char *s2="123456f";
int n=strlen(s1)+strlen(s2);//計算s1,和s2的總長度n
char *s3=new char[n+1]; //定義S3並分配空間大小為n
strcpy(s3,s1); //將s1復制到s3中
strcat(s3,s2); //將s2追加到s3後面
cout<<"s3="<<s3<<endl;
delete []s3; //收回空間
s3=NULL; //將指針指向空
return 0;
}
(接上)
實驗內容(演算法、程序、步驟和方法)
結構是順序存儲結構,演算法順序鏈接法
數據記錄
和計算 數據有:字元串S1 ,S2;和一未知字元串S3
只需計算前兩個字元串長度之和
結 論
(結 果) 利用字元數組可以順序存儲字元數據,並且能夠順序處理數據;
演算法復雜度O(n+m);處於中性
小 結 字元數組能夠帶來很好的存儲結構,便於操作,但是演算法不是很好,只能順序遍歷數組,故復雜度不是很小
指導老師評 議
成績評定: 指導教師簽名:
⑥ c語言實驗報告總結怎麼寫
c語言實驗報告總結這樣寫:
在科技高度發展的今天,計算機在人們之中的作用越來越突出。而c語言作為一種計算機的語言,我們學習它,有助於我們更好的了解計算機,與計算機進行交流,因此,c語言的學習對我們尤其重要。
在這個星期里,我們專業的學生在專業老師的帶領下進行了c語言程序實踐學習。在這之前,我們已經對c語言這門課程學習了一個學期,對其有了一定的了解,但是也僅僅是停留在了解的范圍,對裡面的好多東西還是很陌生,的在運用起來的時候還是感到很棘手,畢竟,萬事開頭難嘛。
由於時間的關系,我們的這次實踐課程老師並沒有給我們詳細的介紹,只是給我們簡單的介紹了幾個比較重要的實際操作。包括了程序模塊處理.簡單界面程序.高級界面程序.程序的添加修改.用程序做一元線性回歸處理以及用c語言程序來畫粒度分布圖等這幾樣比較重要的時間操作。
上機實驗是學習程序設計語言必不可少的實踐環節,特別是c語言靈活、簡潔,更需要通過編程的實踐來真正掌握它。對於程序設計語言的學習目的,可以概括為學習語法規定、掌握程序設計方法、提高程序開發能力,這些都必須通過充分的實際上機操作才能完成。
學習c程序設計語言除了課堂講授以外,必須保證有不少於課堂講授學時的上機時間。因為學時所限,課程不能安排過多的統一上機實驗,所以希望學生有效地利用課程上機實驗的機會,盡快掌握用c語言開發程序的能力,為今後的繼續學習打下一個良好的基礎。
為此,我們結合課堂講授的內容和進度,安排了12次上機實驗。課程上機實驗的目的,不僅僅是驗證教材和講課的內容、檢查自己所編的程序是否正確,課程安排的上機實驗的目的可以概括為如下幾個方面:
1、加深對課堂講授內容的'理解
課堂上要講授許多關於c語言的語法規則,聽起來十分枯燥無味,也不容易記住,死記硬背是不可取的。然而要使用c語言這個工具解決實際問題,又必須掌握它。
通過多次上機練習,對於語法知識有了感性的認識,加深對它的理解,在理解的基礎上就會自然而然地掌握c語言的語法規定。對於一些內容自己認為在課堂上聽懂了,但上機實踐中會發現原來理解的偏差,這是由於大部分學生是初次接觸程序設計,缺乏程序設計的實踐所致。
學習c語言不能停留在學習它的語法規則,而是利用學到的知識編寫c語言程序,解決實際問題。即把c語言作為工具,描述解決實際問題的步驟,由計算機幫助我們解題。只有通過上機才能檢驗自己是否掌握c語言、自己編寫的程序是否能夠正確地解題。
通過上機實驗來驗證自己編制的程序是否正確,恐怕是大多數同學在完成老師作業時的心態。但是在程序設計領域里這是一定要克服的傳統的、錯誤的想法。因為在這種思想支配下,可能你會想辦法去"掩蓋"程序中的錯誤,而不是盡可能多地發現程序中存在的問題。
自己編好程序上機調試運行時,可能有很多你想不到的情況發生,通過解決這些問題,可以逐步提高自己對c語言的理解和程序開發能力。
2、熟悉程序開發環境、學習計算機系統的操作方法
一個c語言程序從編輯、編譯、連接到運行,都要在一定的外部操作環境下才能進行。所謂"環境"就是所用的計算機系統硬體、軟體條件,只有學會使用這些環境,才能進行程序開發工作。
通過上機實驗,熟練地掌握c語言開發環境,為以後真正編寫計算機程序解決實際問題打下基礎。同時,在今後遇到其它開發環境時就會觸類旁通,很快掌握新系統的使用。
3、學習上機調試程序
完成程序的編寫,決不意味著萬事大吉。你認為萬無一失的程序,實際上機運行時可能不斷出現麻煩。如編譯程序檢測出一大堆錯誤。有時程序本身不存在語法錯誤,也能夠順利運行,但是運行結果顯然是錯誤的。
開發環境所提供的編譯系統無法發現這種程序邏輯錯誤,只能靠自己的上機經驗分析判斷錯誤所在。程序的調試是一個技巧性很強的工作,對於初學者來說,盡快掌握程序調試方法是非常重要的。有時候一個消耗你幾個小時時間的小小錯誤,調試高手一眼就看出錯誤所在。
通過這次為數不多的幾天計算機實踐學習,我們了解了一些關於c語言的知識,理解鞏固了我們c語言的理論知識,著對我們將來到社會工作將會有莫大的幫助。同時它讓我知道,只要你努力,任何東西都不會太難!
⑦ C語言試驗報告該怎麼寫
實驗題目:
輸入一個班10個學生的學號和每個學生考試三門功課(數學、英語、計算機基礎)的成績。編程計算出每個學生的總分和平均分,並按學生成績優劣排序,最後列印一張按高分到低分名次排序的成績單。要求:
1)排序用一個函數實現。
2)列印的成績單表項包括:序號,學號、數學、英語、計算機、總分、平均分。
3)按實驗報告電子模板格式填寫實驗內容。
實驗目的
源程序清單:
(調試好的源程序代碼)
#include <stdio.h>
#include <stdlib.h>
#define STU_NUM 10 /*宏定義學生的數量*/
struct student /*定義一個結構體用來存放學生學號、三門課成績、總分及平均成績*/
{
char stu_id[20]; /*學生學號;*/
float score[3]; /*三門課成績;*/
float total; /*總成績;*/
float aver; /*平均成績;*/
};
/*排序用一個函數來實現*/
void SortScore(student *stu,int n)
{
student stud;
for(int i = 0; i < n-1; i++)
for(int j = i+1 ; j < n; j++)
{
if(stu[i].total < stu[j].total)
{
stud = stu[i];
stu[i] = stu[j];
stu[j] = stud;
}
}
}
int main( )
{
student stu[STU_NUM]; /*創建結構體數組中有10個元素,分別用來保存這10個人的相關信息。*/
/*輸入這十個學生的相關信息*/
for(int i = 0; i<STU_NUM; i++)
{
printf("請輸入第%d個學生的學號:",i+1);
scanf("%s",&stu[i].stu_id);
printf("輸入第%d個學生的數學成績:",i+1);
scanf("%f",&stu[i].score[0]);
printf("輸入第%d個學生的英語成績:",i+1);
scanf("%f",&stu[i].score[1]);
printf("輸入第%d個學生的計算機成績:",i+1);
scanf("%f",&stu[i].score[2]);
stu[i].total = stu[i].score[0]+stu[i].score[1]+stu[i].score[2];
stu[i].aver = stu[i].total/3;
}
printf("\n");
SortScore(stu,STU_NUM);/*調用排序函數*/
/*輸出排序後的各學生的成績*/
for(i = 0 ; i < STU_NUM; i++)
{
printf("序號: %d\t",i);
printf("學號:%s\t",stu[i].stu_id);
printf("數學:%f\t",stu[i].score[0]);
printf("英語:%f\t",stu[i].score[1]);
printf("計算機:%f\t",stu[i].score[2]);
printf("平均成績:%f\t",stu[i].aver);
printf("總分:%f\t",stu[i].total);
printf("\n\n");
}
return 0;
}
主要標識符說明:
(源程序中主要標識符含義說明)
#define STU_NUM 10 /*宏定義學生的數量*/
struct student /*定義一個結構體用來存放學生學號、三門課成績、總分及平均成績*/
{
char stu_id[20]; /*學生學號;*/
float score[3]; /*三門課成績;*/
float total; /*總成績;*/
float aver; /*平均成績;*/
};