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