《C語言程序設(shè)計》實驗.設(shè)計.習(xí)題.答案.順序結(jié)構(gòu)與邏輯運算.doc
實驗2 順序結(jié)構(gòu)與邏輯運算學(xué)號: 姓名: 實驗日期:1. 實驗?zāi)康暮鸵螅?)掌握數(shù)據(jù)輸入/輸出函數(shù)的使用,能正確使用各種格式轉(zhuǎn)換符。(2)熟悉順序結(jié)構(gòu)程序中語句的執(zhí)行過程,并學(xué)會基本調(diào)試程序方法。(3)能夠正確使用邏輯運算符和邏輯表達式。(4)學(xué)會運用邏輯表達式或關(guān)系表達式等表示條件。(5)熟練掌握if語句和switch語句,掌握條件表達式構(gòu)成的選擇結(jié)構(gòu)。(6)熟練掌握跟蹤調(diào)試程序,針對具體數(shù)據(jù)組織輸入測試數(shù)據(jù),觀察程序運行能否得到預(yù)期的輸出結(jié)果。(7)學(xué)會編寫簡單程序。2. 實驗內(nèi)容:實驗指導(dǎo)書中的實驗三和實驗四3. 實驗步驟及結(jié)果實驗三部分:3-1-1 該程序的功能是:輸出m=345,n=2.560000,并計算輸出(n*100)程序運行結(jié)果畫面如下:#include<stdio.h>main()int m=345;float n=2.56;printf("m=%d,n=%f,n*100=%fn",m,n,n*100);3-1-2 該程序的功能是:輸入三個數(shù)賦給a,b,c,輸出這三個數(shù),并計算輸出s=a*b和v=a*b*c的值程序運行結(jié)果畫面如下:#include<stdio.h>main()double a,b,c,s,v;scanf("%lf,%lf,%lf",&a,&b,&c);s=a*b;v=a*b*c;printf("%lf,%lf,%lfn",a,b,c);printf("s=%lfn",s);printf("v=%lfn",v);3-2-1 該程序的功能是:輸入兩個整數(shù)m,n,輸出m,n并使其輸出時每個數(shù)輸出寬度為6,兩數(shù)之間逗號間隔;并輸出x,y并使其每個數(shù)輸出寬度為7,小數(shù)位數(shù)為2。程序運行結(jié)果畫面如下:#include<stdio.h>main()int m,n;float x=3.5,y=6.2;scanf("%d,%d",&m,&n);printf("m=%6d,n=%6dn",m,n);printf("x=%7.2f,y=%7.2fn",x,y);3-2-2 該程序的功能是:賦給a,b,m,n,p,q數(shù)值,并輸出a,b,m,n的整型數(shù)值和p,q的浮點型數(shù)值。程序運行結(jié)果畫面如下:#include<stdio.h>main()int a,b;long m,n;float p,q;scanf("%d,%dn",&a,&b);scanf("%f,%fn",&p,&q);scanf("%ldn%ld",&m,&n);printf("a=%d,b=%dn m=%ld,n=%ldn",a,b,m,n);printf("p=%f,q=%fn",p,q);3-3 注意:這道程序我們不按書中提示進行,而在VC環(huán)境下進行調(diào)試。語法錯誤和邏輯錯誤的區(qū)別何在?語法錯誤有錯誤提示,程序不可運行;邏輯錯誤無錯誤提示,程序可運行,但得不到你想求得的答案。如何啟動單步調(diào)試?在菜單欄中選擇“組建”,然后在下拉菜單中選擇“開始調(diào)試”,然后選擇“Step Into”。要使程序運行到“ss=(k”這一行暫停下來,該如何操作? 點到“ss=(k”這一行,按F9,設(shè)置一個斷點。怎樣終止調(diào)試狀態(tài)(程序復(fù)位)?在菜單欄中選擇“調(diào)試”,然后選擇“Stop Debugging”。單步調(diào)試狀態(tài)下,向下運行一條語句的操作方法(分兩種情況回答,第一種,跟蹤到自定義函數(shù)內(nèi)部,第2種,不跟蹤到自定義函數(shù)內(nèi)部):第一種選擇“Step Into”,跟蹤到自定義函數(shù)內(nèi)部;第2種選擇“Step over”,不跟蹤到自定義函數(shù)內(nèi)部在本題中,假設(shè)要在運行第2條語句(即scanf語句后),要馬上觀察i,j,k,ss,m,n的變量的值,操作方法:在菜單欄中選擇“組建”,然后在下拉菜單中選擇“開始調(diào)試”,然后選擇“Step Into”,在watch窗口的名稱下的框中輸入要馬上觀察的“i,j,k,ss,m,n”,請把觀察這些變量時的畫面粘貼到下面:#include<stdio.h>main()int i,j,k,ss,m=1,n=1;scanf("%d%d",&i,&j);m+=i+;n*=-j;ss=(k=m+2,n-5,k+n);printf("%d",ss);通過這道題單步調(diào)試,你對i+和+i及i和i應(yīng)該有了更直觀的理解,他們的區(qū)別在于:i+和i是在使用變量后加(減)一,+i和i是在使用變量前加(減)一。3-4 請回答書中問題問題(1)都可以。問題(2)用printf函數(shù),c1、c2輸出的格式符用%d。問題(3)不可以程序運行結(jié)果畫面如下:#include<stdio.h>main()char c1,c2;c1=getchar();c2=getchar();putchar(c1);putchar(c2);printf("n");printf("%c%cn",c1,c2);3-5 我使用的算法:運用求商的整數(shù)部分和求余數(shù)進行分鐘的轉(zhuǎn)換運行結(jié)果畫面:#include<stdio.h>main()int x,h,m;printf("輸入需轉(zhuǎn)換的分鐘數(shù):");scanf("%d",&x);h=x/60;m=x%60;printf("%d小時%d分鐘",h,m);3-7我使用的算法:進行千分位轉(zhuǎn)換,四舍五入。運行結(jié)果畫面:#include<stdio.h>main()double x;scanf("%lf",&x);printf("%7.2fn",x);實驗四部分4-1-a 該程序的功能是:輸入兩個數(shù):a、b,判斷a*a+b*b的值,若a*a+b*b的值等于3或1,則y=a+b;若a*a+b*b的值等于0,則y=b-a;若a*a+b*b的值等于其他值,則輸出“eerror”;最后輸出y的值。運行結(jié)果畫面:#include<stdio.h>main()int a,b,y;scanf("%d%d",&a,&b);switch(a*a+b*b)case 3:case 1:y=a+b;break;case 0:y=b-a;break;default :printf("errorn");printf("%d",y);4-1-b 該程序的功能是:輸入兩個數(shù):a、b,判斷a的值,若a的值等于10,則y=a-b;若a的值等于11,則y= a*b;若a的值等于其他值,則y=a+b;最后計算輸出y的值。運行結(jié)果畫面:#include<stdio.h>main()int a,b,y;scanf("%d%d",&a,&b);switch(a)default :y=a+b;break;case 10:y=a-b;break;case 11:y=a*b;break;printf("%d",y);4-1-c 該程序的功能是:輸入兩個數(shù):a、b,判斷a+b的值,若a+b的值等于10,則y=a+b;若a+b的值等于11,則y= a-b;若a+b的值等于其他值,則輸出“eerror”;最后計算輸出y的值。運行結(jié)果畫面:#include<stdio.h>main()int a,b,y;scanf("%d%d",&a,&b);switch(a+b)case 10:y=a+b;break;case 11:y=a-b;break;default :printf("errorn");break;printf("%d",y);4-2-1 運行結(jié)果畫面:#include<stdio.h>main()int x,y;scanf("%d",&x);if(x>-5&&x<0)y=x;if(x=0)y=x-1;if(x>0&&x<10)y=x+1;printf("%d",y);4-2-2 運行結(jié)果畫面:#include<stdio.h>main()int x,y;scanf("%d",&x);if(x>-5&&x<0)y=x;else if(x=0)y=x-1;else if(x>0&&x<10)y=x+1;printf("%d",y);4-3 填空的內(nèi)容為:a>0?a:-a;運行結(jié)果畫面:#include<stdio.h>main()int a,M;scanf("%d",&a);M=a>0?a:-a;printf("abs(a)=%dn",M);4-4 運行結(jié)果畫面:#include<stdio.h>main()int c,t,m;printf("input the number of coat and trousers your want buy:n");scanf("%d%d",&c,&t);if(t=c)if(c>=50)m=c*80;else m=c*90;elseif(c>t)if(t>=50)m=t*80+(c-t)*60; else m=c*80+(t-c)*45;else if(c>=50)m=t*90+(c-t)*60;else m=c*90+(t-c)*45;printf("%dn",m);4-5我使用的算法:輸入三邊,然后判斷是否構(gòu)成三角形,能構(gòu)成三角形后再判斷三角形類型。運行結(jié)果畫面:#include<stdio.h>main()float x,y,z;int i;printf("輸入三條邊長:");scanf("%f%f%f",&x,&y,&z);if(x+y>z&&x+z>y&&y+z>x&&x>0&&y>0&&z>0)i=1;if(i=1)if(x=y&&y=z)printf("此三角形為等邊三角形n");else if(x=y|y=z)printf("此三角形為等腰三角形n");else printf("此三角形為不等邊三角形n");if(i=0)printf("這三邊不構(gòu)成三角形n");4-5我使用的算法:用求余的方法,若賦給x的值除以5和除以7的余數(shù)都為0,則輸出yes,否則輸出no。運行結(jié)果畫面:#include<stdio.h>main()int x;scanf("%d",&x);if(x%5=0&&x%7=0)printf("yesn");elseprintf("non");4實驗小結(jié)通過實驗我的C語言能力的到了進一步的提高:(1) 學(xué)會了基本的程序調(diào)試;(2) 掌握了IF和SWITCH語句的應(yīng)用;(3) 掌握數(shù)據(jù)輸入/輸出函數(shù)的使用,能正確使用各種格式轉(zhuǎn)換符(4) 知道了邏輯運算符、邏輯表達式、關(guān)系表達式的運用(5) 可以進行簡單的程序的編寫