第一篇:c語言實驗報告完成版
《高級語言程序設(shè)計》
學(xué) 生 實 驗 報 告
專業(yè):計算機科學(xué)與技術(shù) 學(xué)號: 姓名: 實驗一 C程序的運行環(huán)境和使用方法
1.實驗?zāi)康?/p>
1)了解所用的計算機系統(tǒng)的基本操作方法,學(xué)會獨立使用該系統(tǒng)。2)了解在該系統(tǒng)上如何編輯、編譯、連接和運行一個C程序。3)通過運行簡單的C程序,初步了解C程序的特點。
2.實驗程序清單及運行結(jié)果
課后習(xí)題1.5 編寫一個C程序,輸出以下信息:
************************** Very Good!************************** Source
#include
Source
#include
1.實驗?zāi)康?/p>
1)掌握C語言的數(shù)據(jù)類型,熟悉如何定義整型、字符型和實型的變量,以及對它們賦值的方法。
2)掌握不同類型的數(shù)據(jù)之間賦值的規(guī)律。
3)學(xué)會用C的有關(guān)算術(shù)運算符,以及包含這些運算符的表達(dá)式。4)掌握C語言中使用最多的一種語句——賦值語句的使用方法。
5)掌握scanf()函數(shù)、printf()函數(shù)的調(diào)用方法,掌握各種類型數(shù)據(jù)的輸入輸出的方法,能正確使用各種格式轉(zhuǎn)換符。
6)掌握字符輸入輸出函數(shù)getchar()、putchar()函數(shù)的調(diào)用方法。
2.運行程序及填空
(一)輸入并運行下面的程序,寫出運行結(jié)果。
#include
答:一樣,因為第六行的printf輸出的是%c即字符,任然將c1,c2按照ASCII碼字以符形式輸出。
(二)程序填空:輸入一個十進(jìn)制整數(shù),輸出與之相應(yīng)的八進(jìn)制數(shù)與十六進(jìn)制數(shù)。
例如:輸入31,輸出37(八進(jìn)制)和1F(十六進(jìn)制)。源程序如下: #include
scanf(“%d”,&n);printf(“對應(yīng)的八進(jìn)制整數(shù)是 % o n”, n);printf(“對應(yīng)的十六進(jìn)制整數(shù)是 % X n”, n);return 0;} 運行程序,輸入1234567,顯示結(jié)果如何? 答:輸入一個十進(jìn)制整數(shù):1234567 對應(yīng)的八進(jìn)制整數(shù)是 4553207 對應(yīng)的十六進(jìn)制整數(shù)是 12D687 3.實驗程序清單及運行結(jié)果
課后習(xí)題3.7
要將“China”譯成密碼。
Source
#include
求圓周長C1、圓面積Sa、圓球表面積Sb、圓球體積Va、圓柱體積Vb。
Source
#include
輸入一個華氏溫度,要求輸出攝氏溫度。公式為c=5(F-32)/9。取位2小數(shù)。
Source
#include
1.實驗?zāi)康?/p>
1)了解C語言表示邏輯量的方法(以0代表“假”,以非0代表“真”)。2)學(xué)會正確使用關(guān)系運算符、邏輯運算符和相關(guān)表達(dá)式。3)熟練掌握if語句和switch語句。4)結(jié)合程序掌握一些簡單的的算法。5)學(xué)習(xí)調(diào)試程序。
2.程序填空
請將下列源程序填寫完整。程序說明:輸入實數(shù)x, 計算并輸出下列分段函數(shù)f(x)的值,結(jié)果保留2位小數(shù)。
?x?1x??1?xf(x)??e?1?x?1
?2x?1?x?1#include
#include
輸入 0.5,顯示結(jié)果是:1.65
輸入 3,顯示結(jié)果是:3.16
3.實驗程序清單及運行結(jié)果
課后習(xí)題5.5 有一個函數(shù)
/ x
(x<1)y={ 2x-1(1<=x<10)3x-11(x>=10)寫一段程序,輸入x,輸出y Source
#include
{if(x<1)y=x;else y=2*x-1;} else y=3*x-11;printf(“%dn”,y);return 0;} 課后習(xí)題5.6 給出一百分制成績,要求輸出成績等級‘A’、‘B’、‘Source
#include
if(90<=t&&t<=100)printf(“An”);else if(80<=t&&t<=89)printf(“Bn”);else if(70<=t&&t<=79)printf(“Cn”);
C’、‘D’、‘E’。
else if(60<=t&&t<=69)printf(“Dn”);else if(0<=t&&t<=59)printf(“En”);} 課后習(xí)題5.7 給出一個不多于5位的非負(fù)整數(shù),要求
1、求出它是幾位數(shù)
2、分別輸出每一位數(shù)字
3、按逆序輸出各位數(shù)字,例如原數(shù)為321,應(yīng)輸出123
Source
#include
課后習(xí)題5.8 企業(yè)發(fā)放的獎金根據(jù)利潤提成。
Source
#include
P=I*10/100;else if(I<=200000)
P=10000+(I-100000)*75/1000;else if(I<=400000)
P=17500+(I-200000)*5/100;else if(I<=600000)
P=27500+(I-400000)*3/100;else if(I<=1000000)
P=33500+(I-600000)*15/1000;else
P=39500+(I-1000000)*1/100;printf(“%dn”,P);return 0;}
實驗四 循環(huán)結(jié)構(gòu)程序設(shè)計
1.實驗?zāi)康?/p>
1)熟悉掌握用while語句、do-while語句和for語句實現(xiàn)循環(huán)的方法。2)掌握循環(huán)次數(shù)不確定的解題技巧,掌握多項式求和問題的解題技巧。3)掌握多重循環(huán)的編程技巧。
4)掌握在程序設(shè)計中用窮舉法、迭代法、遞推法求解問題的編程技巧。5)進(jìn)一步學(xué)習(xí)調(diào)試程序。
2.程序填空
輸出菲波那契數(shù)列的前20項,要求每行輸出10項。#include
for(i= 3;i<=20;i++){ x=x1+x2;printf(“%6d”,x);
if(i%10==0)printf(“n”);x1= x2;x2= x;
/*每行輸出10項*/ 9 } return 0;} 3.實驗程序清單及運行結(jié)果
課后習(xí)題6.1
輸入兩個正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)。
Source
#include
m=n;
n=t;
t=m%n;} printf(“%d %dn”,n,x*y/n);}
課后習(xí)題6.2 輸入一行字符,分別統(tǒng)計出其中英文字母、數(shù)字、空格和其他字符的個數(shù)。
Source
#include
while((c=getchar())!='n'){
if(c>='a'&&c<='z'||c>='A'&&c<='Z')
w++;
else if(c==' ')
x++;
else if(c>='0'&&c<='9')
y++;
else
z++;} printf(“%d %d %d %dn”,w,y,x,z);} 課后習(xí)題6.3 Sn=2+22+222+2222+22222+22...2222(最后一項n個2)
Source
#include
t=t+a;
s=s+t;
a=a*10;} printf(“%dn”,s);}
課后習(xí)題6.10 猴子吃桃問題。求第一天共摘多少桃子。
Source
#include s=(s+1)*2;} printf(“%dn”,s);} 實驗五 數(shù)組 1.實驗?zāi)康?/p> 1)掌握一維數(shù)組和二維數(shù)組的定義、賦值和輸入輸出的方法。2)掌握字符數(shù)組和字符串函數(shù)的使用。3)掌握與數(shù)組有關(guān)的算法(特別是排序算法)。 2.程序填空 (一)程序填空:輸入一個整數(shù)n(1≤n≤10),再輸入n個整數(shù),將它們按升序排列后輸出。 選擇排序基本思想: (1)由于n最大是10,需要定義一個長度為10的整型數(shù)組a; (2)整個排序只需要確定前n-1個元素(a[0] ~a[n-2]),最后一個元素a[n-1]無需另外處理; 12(3)在確定a[i](i=0,1,…,n-2)時,先將a[i]本身看成最小,即令k=i,并將a[k]與后面的元素a[j](j=i+1, i+2, …, n-1)一一比較,如果a[j]< a[k],則更新k的值:k =j。找出對應(yīng)于下標(biāo)i的最小元素a[k]后,交換a[i]與a[k]。#include printf(“Input %d numbers:n”, n); for(i=0;i scanf(“%d”,&a[i]);//輸入n個整型元素 //選擇法排序 for(i=0;i< n-1;i++){ k= i;//設(shè)a[i]為剩余部分的最小元素 for(j= i+1;j a[i]=a[k]; a[k]=temp; //a[i]??a[k] temp=a[i];} for(i=0;i printf(“%d ”,a[i]);//輸出排序后的數(shù)組 printf(“n”);return 0;} 【思考題】運行程序,輸入n:5,輸入5個整數(shù):23-9 14 0-3,顯示結(jié)果是什么? 如果是按從大到小的降序排列,語句行Line 12 應(yīng)怎么修改? 答;⑴顯示結(jié)果Input n(1~10):5 ⑵Line 12 應(yīng)改為 if(a[j]>a[k])k=j; Input 5 numbers: 23-9 14 0 3-9 0 3 14 23 (修改上面的程序,從在線評測系統(tǒng)中提交調(diào)試好的程序,題號1032。) (二)程序填空:輸入5個整數(shù), 將這5個數(shù)按逆時針順序轉(zhuǎn)動一次后再輸出,如輸入1 2 3 4 5,逆時針轉(zhuǎn)動一次后,輸出2 3 4 5 1。 提示:設(shè)存放整數(shù)的數(shù)組為a。要實現(xiàn)數(shù)組逆時針轉(zhuǎn)動,只要先將首元素a[0]“搬”至一個變量t中;然后從第1個元素到最后1個元素,依次向前移一位,即a[i-1]= a[i](i= 1, … , 4);最后將存放在t中的首元素放入最后的元素。#include for(i= 1;i< 5;i++)a[i-1]=a[i]; a[4] = t; printf(“After rotation:n”);for(i=0;i<5;i++) printf(“%5d”, a[i]);printf(“n”);return 0; } 14 3.實驗程序清單及運行結(jié)果 課后習(xí)題7.1 用篩法求之N內(nèi)的素數(shù)。 Source #include k=sqrt(m); for(i=2;i<=k;i++) if(m%i==0)break; if(i>=k+1) printf(“%dn”,m);} } 課后習(xí)題7.2 用選擇法對10個整數(shù)從小到大排序。 Source #include 課后習(xí)題7.4 有一個已排好的9個元素的數(shù)組,輸入一個數(shù)要求按原來排序的規(guī)律將它插入數(shù)組中。 Source #include 課后習(xí)題7.5 輸入10個數(shù)字,然后逆序輸出。 Source #include } for(i=0;i<=9;i++)scanf(“%d”,&a[i]);for(i=9;i>=0;i--)printf(“%d ”,a[i]);return 0;實驗六 函數(shù) 1.實驗?zāi)康?/p> 1)掌握定義函數(shù)的方法。 2)掌握函數(shù)實參與形參的對應(yīng)關(guān)系以及“值傳遞”的方式。3)掌握函數(shù)的嵌套調(diào)用和遞歸調(diào)用的方法。 4)掌握全局變量和局部變量、動態(tài)變量和靜態(tài)變量的概念和使用方法。5)學(xué)習(xí)對多文件程序的編譯和運行。 2.程序填空 驗證哥德巴赫猜想——任何一個大于6的偶數(shù)均可表示為兩個素數(shù)之和。例如:6=3+3,8=3+5,10=5+5,…,18=7+11。要求將6-100之間的偶數(shù)均表示為素數(shù)之和,一行輸出5組。#include //逐個處理6~100之間的偶數(shù)k { for(a=2;a 層循環(huán) { b=k-a;if(prime(a)&&prime(b))break;//如果a,b同為素數(shù), 跳出內(nèi) } //內(nèi)層循環(huán) printf(“%d=%d+%d ”,k,a,b);//輸出k=a+b if(k%5==0)printf(“n”); //每行輸出5組,注意第一行只有3組 } //外層循環(huán) return 0;} //自定義函數(shù)prime(n),判斷整數(shù)n是否是素數(shù),是則返回1,不是則返回0 int prime(int n){ int i; for(i=2;i<=n;i++)if(n%i==0)break;if(i==n)return 1;//n是素數(shù),返回1 else } return 0;// n不是素數(shù),返回0 3.實驗程序清單及運行結(jié)果 課后習(xí)題8.1 寫兩個函數(shù),分別求兩個整數(shù)的最大公約數(shù)和最小公倍數(shù),用主函數(shù)調(diào)用這兩個函數(shù) Source #include t=x%y; x=y; y=t;} return x;} int lcm(int x,int y){ return x*y/gcd(x,y); } 課后習(xí)題8.3 寫一個判斷素數(shù)的函數(shù),在主函數(shù)輸入一個正整數(shù),輸出是否是素數(shù)的消息。 Source #include 課后習(xí)題8.5 寫一函數(shù),使輸入的一個字符串按反序存放,在主函數(shù)中輸入輸出反序后的字符串。 Source #include t=a[i]; a[i]=a[n-1-i]; a[n-1-i]=t;} } 課后習(xí)題8.7 寫一個函數(shù),輸入一個四位數(shù),要求輸出這四個數(shù)字字符,但要求每兩個數(shù)字間空格。 Source #include } int max(int x){ scanf(“%d”,&a);max(a);20 if(x/10!=0)max(x/10);printf(“%d ”,x%10);} 實驗七 指針 1.實驗?zāi)康?/p> 1)通過實驗進(jìn)一步掌握指針的概念、會定義和使用指針變量。2)能正確使用數(shù)組的指針和指向數(shù)組的指針變量。3)能正確使用字符串的指針和指向字符串的指針變量。4)能正確使用指向函數(shù)的指針變量。 5)了解指向指針的指針的概念及其使用方法。 2.程序填空 (一)程序填空:輸入三個整數(shù),要求設(shè)計2個指針變量p1、p2 ,使p1指向這三個數(shù)的最大值,p2指向最小者 ,并輸出最大值和最小值。#include if(*p1 p2= a>=b?&b:&a;//p2指向a,b中較小者 if(*p2>c)p2=&c; printf(?max=%d, min=%dn?, *p1,*p2);return 0;} 運行結(jié)果: 輸入 1 2 3 輸出 max=3, min=1 (二)程序填空:利用指針,將數(shù)組a中的10個整數(shù)按相反順序存放。源程序如下: #include for(;p!=a[5];p++ , q--)//逐對交換對稱元素 { t= *p;*p= *q;*q=t;} for(i=0;i<10;i++)printf(“%d ”, a[i]);printf(“n”);return 0;} 3.實驗程序清單及運行結(jié)果 以下程序都要求用指針處理。 課后習(xí)題10.1 輸入三個整數(shù),按由小到大的順序輸出。 Source #include 課后習(xí)題10.2 輸入三個字符串,按由小到大的順序輸出 Source #include if(strcmp(*p1,*p2)>0)swap(p1,p2);if(strcmp(*p1,*p3)>0)swap(p1,p3);if(strcmp(*p2,*p3)>0)swap(p2,p3);printf(“%sn%sn%sn”,*p1,*p2,*p3);} 課后習(xí)題10.5 有n人圍成一圈,順序排號。從第1個人開始報數(shù)(從1到3報數(shù)),凡報到3的人退出圈子,問最后留下的是原來的第幾號的那位。 Source #include for(p=a;p 課后習(xí)題10.7 有一字符串,包含n個字符。寫一函數(shù),將此字符串中從第m個字符開始的全部字符復(fù)制成為另一個字符串。Source #include 實驗八 結(jié)構(gòu)體與共用體 1.實驗?zāi)康?/p> 1)掌握結(jié)構(gòu)體類型變量的定義和使用。2)掌握結(jié)構(gòu)體類型數(shù)組及指針的定義和使用。3)掌握鏈表的概念,初步學(xué)會對鏈表進(jìn)行操作。 2.程序填空 定義一個關(guān)于平面點的結(jié)構(gòu)體類型,并定義一個含5個元素的結(jié)構(gòu)體數(shù)組,用于存放5個平面點;然后輸入這些點的坐標(biāo)值,并統(tǒng)計位于半徑為 3、以原點為圓心的圓之內(nèi)的點的個數(shù)。#include Double x,y;};int main(){ int i, num=0;_struct point__ p[5];//定義結(jié)構(gòu)體數(shù)組p printf(“Input 5 points: n”); for(i=0;i< 5;i++) scanf(“%lf%lf”, _p[i].x_ , __p[i].y_);//輸入5個點的坐標(biāo) for(i=0;i< 5;i++)//統(tǒng)計位于指定圓內(nèi)的點的個數(shù) if(p[i].x*p[i].x+p[i].y*p[i].y < 9)num++;printf(“ num= %d n”, num); return 0;} 運行程序,輸入 1.0 2.1 -3 4.23 9.0-8 4.5-1 -0.25-1.3 輸出num= 2 3.實驗程序清單及運行結(jié)果 課后習(xí)題11.1 定義一個結(jié)構(gòu)體變量(包括年、月、日)。計算該日在本年中是第幾天,注意閏年問題。 Source #include 課后習(xí)題11.3 現(xiàn)有有N個學(xué)生的數(shù)據(jù)記錄,每個記錄包括學(xué)號、姓名、三科成績。編寫一個函數(shù)input,用來輸入一個學(xué)生的數(shù)據(jù)記錄。編寫一個函數(shù)print,打印一個學(xué)生的數(shù)據(jù)記錄。 在主函數(shù)調(diào)用這兩個函數(shù),讀取N條記錄輸入,再按要求輸出 Source #include char hao[50]; char name[50]; double score[3];};int main(){ scanf(“%d”,&N);void input(struct Student stu[]);void print(struct Student stu[]);struct Student stu[100],*p=stu;input(p);print(p);return 0;} void input(struct Student stu[]){ int i;for(i=0;i scanf(“%s %s %lf %lf %lf”,stu[i].hao,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);} } void print(struct Student stu[]){ int i;for(i=0;i printf(“%s,%s,%.0lf,%.0lf,%.0lfn”,stu[i].hao,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2]);} } 課后習(xí)題11.5 有N個學(xué)生,每個學(xué)生的數(shù)據(jù)包括學(xué)號、姓名、3門課的成績,從鍵盤輸入N個學(xué)生的數(shù)據(jù),要求打印出3門課的總平均成績,以及最高分的學(xué)生的數(shù)據(jù)(包括學(xué)號、姓名、3門課成績) Source #include char hao[50]; char name[50]; double score[3];};struct S stu[100];int N,i,j,sum1,sum2,sum3,max,k;scanf(“%d”,&N);sum1=0;sum2=0,sum3=0;for(i=0;i scanf(“%s %s %lf %lf %lf”,stu[i].hao,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);} for(i=0;i sum1=stu[i].score[0]+sum1; sum2=stu[i].score[1]+sum2; sum3=stu[i].score[2]+sum3;} printf(“%.0lf %.0lf %.0lfn”,sum1/N*1.0,sum2/N*1.0,sum3/N*1.0);max=stu[0].score[0]+stu[0].score[1]+stu[0].score[2];for(i=1;i if(max<(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])) max=stu[i].score[0]+stu[i].score[1]+stu[i].score[2],k=i;} printf(“%s %s %.0lf %.0lf %.0lf”,stu[k].hao,stu[k].name,stu[k].score[0],stu[k].score[1],stu[k].score[2]);} 課后習(xí)題11.8 已有a、b兩個鏈表,每個鏈表中的結(jié)點包括學(xué)號、成績。要求把兩個鏈表合并,按學(xué)號升序排列。 Source #include 《Matlab語言》實驗(報告)題庫 1、TDOA信號分析類 (1)已給出一段事先采集的信號,該信號為進(jìn)行TDOA定位使用的基本信號,其格式為GPS+IQ + GPS+IQ …,即每包數(shù)據(jù)由GPS頭文件和IQ信號構(gòu)成,GPS頭文件共58B,其數(shù)據(jù)格式為 $HT,20130114,084556,N3606.82273,E10343.59311,M1538.7,11,0*,每包IQ數(shù)據(jù)共8192B,其數(shù)據(jù)格式為I0,Q0,I1,Q1,I2,Q2…,I2047,Q2047,即I數(shù)據(jù)2048點、Q數(shù)據(jù)2048點交叉出現(xiàn)。換言之,每包數(shù)據(jù)實際內(nèi)容為:$HT,20130114,084556,N3606.82273,E10343.59311,M1538.7,11,0* I0 Q0 I1 Q1 I2 Q2 … I2047 Q2047,程序前期已實現(xiàn)讀取IQ數(shù)據(jù)文件并進(jìn)行關(guān)鍵信息讀取分解,請根據(jù)程序提醒,完成相關(guān)功能(數(shù)據(jù)及程序見“1-實際IQ信號實驗”文件夾)。 2、TDOA時差估計仿真類 (2)在TDOA定位技術(shù)中,時差估計是一個非常重要的環(huán)節(jié)。自行仿真2個具有一定時差的信號,用廣義互相關(guān)法(GCC)計算該2個信號的時差,并與設(shè)定時差進(jìn)行對比分析(需給出詳細(xì)過程及適當(dāng)?shù)姆抡鎴D)。 (3)在TDOA定位技術(shù)中,時差估計是一個非常重要的環(huán)節(jié)。自行仿真2個具有一定時差的信號,用互模糊函數(shù)法計算該2個信號的時差,并與設(shè)定時差進(jìn)行對比分析(需給出詳細(xì)過程及適當(dāng)?shù)姆抡鎴D)。 (4)在TDOA定位技術(shù)中,時差估計是一個非常重要的環(huán)節(jié)。自行仿真2個具有一定時差的信號,用廣義互相關(guān)(GCC)結(jié)合多項式擬合方法計算該2個信號的時差,并比較廣義互相關(guān)法估計時差和廣義互相關(guān)結(jié)合多項式擬合方法估計時差的結(jié)果,進(jìn)行分析(需給出詳細(xì)過程及適當(dāng)?shù)姆抡鎴D)。 (5)在TDOA定位技術(shù)中,時差估計是一個非常重要的環(huán)節(jié)。自行仿真2個具有一定時差的信號,自選方法計算該2個信號的時差,并與設(shè)定時差進(jìn)行對比分析(需給出詳細(xì)過程及適當(dāng)?shù)姆抡鎴D)。 3、TDOA時差估計實測類 下面三題使用“3-TDOA實測類-數(shù)據(jù)”。 (6)在TDOA定位技術(shù)中,時差估計是一個非常重要的環(huán)節(jié)。根據(jù)提供的TDOA數(shù)據(jù),用廣義互相關(guān)(GCC)計算該2路信號的時差,統(tǒng)計每包數(shù)據(jù)計算結(jié)果,并分析之(需給出詳細(xì)解決過程及適當(dāng)?shù)姆治鰣D)。 (7)在TDOA定位技術(shù)中,時差估計是一個非常重要的環(huán)節(jié)。根據(jù)提供的TDOA數(shù)據(jù),用廣義互相關(guān)(GCC)結(jié)合多項式擬合方法計算該2路信號的時差,比較廣義互相關(guān)法估計時差和廣義互相關(guān)結(jié)合多項式擬合方法估計時差的結(jié)果,并分析之(需給出詳細(xì)解決過程及適當(dāng)?shù)姆治鰣D)。 (8)在TDOA定位技術(shù)中,時差估計是一個非常重要的環(huán)節(jié)。根據(jù)提供的TDOA數(shù)據(jù),自選方法計算該2路信號的時差,統(tǒng)計每包數(shù)據(jù)計算結(jié)果,并分析之(需給出詳細(xì)解決過程及適當(dāng)?shù)姆治鰣D)。 4、信號頻域分析類 (9)生成一個帶有噪聲的正弦波信號,信號的頻率、幅度,噪聲的幅度自行設(shè)定。(將帶有噪聲的正弦信號放入for循環(huán)中,利于pause,實現(xiàn)噪聲動態(tài)變化效果,并在for循環(huán)內(nèi)畫出其時域圖和幅頻圖(采樣率和采樣點數(shù)自行設(shè)定),觀察動態(tài)變化情況),最后總結(jié)系統(tǒng)采樣率和采樣點數(shù)對仿真信號效果的影響。 (10)自行生成一段時域信號,要求在不同的時間,信號具有不同的頻率(即非平穩(wěn)信號),用短時傅里葉變換對其進(jìn)行時頻分析,并呈現(xiàn)時頻分析結(jié)果。 (11)自行生成一段時域信號,要求在不同的時間,信號具有不同的頻率(即非平穩(wěn)信號),用小波變換對其進(jìn)行時頻分析,并呈現(xiàn)時頻分析結(jié)果。 5、信號調(diào)制解調(diào)類 (12)自行產(chǎn)生正弦信號作為基帶信號、載波,試合成AM信號,在AM信號上加高斯白噪聲,并將AM信號解調(diào),畫出各信號(基帶信號、載波、合成的AM信號、解調(diào)后的基帶信號)時域圖及頻譜圖,并對比總結(jié)解調(diào)效果。 (13)自行產(chǎn)生正弦信號作為基帶信號、載波,試合成FM信號,在FM信號上加高斯白噪聲,并將FM信號解調(diào),畫出各信號(基帶信號、載波、合成的FM信號、解調(diào)后的基帶信號)時域圖及頻譜圖,并對比總結(jié)解調(diào)效果。 (14)自行產(chǎn)生一個正弦信號,以此為載波,生成一段2ASK信號,其中數(shù)字序列隨機生成,畫出數(shù)字基帶序列、正弦信號、2ASK信號的時域圖。 (15)自行產(chǎn)生兩個不同頻率的正弦信號,以此為載波,生成一段2FSK信號,其中數(shù)字序列隨機生成,畫出數(shù)字基帶序列、兩個正弦信號、2FSK信號的時域圖。 (16)用Matlab模擬通信系統(tǒng)收發(fā)過程,要求:發(fā)射站發(fā)射FM調(diào)制信號,接收站接收該信號,并進(jìn)行解調(diào),系統(tǒng)參數(shù)及傳播環(huán)境/過程參數(shù)自定。 6、信號分離類 (17)自行生成一個含有3個頻率(信號頻率相近,如200Hz,210Hz,300Hz)的信號,其他參數(shù)自定,直接用FFT難以將不同頻率信號,尤其頻率較近的信號進(jìn)行分離,試用AR等高階功率譜方法,將該信號進(jìn)行分離,并繪制分離前后的頻譜圖(即信號的FFT圖、信號的AR分離圖)。 (18)自行生成一個含有不同頻率或不同相位的信號,直接用FFT難以將不同頻率信號,尤其頻率較近或同頻率不同相位的信號進(jìn)行分離,試用MUSIC方法,將該信號進(jìn)行分離,并繪制分離前后的頻譜圖(即原信號的FFT圖、信號的MUSIC分離圖),并總結(jié)現(xiàn)象。 (19)自行產(chǎn)生一段含有低頻、高頻和噪聲成分的信號,嘗試設(shè)計不同的濾波器,將高頻信號及噪聲濾掉,并繪制濾波前后的信號對比圖(含時域、頻域圖)。 7、深度學(xué)習(xí)類 (20)設(shè)計一個神經(jīng)網(wǎng)絡(luò)(可以是任意類型的神經(jīng)網(wǎng)絡(luò)),對手寫數(shù)字進(jìn)行分類,要求小組內(nèi)每個成員至少每人手寫一個數(shù)字,然后識別,并分析識別準(zhǔn)確率。 (21)自行找一個預(yù)訓(xùn)練好的網(wǎng)絡(luò),對日常生活物品進(jìn)行識別,要求小組內(nèi)每個成員拍照1~2個物品,通過網(wǎng)絡(luò)進(jìn)行識別,并分析識別效果。 學(xué)號:__________ 姓名:__________ 班級:__________ 日期:__________ 指導(dǎo)教師:__________ 成績:__________ 實驗一 上機操作初步和簡單的C程序設(shè)計 一、實驗?zāi)康?、熟悉C語言運行環(huán)境Turbo C++3.02、會簡單的程序調(diào)試 3、熟悉C語言各種類型數(shù)據(jù)的輸入輸出函數(shù)的使用方法 4、掌握順序結(jié)構(gòu)程序設(shè)計 二、實驗內(nèi)容 1、上機運行本章3個例題,熟悉所用系統(tǒng)的上機方法與步驟。(習(xí)題1.7) 2、編寫一個C程序,輸入a、b、c 3個值,輸出其中最大者。(習(xí)題1.6) 3、設(shè)圓半徑r=1.5,圓柱高h(yuǎn)=3,求圓周長、圓面積、圓球表面積、圓球體積、圓柱體積。用scanf輸入數(shù)據(jù),輸出計算結(jié)果,輸出時要求有文字說明,取小數(shù)點后2位數(shù)字。注意:在Trubo C++ 3.0中不能輸入漢字,只能輸入英文或拼音。(習(xí)題4.8) 4、運行如下程序,寫出運行結(jié)果。第一┆范文網(wǎng)004km.cn整理該文章,版權(quán)歸原作者、原出處所有...#include void main() { int a=1,b=2; a=a+b;b=a-b;a=a-b; printf(“%d,%dn”,a,b); } 三、實驗步驟與過程 四、程序調(diào)試記錄 實驗一 C程序的運行環(huán)境和運行C程序的辦法 1.實驗?zāi)康?/p> (1)了解所用的計算機系統(tǒng)的基本操作方法,學(xué)會獨立使用該系統(tǒng)。(2)了解在該系統(tǒng)上如何編輯、編譯、連接和運行一個C程序。(3)通過運行簡單的C程序,初步了解C源程序的特點。(2)進(jìn)入所用的集成環(huán)境。 (3)熟悉集成環(huán)境的界面和有關(guān)菜單的使用方法。(4)輸入并運行一個簡單的、正確的程序。 ①根據(jù)本書介紹的方法對源程序進(jìn)行編譯,觀察屏幕上顯示的編譯信息。若出錯則返回修改,無錯則連接。② 編譯連接無錯,運行程序,觀察分析運行結(jié)果。(5)輸入并編譯一個有錯誤的C程序。 (6)輸入并運行一個需要在運行時輸入數(shù)據(jù)的程序。(7)運行一個自己編寫的程序 心得體會:了解了C程序的運行環(huán)境和運行C程序的辦法。在學(xué)校機房選用的是Turbo C。 實驗二 數(shù)據(jù)類型、運算符和表達(dá)式 1.實驗?zāi)康?/p> (1)掌握C語言數(shù)據(jù)類型、熟悉如何定義一個整型、字符型和實型的變量,以及對他們的賦值方法。(2)掌握不同數(shù)據(jù)類型之間的賦值規(guī)律。 (3)學(xué)會使用C的有關(guān)算術(shù)運算符,以及包含這些運算符的表達(dá)式,特別是自加(++)和自減(--)運算符的使用。(4)進(jìn)一步熟悉C程序的編輯、編譯、連接和運行的過程。2.實驗內(nèi)容和步驟(1)輸入并運行下面程序: #include ②在上面printf語句下面再增加一個printf語句: printf(“%d %dn”,c1,c2);再運行,并分析結(jié)果,結(jié)果為97 98 ③將第三行改為 int c1,c2;再使之運行,并觀察結(jié)果,結(jié)果為97 98 ④再將第4、5行改為;c1=a;c2=b;再使之運行,并觀察結(jié)果,結(jié)果為運行出錯。⑤再將第4、5行改為: (1)檢查所用計算機系統(tǒng)是否已安裝了C編譯系統(tǒng)并確定它所在的子目錄。 c1=”a”;c2=”b”;再使之運行,并觀察結(jié)果,結(jié)果為404 406 ⑥再將第4、5行改為: c1=300;c2=400;再使之運行,并觀察結(jié)果,結(jié)果為300 400; 心得體會:在編寫C程序時,有些細(xì)小的錯誤會影響結(jié)果的正確性。所以編寫的時候要仔細(xì)小心。初步編寫完成要回過頭來再檢查一遍 實驗三 最簡單的C程序設(shè)計 1.實驗?zāi)康?/p> (1)掌握C語言中使用最多的一種語句——賦值語句的使用方法。(2)掌握各種類型數(shù)據(jù)的輸入輸出方法,能正確使用各種格式轉(zhuǎn)換符。2.實驗內(nèi)容和步驟 (1)通過下面的程序掌握各種格式轉(zhuǎn)換符的正確使用方法。①輸入以下程序 #include c1=a,c2=b d= 3.56,e=-6.87 f= 3157.890121,g= 0.123456789000 m=50000,n=-60000 p=32768,q=40000 運行程序,分析結(jié)果a=-15536,b=5536 c1==,c2=> d=3157.89,e= 0.12 f= 3157.890121,g= 0.123456789000 m=50000,n=-60000 p=50000,q=5536 ④改用scanf函數(shù)輸入程序而不用賦值語句,scanf函數(shù)如下 scanf(“%d,%d,%c,%c,%f,%f,%lf,%lf,%ld,%ld,%u,%u”,&a,&b,&c1,&c2,&d,&e,&f,&g,&m,&n,&p,&q)輸入的數(shù)據(jù)如下: 61,62,a,b,3.56,-6.87,3157,89.121,0.123456789,50000,-60000,37678,40000 運行結(jié)果如下: 61,62,a,b,3.56,-6.87,3157.890121,0.123456789,50000,-60000,37678,40000 a=61,b=62 c1=a,c2=b d= 3.56,e=-6.87 f= 3157.890121,g= 0.123456789000 m=50000,n=-60000 p=37678,q=40000 ⑤在④的基礎(chǔ)上將printf改為:printf(“a=%d,b=%dnc1=%c,c2=%cnd=%15.6f,e=%15.12fn”,a,b,c1,c2,d,e);printf(“f=%f,g=%fnm=%d,n=%dnp=%d,q=%n”,f,g,m,n,p,q);a=61,b=62 c1=a,c2=b d= 3.560000,e=-6.869999885559 f=3157.890121,g=0.123457 m=-15536,n=0 p=5536,q=-1 ⑥將p,q改用%o格式符輸出a=61,b=62 c1=a,c2=b d= 3.560000,e=-6.869999885559 f=3157.890121,g=0.123457 m=-15536,n=0 p=12640,q=177777 ⑦將scanf函數(shù)中的%lf和%ld改為%f和%d,運行程序分析結(jié)果: c1=a,c2=b d= 3.560000,e=-6.869999885559 f=0.000000,g=0.000000 m=-15536,n=1824 p=5536,q=1983(2)按習(xí)題4.8要求編寫程序,并上機運行。題目為:設(shè)半徑r=1.5,圓柱高h(yuǎn)=3,求圓周長、圓面積、圓球表面積、圓球體積、圓柱體積。用scanf輸入數(shù)據(jù),輸出結(jié)果。輸出時要有文字說明,取小數(shù)點后兩位數(shù)字。#include 上機運行程序,比較用printf和putchar函數(shù)輸出字符的特點。代碼:#include 心得體會:如何在代碼中使用不同的函數(shù)從而簡化代碼,優(yōu)化代碼需要我們多加練習(xí),多加體會。 實驗四 邏輯結(jié)構(gòu)程序設(shè)計 1.實驗?zāi)康?/p> (1)了解C語言表示邏輯量的方法(以0代表“假”,以非0代表“真”)。 (2)學(xué)會正確使用邏輯運算符和邏輯表達(dá)式。(3)熟練掌握if語句和switch語句。(4)結(jié)合程序掌握一些簡單的算法。(5)學(xué)習(xí)調(diào)試程序。2.實驗內(nèi)容 (1)習(xí)題5.5。有一函數(shù): y=x (x<1)y=2x-1 (1≦x<10)y=3x-11(x≥10)用scanf函數(shù)輸入x的值,求y的值。 運行程序,輸入的x(分別為x<1,1~10,x≥10這3中情況),檢查輸出值的準(zhǔn)確性。# include } } 運行結(jié)果:x: ⑵ 給出一個百分制績,要求輸入成績ABCDE。90分以上的為A,81~89分為B,70~79分為C,60~69分為D,60分以下的為E。① 實現(xiàn)編號程序,要求分別用IF和switch語句來實現(xiàn)。運行結(jié)果,并檢查結(jié)果。 ② 在運行一次,輸入值為負(fù)值,這顯然時輸入錯誤,修改程序,是只能正確處理結(jié)果,當(dāng)輸入數(shù)據(jù)>100或<0是,通知用戶輸入錯誤,程序結(jié)束。# include case 70:grade='C';break;case 60:grade='D';break;case 50: case 40: case 30: case 20: case 10: case 00:grade='E';break;} printf(“score is %5.1fthe grade is %cn”,score,grade);getch();}(3)給一個不多于5為的正整數(shù),要求1:起哦出他是幾位數(shù),2:粉筆輸出每一位數(shù)字3;按逆順序輸出各個數(shù)字,例如原數(shù)321,應(yīng)輸出123,·要處理的數(shù)為1位正整數(shù); ·要處理的數(shù)為2位正整數(shù); ·要處理的數(shù)為3位正整數(shù); ·要處理的數(shù)為4位正整數(shù); ·要處理的數(shù)為5位正整數(shù)。 除此之外,程序還應(yīng)當(dāng)對不合法的輸入作必要的處理,例如: ·輸入負(fù)數(shù); ·輸入的數(shù)超過5位(如123456)代碼:#include 結(jié)果:與預(yù)期相符。 (4)輸入4個整數(shù),要求按由小到大順序輸出。 在得到正確結(jié)果后,修改程序使之按由大到小順序輸出。代碼1:#include 實驗五 循環(huán)控制 1.實驗?zāi)康?/p> (1)熟悉掌握用while語句、do-while語句和for語句實現(xiàn)循環(huán)的方法。 (2)掌握在程序設(shè)計中用循環(huán)的方法實現(xiàn)一些常用算法(如窮舉、迭代、遞推等)。(3)進(jìn)一步學(xué)習(xí)調(diào)試程序。2.實驗內(nèi)容 編程序并上機調(diào)試運行。 (1)輸入兩個正整數(shù)m和n,求他們的最大公約數(shù)和最小公倍數(shù) 在運行時,輸入的值m>n,觀察結(jié)果是否正確。 再輸入時,使m 修改程序,不論m和n為何值,都能得到正確結(jié)果。代碼:#include (2)輸入一行字符,分別統(tǒng)計出其中的英文字母、空格、數(shù)字和其他字符的個數(shù)。 在得到正確結(jié)果后,請修改程序使之能分別統(tǒng)計大小寫字母、空格、數(shù)字和其他字符的個數(shù)。代碼:#include (3)用牛頓迭代法求方程2x3-4x2+3x=6在1.5附近的根。 在得到正確結(jié)果后。請修改程序使所設(shè)的x初始值由1.5改變?yōu)?00、1000、10000,在運行,觀察結(jié)果,分析不同的x處置對結(jié)果有沒有影響,為什么? 修改程序,使之能輸出迭代的次數(shù)和每次迭代的結(jié)果,分析不同的x初始值對迭代的次數(shù)有無影響。代碼:#include (4)猴子吃桃問題。猴子第一天摘下若干個桃子,當(dāng)即吃了一半,還不過癮,又多吃了一個。第二天早上又將剩下的桃子吃掉了一半,又多吃了一個。以后每天早上都吃了前天剩下的一半零一個。到第10天早上再想吃時,見只剩一個桃子了。求第一天共摘了多少桃子。在得到正確結(jié)果后,修改題目,改為猴子每天吃了前一天的一半后,再吃兩個。請修改程序并運行,檢查結(jié)果是否正確。代碼:#include 代碼:#include 實驗六 數(shù)組 1.實驗?zāi)康?/p> (1)掌握一維數(shù)組和二維數(shù)組的定義、賦值和輸入輸出的方法;(2)掌握字符數(shù)組和字符串函數(shù)的使用;(3)掌握與數(shù)組有關(guān)的算法(特別是排序算法)。2.實驗內(nèi)容 編程序并上機調(diào)試運行 (1)用選擇法對10個整數(shù)排序。10個整數(shù)用scanf函數(shù)輸入 代碼:#include (1)有15個數(shù)存放在一個數(shù)組中,輸入一個數(shù),要求用折半查找法找出該數(shù)組是數(shù)組中第幾個元素的值。如果該數(shù)不在數(shù)組中,則輸出“無此數(shù)”。以15個數(shù)用賦初值的方法在程序中給出。要找的數(shù)用scanf函數(shù)輸入。代碼:#include void main(){int a[15],i,x,min,max,sign,loca,mid;for(i=0;i<15;i++)scanf(“%d”,&a[i]);for(i=0;i<15;i++)printf(“%3d”,a[i]);scanf(“%d”,&x);max=14;min=0;sign=0;if(xa[14])loca=-1;while((!sign)&&(min<=max)){mid=(max+min)/2;if(x==a[mid]){loca=mid;printf(“%d”,loca+1);sign=1;} else if(x (2)將兩個字符串連接起來,不要用strcat函數(shù)。代碼:#include第二篇:《Matlab語言》實驗報告
第三篇:c語言實驗報告
第四篇:C語言實驗報告