第二次實(shí)驗(yàn)報(bào)告
C程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)項(xiàng)目:簡單算法&分支結(jié)構(gòu)實(shí)驗(yàn)
姓名:杜鵬? 實(shí)驗(yàn)地點(diǎn):一教524? 實(shí)驗(yàn)時(shí)間:8:30-11:40
一、實(shí)驗(yàn)?zāi)康呐c要求
1、掌握結(jié)構(gòu)話程序的算法描述方法
2、了解C語言的基本算法要素,能熟練地將算法描述轉(zhuǎn)化為C語言程序
3、熟練掌握C語言運(yùn)算符的優(yōu)先級(jí)、結(jié)合性、運(yùn)算規(guī)則、運(yùn)算對(duì)象類型等
4、掌握各種形式的if語句語法和使用方法。注意if語句中if和else的匹配關(guān)系,以及if語句的嵌套
5、掌握switch語句的語法和使用方法。注意在switch語句中break語句的用法及switch語句的嵌套
二、實(shí)驗(yàn)內(nèi)容
實(shí)驗(yàn)一
1)在if嵌套語句中容易忘記大括號(hào)導(dǎo)致報(bào)錯(cuò)
2)實(shí)驗(yàn)代碼
3.3.1 #include<stdio.h>
main()
{
float x,y;
printf("請(qǐng)輸入x的值");
scanf("%f",&x);
if(x<1)
{
y=x;
printf("y的值為%.2f",y);
}
else if(x<10)
{
y=3*x-1 ;
printf("y的值為%.2f",y);
}
else
{
y=2*x-1;
printf("y的值為%.2f",y);
}
}
3)問題分析
在此實(shí)驗(yàn)中主要的問題就是if與else的配對(duì)問題,只要記住else與上一個(gè)最近的未配對(duì)的if配對(duì)即可。這樣可以更加容易的找到與else配對(duì)的if
實(shí)驗(yàn)二
1)、if中的條件未用&&,以及在賦值x時(shí)直接寫4h導(dǎo)致報(bào)錯(cuò)
2)、實(shí)驗(yàn)代碼
3.3.2 #include<stdio.h>
int main()
{
int h,f,x,y;
printf("雞兔總數(shù),雞腳總數(shù):");
scanf("%d,%d",&h,&f);
if(x>0&&y>0)
{
x=(4*h-f)/2;
y=(f-2*h)/2;
printf("雞有%d 兔有%d\n",x,y);
}
else
printf("輸入錯(cuò)誤!\n");
}
3)問題分析
在使用if條件語句是的嵌套語句會(huì)忘記大括號(hào),以及&&符號(hào)忘記。在列x,y的表達(dá)式是容易寫成4h這樣會(huì)導(dǎo)致報(bào)錯(cuò),應(yīng)該寫成4*h。
實(shí)驗(yàn)三
1)、忘記使用頭文件,以及在平方的時(shí)候直接^2導(dǎo)致報(bào)錯(cuò)。
2)、實(shí)驗(yàn)代碼
3.3.3 #include<stdio.h>
#include<math.h>
main()
{
int h=10;
float x1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=2,y4=-2,x,y,d1,d2,d3,d4;
printf("請(qǐng)輸入一個(gè)點(diǎn)(x,y):\n");
scanf("%f,%f",&x,&y);
d1=sqrt((x-x1)*(x-x1)+(y-y1)*(y-y1));
d2=sqrt((x-x2)*(x-x2)+(y-y2)*(y-y2));
d3=sqrt((x-x3)*(x-x3)+(y-y3)*(y-y3));
d4=sqrt((x-x4)*(x-x4)+(y-y4)*(y-y4));
if(d1>1&&d2>1&&d3>1&&d4>1)
{
h=0;
printf("塔的高度為%d",h);
}
else
printf("塔的高度為%d",h);
}
3)、問題分析
忘記頭文件#include導(dǎo)致后面的sqrt函數(shù)報(bào)錯(cuò),應(yīng)該在頭文件里加上。以及在用平方是不能直接^2而是兩個(gè)相乘。
實(shí)驗(yàn)四
1)分析不清賦值還是關(guān)系。
2)實(shí)驗(yàn)代碼 4.3.1
#include<stdio.h>
main()
{
int l,w,h;
printf("請(qǐng)輸入箱子的長、寬、高:\n");
scanf("%d,%d,%d",&l,&w,&h);
if(l==w&&l==h)
printf("該箱子為正方體。\n");
else
printf("該箱子為長方體。\n");
}
3)、問題分析
分不清賦值和關(guān)系語句,應(yīng)該用==表示關(guān)系,=表示賦值。
實(shí)驗(yàn)五
1)if和else的配對(duì)問題,以及在用switch語句的時(shí)候break的使用問題。
2)實(shí)驗(yàn)代碼 4.3.2
#include<stdio.h>
main()
{
int a,b,c;
float s;
printf("請(qǐng)輸入打印紙、墨盒、光盤的數(shù)量:\n");
scanf("%d,%d,%d",&a,&b,&c);
s=18*a+132*b+4.5*c;
if(s>500)
s=0.9*s;
else if(s>400)
s=0.92*s;
else if(s>300)
s=0.93*s;
else if (s>200)
s=0.94*s;
else if(s>100)
s=0.95*s;
else
s=s;
printf("應(yīng)付款=%.2f",s);
}
#include<stdio.h>
main()
{
int a,b,c,f;
float s;
printf("請(qǐng)輸入打印紙、墨盒、光盤的數(shù)量:\n");
scanf("%d,%d,%d",&a,&b,&c);
s=18*a+132*b+4.5*c;
f=s/100;
if(f>=5)
f=5;
switch(f)
{
case 0 : s=s;break;
case 1 : s=0.95*s;break;
case 2 : s=0.94*s;break;
case 3 : s=0.93*s;break;
case 4 : s=0.92*s;break;
case 5 : s= 0.9*s;break;
default : break;
}
printf("應(yīng)付款=%.2f",s);
}
3)問題分析
if與else的配對(duì)應(yīng)該遵循else與上一個(gè)未配對(duì)的if配對(duì)。switch語句時(shí)注意注意break的使用。
實(shí)驗(yàn)六
1)在使用連續(xù)運(yùn)算的時(shí)候注意優(yōu)先級(jí)的問題。
2)實(shí)驗(yàn)代碼 4.3.3
#include<stdio.h>
main()
{
int year,month,days;
printf("Please enter year and month:\n");
scanf("%d%d",&year,&month);
switch(month)
{
case2 : if((year%4==0&&year&100!=0)||year%400==0)
days=29;
else
days=28;break;
case1 :
case3 :
case5 :
case7 :
case8 :
case10 :
case12 : days=31;break;
case4 :
case6 :
case9 :
case11 : days=30;break;
default : break;
}
printf("%d年%d月有%d天",year,month,days);
}
3)問題分析
在使用或和于是應(yīng)該考慮優(yōu)先級(jí)以及求余數(shù)是否等于0等
三、實(shí)驗(yàn)小結(jié)
1、對(duì)于if語句和switch語句自己還是不夠熟練,應(yīng)該反復(fù)練習(xí)。對(duì)于不懂的知識(shí)點(diǎn)進(jìn)行反復(fù)練習(xí)。對(duì)于算法以及流程圖的制作應(yīng)該進(jìn)行反復(fù)的練習(xí)。
2、對(duì)于小伙伴鄧文超的建議:主要是要多多練習(xí)switch語句,以及對(duì)一些復(fù)雜的實(shí)驗(yàn)進(jìn)行反復(fù)的訓(xùn)練。做什么都應(yīng)該仔細(xì)一點(diǎn)。
四、思維導(dǎo)圖

posted on 2021-04-19 19:40 DPHS 閱讀(59) 評(píng)論(0) 收藏 舉報(bào)
浙公網(wǎng)安備 33010602011771號(hào)