第一篇:c語言實驗二實驗報告
一、實驗目的1、2、3、4、掌握關系表達式和邏輯表達式的使用。掌握選擇結構程序設計的一般方法。熟練使用if語句進行程序設計。
掌握使用switch語句實現多分支選擇結構。
二、實驗內容 有一分段函數如下:
編寫程序,輸入(x實數)的值,輸出以如下格式:x=??.??,y=??.??(即小數部分保留2位)程序代碼:
#include “stdio.h” int main(){ float x,y;scanf(“%f”,&x);if(x<1)
y=x*x;if(x>=1&&x<10)
y=5*x-1;
if(x>=10)
y=2*x+4;printf(“x=%.2f,y=%.2fn”,x,y);return 0;}
2、從鍵盤輸入三個實數,輸出最大數和最小數。樣例輸入:1.23 3.45 5.67 樣例輸出:5.67 1.23 程序代碼:
#include “stdio.h” int main(){ float a,b,c,max,min;scanf(“%f%f%f”,&a,&b,&c);if(a>b){max=a;min=b;} else {max=b;min=a;} if(a>c)
if(b>c){min=c;}
else {min=b;}
else {max=c;} printf(“%.2f %.2fn”,max,min);return 0;}
3、讀入3個非零的double數后,判別這三個值是否可以表示一個三角形的三條邊。樣例輸入1:1.23 1.23 1.23 樣例輸出1:yes.樣例輸入2:5.23 3.45-12.34 樣例輸出2:no.程序代碼: #include “stdio.h” int main(){ double a,b,c;scanf(“%lf%lf%lf”,&a,&b,&c);if(a>0&&b>0&&c>0)
if(a+b>c&&b+c>a&&a+c>b)
printf(“yes.n”);
else printf(“no.n”);
else printf(“no.n”);
return 0;}
4、讀入3個非零整數后,判別這三個值是否可以表示一個直角三角形的三條邊。樣例輸入1:3 4 5 樣例輸出1:yes.樣例輸入2:5 6 1 樣例輸出2:no.程序代碼:
#include “stdio.h” int main(){ int a,b,c;scanf(“%d%d%d”,&a,&b,&c);if(a>0&&b>0&&c>0)
if(a+b>c&&b+c>a&&a+c>b)
if(a*a+b*b==c*c||b*b+c*c==a*a||a*a+c*c==b*b)
printf(“yes.n”);
else printf(“no.n”);
else printf(“no.n”);
else printf(“no.n”);
return 0;}
5、編程設計一個簡單的計算器程序,要求根據用戶從鍵盤輸入的表達式:
操作數1 運算符op操作數2
計算表達式的值,指定的運算符為加(+)、減(-)、乘(*)、除(/)。
樣例輸入1:21.23+12.56 樣例輸出1:21.23+12.56=33.79 樣例輸入2:1*2
樣例輸出2:1.00*2.00=2.00 在做除法運算時,若操作數2為0,則輸出:除數為0
程序代碼:
#include “stdio.h” int main(){ float x,y;char ch;scanf(“%f%c%f”,&x,&ch,&y);switch(ch){ case '+':printf(“%.2f+%.2f=%.2fn”,x,y,x+y);break;case '-':printf(“%.2f-%.2f=%.2fn”,x,y,x-y);break;case '*':printf(“%.2f*%.2f=%.2fn”,x,y,x*y);break;
case '/':if(y==0)
{printf(“除數為0n”);}
else printf(“%.2f/%.2f=%.2fn”,x,y,x/y);break;} return 0;}
6、描述
某產品生產成本c=c1+m*c2,其中c1為固定成本,c2為單位產品可變成本,m為生產數量。當m<10000時,c1=20000元,c2=10元;當m≥10000時,c1=40000元,c2=5元; 編寫一個程序,其功能為:根據輸入的生產數量,輸出總生產成本及單位生產成本。輸入 生產數量
輸出
生產數量 總生產成本 單位可變成本 樣例輸入 6000 樣例輸出 6000 80000 10
程序代碼:
#include “stdio.h” int main(){ int m,c1,c2,c;scanf(“%d”,&m);if(m<10000){c1=20000;c2=10;} else {c1=40000;c2=5;} c=c1+c2*m;printf(“%d %d %dn”,m,c,c2);return 0;}
7、描述
根據鍵盤輸入的一個字符所屬類別,判別它屬于:大寫字母(輸出:1)、小寫字母(輸出:2)、數字字符(輸出:3)、其它字符(輸出:4)。
輸入
一個字符 輸出
字符類別號
樣例輸入
A 樣例輸出 程序代碼
#include “stdio.h” int main(){ char ch;scanf(“%c”,&ch);if(65<=ch&&ch<=90)
printf(“1n”);
else if(97<=ch&&ch<=122)
printf(“2n”);else if(47<=ch&&ch<=58)
printf(“3n”);else
printf(“4n”);return 0;}
8、描述
實現如下分段函數:
輸入
是一個實型數據。輸出
以如下格式輸出:x=0.250,y=5.250(即輸出一律保留3位小數)樣例輸入 0.250 樣例輸出 x=0.250,y=5.250 程序代碼
#include “stdio.h” int main(){ float x,y;scanf(“%f”,&x);if(x<3){y=x+5;} else if(x==3){y=2*x;} else if(x<10){y=6*x-4;} else {y=3*x-11;} printf(“x=%.3f,y=%.3fn”,x,y);return 0;}
三、實驗體會
通過選擇結構這一章的學習,我了解了關系表的事和邏輯表達式的使用以及選擇結構程序設計的一般方法。知道了if語句的使用和switch語句多分支選擇結構。經過這一章的學習,我對c語言程序設計有了更大的興趣,希望能帶給我以后更大的學習樂趣。
第二篇:實驗1-C語言實驗報告
C語言程序設計(A)
(2011-2012-1)
實驗報告1
教學班級: 機械094 學號: 01 姓名:譚亮恩 課程教師:
曹瑛
實驗輔導教師:
曹瑛
江西理工大學
P6-4:/*P6-4
表示第6頁 第四題*/
int main(){ float r,s;r=15.5;s=2*3.14*r;
printf(“r=%4.2f,s=%f”, r, s);return 0;}
結果是:r=15.5
s=97.34
P32-3-1: /*P32-3-1
表示第6頁 第四題 第一小題*/ #include
表示第6頁 第四題 第二小題*/ #include
結果是: *ABCDEF*
江西理工大學
第三篇:C語言實驗報告_二_
C語言實驗報告
(二)課程名稱 _____ C語言程序設計_____ 實驗項目 ___順序結構程序設計___ 實驗儀器 ______計算機___________
系 別_____信息與通信工程學院_______ 專 業______物聯網_________ 班級/學號___ __
學生姓名 _______________ 實驗日期 ____2014年11月13日___ 成 績 _______________________
指導教師
______ _____
一、實驗目的1、2、3、4、掌握C語言中,選擇結構
掌握C語言中,分段函數的輸入與輸出 掌握if,else條件語句的用法 掌握數學函數的使用
二、實驗內容
1.有一分段函數如下:
編寫程序,輸入x(實數)的值,輸出以如下格式:x=??.??,y=??.??(即小數部分保留2位)·程序代碼:
#include “stdio.h” int main(){ float x,y;scanf(“%f”,&x);if(x<1)y=x*x;else if(x<10)y=5*x-1;else y=2*x+4;printf(“x=%.2f,y=%.2fn”,x,y);return 0;}
2.從鍵盤輸入三個實數,輸出最大數和最小數。樣例輸入:1.23 3.45 5.67 樣例輸出:5.67 1.23 ·程序代碼:
#include“stdio.h” int main(){ double num1,num2,num3,min,max,t;scanf(“%lf%lf%lf”,&num1,&num2,&num3);min=num1;if(min>num2)min=num2;else min=num1;if(min>num3)
min=num3;max=num1;if(max 3.讀入3個非零的double數后,判別這三個值是否可以表示一個三角形的三條邊。 樣例輸入1:1.23 1.23 1.23 樣例輸出1:yes.樣例輸入2:5.23 3.45-12.34 樣例輸出2:no.·程序代碼: #include“stdio.h” int main(){ double a,b,c;scanf(“%lf%lf%lf”,&a,&b,&c);if(a+b>c&&b+c>a&&a+c>b)printf(“yes.n”);else printf(“no.n”);return 0;} 4.讀入3個非零整數后,判別這三個值是否可以表示一個直角三角形的三條邊。樣例輸入1:3 4 5 樣例輸出1:yes.樣例輸入2:5 6 1 樣例輸出2:no.·程序代碼: #include“stdio.h” #include“math.h” int main(){ int a,b,c;scanf(“%d%d%d”,&a,&b,&c);if(a+b>c&&b+c>a&&a+c>b){ if(a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a)printf(“yes.n”);else printf(“no.n”);} else printf(“no.n”);return 0;} 5.編程設計一個簡單的計算器程序,要求根據用戶從鍵盤輸入的表達式: 操作數1 運算符op操作數2 計算表達式的值,指定的運算符為加(+)、減(-)、乘(*)、除(/)。 樣例輸入1:21.23+12.56 樣例輸出1:21.23+12.56=33.79 樣例輸入2:1*2 樣例輸出2:1.00*2.00=2.00 在做除法運算時,若操作數2為0,則輸出:除數為0 ·程序代碼: #include“stdio.h” int main(){ double a,b;char ch;scanf(“%lf%c%lf”,&a,&ch,&b);if(ch=='/'&&b==0)printf(“除數為0n”);else switch(ch){ case'+':printf(“%.2f+%.2f=%.2fn”,a,b,a+b);break;case'-':printf(“%.2f-%.2f=%.2fn”,a,b,a-b);break;case'*':printf(“%.2f*%.2f=%.2fn”,a,b,a*b);break;case'/':printf(“%.2f/%.2f=%.2fn”,a,b,a/b);break;} return 0;} 6.某產品生產成本c=c1+m*c2,其中c1為固定成本,c2為單位產品可變成本,m為生產數量。當m<10000時,c1=20000元,c2=10元;當m≥10000時,c1=40000元,c2=5元; 編寫一個程序,其功能為:根據輸入的生產數量,輸出總生產成本及單位生產成本。輸入 生產數量 輸出 生產數量 總生產成本 單位可變成本 樣例輸入 6000 樣例輸出 6000 80000 10 ·程序代碼: #include“stdio.h” int main(){ int c,m,c2;scanf(“%d”,&m);if(m<10000){c2=10;c=20000+c2*m;} else { c2=5;c=40000+c2*m;} } printf(“%d %d %dn”,m,c,c2);return 0; 7.根據鍵盤輸入的一個字符所屬類別,判別它屬于:大寫字母(輸出:1)、小寫字母(輸出:2)、數字字符(輸出:3)、其它字符(輸出:4)。 輸入 一個字符 輸出 字符類別號 樣例輸入 A 樣例輸出 1 ·程序代碼: #include“stdio.h” int main(){ char ch;scanf(“%c”, &ch);if(ch >= 'A' && ch <= 'Z')printf(“1n”);else if(ch >= 'a' && ch <= 'z')printf(“2n”);else if(ch >= '0' && ch <= '9')printf(“3n”);else printf(“4n”);return 0;} 8.輸入 是一個實型數據。 輸出 以如下格式輸出:x=0.250,y=5.250(即輸出一律保留3位小數) 樣例輸入 0.250 樣例輸出 x=0.250,y=5.250 ·程序代碼: #include“stdio.h” int main(){ char ch;scanf(“%c”, &ch);if(ch >= 'A' && ch <= 'Z')printf(“1n”);else if(ch >= 'a' && ch <= 'z')printf(“2n”);else if(ch >= '0' && ch <= '9')printf(“3n”);else printf(“4n”);return 0;} 實驗報告 課程名稱:微機原理與接口技術 指導老師:李素敏 學生姓名: 學號: 專業: 自動化 日期:2014-04-10 地點:理工樓603 實驗二 1.實驗目的和要求 ① 掌握keil軟件和STC-ISP 軟件的使用方法 ② 熟悉發光管的工作原理 ③ 通過編程體驗發光管的延時閃爍及移位等功能 2.主要儀器設備 PC機 單片機學習開發套件(型號:89C52RC) 3.實驗內容 ①實驗內容1:第一個發光管以間隔200ms閃爍 源程序: #include //宏定義 main(){ while(1){ P1=0xfe;delay(200);P1=0xff;delay(200);} } void delay(uint z)//延時函數,z的取值為這個函數的延時ms數 { uint x,y;for(x=z;x>0;x--) for(y=110;y>0;y--); 一臺一件 } 實驗結果說明:要使發光管閃爍,只需設置合適的時間延時即可。 ②實驗內容2 : 8個發光管由上至下間隔1s流動,其中每個管亮500ms,滅500ms,亮時蜂鳴器響,滅時關閉蜂鳴器,一直重復下去。 源程序: #include #include //宏定義 unsigned char a,b,k,j; //定義五個字符變量 sbit beep=P2^3;// 定義蜂鳴器的接口 void delay(uint z)//延時函數,z的取值為這個函數的延時ms數 { uint x,y;for(x=z;x>0;x--) for(y=110;y>0;y--);} void main(){ k=0xfe;//先給k一個初值11111110等待移位 while(1){ delay500ms(); beep=0;//打開蜂鳴器 delay500ms();//讓它響500ms beep=1;//關閉蜂鳴器 j=_crol_(k,1);//把k循環左移一位 k=j;//把移完的值再送給k P1=j;//同時把值送到P1口點亮發光二極管 } //再次循環 } 實驗結果說明:在此程序中用到了_crol_(k,l)函數,此函數的功能在于循環移位,在每次發光管閃爍相應時間后左移一位,把移完的值再送到P口,點亮對應的發光管。這樣循環往復,達到發光管流動的效果。 ③實驗內容3 :用8個發光管演示出8位二進制數累加過程,即用8個二極管表示8個二進制位(亮為1,滅為0),依次以二進制形式顯示0,1,2,……255。 源程序: #include #include //宏定義 #define uchar unsigned char //宏定義 void delay(uint z)//延時函數,z的取值為這個函數的延時ms數,{ uint x,y;for(x=z;x>0;x--) for(y=110;y>0;y--);} void main() //主函數 { } uchar a;while(1) //大循環 { } a++;P1=~a;delay(200); 實驗結果說明:在此定義一個無符號字符變量a,a的值進行累加,但是由于表示的二進制數要求亮為1,滅為0,與發光管的0亮1滅正好相反,所以將a的計數取反并設置相應延時,重復此過程就得到了在發光管上顯示八位二進制數的累加過程。 ④實驗內容4 :間隔300ms第一次一個管亮流動一次,第二次兩個管亮流動,依次到8個管亮,然后重復整個過程。 源程序: #include #include void delay(uint z)//延時函數,z的取值為這個函數的延時ms數 { uint x,y;for(x=z;x>0;x--) for(y=110;y>0;y--);} void main()//主函數 { uchar a,i,j;while(1)//大循環 } { } a=0xfe;//賦初值 for(j=0;j<8;j++){ for(i=0;i<8-j;i++)//左移 } { P1=a;//點亮小燈 delay(300);//延時300毫秒 a=_crol_(a,1);//將a變量循環左移一位 } a=_crol_(a,j);//補齊,方便下面的左移一位 P1=0xff;//全部關閉 a=a<<1;//左移一位讓多一個燈點亮 4.心得體會:此次實驗中練習較多的就是閃爍和移位,在編程過程中,設置閃爍的時間必須達到人眼正常觀察的要求,這就需要計算合適的閃爍時間,不停的嘗試,最終選擇適宜觀察的時間間隔。發光管的循環移位時調用_crol_(k,l)函數 可以大大簡化編程的行數。所以熟悉單片機的函數庫,可以方便我們編程。所以在以后的實驗中還得繼續學習這個函數庫,從而更輕松的完成實驗內容。 實驗4 邏輯結構程序設計 1、實驗目的、要求 (1)C語言表示邏輯量的方法。 (2)學會正確使用邏輯運算符和邏輯表達式。 (3)熟悉掌握if語句和switch語句。 (4)掌握簡單的算法及程序調試。 2、實驗內容: (1)輸入程序并運行,觀察運行結果并分析。 #include int main() {int a=1,b=3,c=5,d=4,x; if(a If(c Else ????????????????????????2 If(a If(b Else x=3;????????????????????????4 Else x=6;????????????????????????2 Else x=7;????????????????????????1 printf(“x=%dn”,x); Return(0);} 實驗前分析:因已知:A,B,C,D分別為1,3,5,4,故可知只有A (2)、編寫程序: Y=X(X<1);Y=2X-1(1= 程序編寫如下: #include Int main() {int x,y; Scanf(“%d”,x); If(x<1)y=x; If(x>=1&&x,10)y=2*x-1; If(x>=10)y=3*x-11; Printf(“%d”,y); Return(0);} 進行檢驗,發現程序有錯誤,無法運行。 將程序改為: #include Int main() {int x,y; Scanf(“%d”,x); If(x<1)y=x; Else if(x>=1&&x<10)y=2*x-1; Else if(x>=10)y=3*x-11; Printf(“%d”,y); Return(0);} 實驗分析: 1、在if語句中,要注意IF和ELSE的配合使用,不能單獨使用IF。 2、此程序中還應注意if語句的嵌套和各層之間的邏輯關系。 3、再輸入該程序時,涉及到乘法運算的表示,應注意計算機語言與書面語言的區別,在C語言中,*表示乘法運算。 在程序中加入clrscr()運算符,清空遺留數據: #include Int main() {int x,y; Scanf(“%d”,x); Clrscr(); If(x<1)y=x; Else if(x>=1&&x<10)y=2*x-1; Else if(x>=10)y=3*x-11; Printf(“%d”,y); Return(0);} 運行該程序,得到預期結果,但輸入數據被清除;將clrscr()移動到scanf之前。再次運行,得到了預期的輸入和輸出數據,故可知,clrscr()函數的作用是清楚該語句之前的所有的輸出的數據和輸入的數據。以后用此語句時要注意輸入位置。 (3)補足程序并運行。 輸入兩個數,將較小者輸出,應用條件運算符。 #include Int main() {int a, b,min; Printf(“n please input two numbersn”); Scanf(“%d%d”,&a,&b); Min=min(a,b); Printf(“min=%d”,min); Return(0;)} 運行該程序,顯示程序錯誤,無法輸出結果。 將程序改為: #include Int main() {int a, b,min; Printf(“n please input two numbersn”); Scanf(“%d%d”,&a,&b); Min=(a>b?b:a); Printf(“min=%d”,min); 再次運行程序,屏幕上顯示“please input two numbers”,輸入兩個數字6和9,輸出數字為6,再換多組數字,結果與與其相同,可知實驗成功。 實驗分析:輸入比較兩數大小的函數時,不能想當然,如認為“min=min(a,b)”就是輸出較小數的函數,而應使用三目運算符(A?B:C)來表示。 (5)給出一個百分制成績,要求輸出成績等級A,B,C,D,E:90分以上為A,80——89分為 B,70——79分為C,60——69分為D,60分以下為E。 1、分別用IF和SWITCH語句來實現。 2、輸入成績為大于100分或小于0分時,顯示出錯成績,程序結束。 用IF函數表示: #include Int main() {int a; Printf(“n please input your scoren ”); Scanf(“%d”,&a); If(a>=90&&a<=100)printf(“A”); Else if(a>=80&&a<=89)printf(“B”); Else if(a>=70&&a<=79)printf(“C”); Else if(a>=60&&a<=69)printf(“D”); Else if(a>=0&&a<=59)printf(“E”); Else printf(“data error”); Return(0);} 檢查無錯誤,運行程序,無論輸入數值為多少,輸出結果均為“data error”。 將程序改為: #include Int main() {int a; Printf(“n please input your scoren ”); Scanf(“%d”,&a); {If(a>=90&&a<=100)printf(“A”); Else if(a>=80&&a<=89)printf(“B”); Else if(a>=70&&a<=79)printf(“C”); Else if(a>=60&&a<=69)printf(“D”); Else if(a>=0&&a<=59)printf(“E”); Else printf(“data error”);} Return(0);} 即在if函數外套一組大括號,使之成為一個語句。再次輸入數據,得到正確結果。實驗分析: 1、注意if和else的配套使用,不能遺漏。 2、邏輯運算符&&表示“并且”,除此之外,“!”表示“非”,“||”表示“或”,以后使用注 意區分。 3、使用switch語句: #include {int a,b; Printf(“n please input your scoren”); Scanf(“%d”,&a); If(a<=100&&a>=0) {b=a/10; Switch(b) {case 10 printf(“A”);break; Case 9 printf(“A”);break; Case 8 printf(“B”);break; Case 7 printf(“C”);break; Case 6 printf(“E”);break; Case 5 printf(“E”);break; Case 4 printf(“E”);break; Case 3 printf(“E”);break; Case 2 printf(“E”);break; Case 1 printf(“E”);break; Case 0 printf(“E”);break; Default printf(“data error”);}} Else printf(“data error); Return(0);} 運行程序,顯示程序有誤,經檢驗,錯誤為case語句后沒有加冒號,加上后,限制結果與預期相同。 實驗改進:該程序中,反復輸入case語句,效率低下,可將條件相同的情況進行合并,進行簡化,變成如下形式: #include Int main() {int a,b; Printf(“n please input your scoren”); Scanf(“%d”,&a); If(a<=100&&a>=0) {b=a/10; Switch(b) {case 10:Case 9 :printf(“A”);break; Case 8 :printf(“B”);break; Case 7 :printf(“C”);break; Case 6 :Case 5 :Case 4 :Case 3 :Case 2 :Case 1 :Case 0:printf(“E”);break;Default printf(“data error”);}} Else printf(“data error); Return(0);} 運行后,得到相同的結果,故簡化成功。 實驗分析:此實驗中,應注意break語句的使用,不能遺漏;case語句應用大括號括住,表示整體的使用;條件允許可以對程序進行適當的簡化,提高運算效率;區分IF和SWITCH函數的共性與區別,提高對兩者的認識。 實驗心得: 1、注意IF語句的使用規則,要與ELSE搭配使用,掌握了多層IF函數的使用方法。 2、掌握了關系運算符與邏輯運算符“與”“或”“非”的使用法方法,“&&”“||”“!”。 3、注意區分數學表達語句與計算機語句的區別,了解計算機語句的特點。 4、必要時可以利用輔助設計語句對程序進行改進,或對程序進行簡化,便于加深理解,方 便操作。 5、掌握了IF語句與SWITCH語句用法的特點,及其中的易錯點(ELSE的使用和BREAK的使用)。第四篇:單片機實驗二實驗報告
第五篇:c語言實驗報告實驗4.doc