实验中的程序参考复习资料.docx
《实验中的程序参考复习资料.docx》由会员分享,可在线阅读,更多相关《实验中的程序参考复习资料.docx(32页珍藏版)》请在冰豆网上搜索。
实验中的程序参考复习资料
实验三:
顺序结构程序设计
1.编写一个程序,输入一个字符,输出它的前后邻居
#include
voidmain()
{charc1;
printf(“Inputacharacter:
”);
c1=getchar();
putchar(c1-1);
putchar(‘\t’);
putchar(c1+1);
putchar(‘\n’);}
2.编写一个程序,求三角形的面积。
其中,a、b、c为三角形的三条边,s=(a+b+c)/2,面积为area=
#include
#include
voidmain()
{floata,b,c,s,area;
printf(“Inputa,b,c:
”);
scanf(“%f,%f,%f”,&a,&b,&c);
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf(“area=%f\n”,area);}
3.编写一个程序,求摄氏温度。
公式:
c=5*(f-32)/9
#include
voidmain()
{floatf,c;
printf(“Inputf:
”);
scanf(“%f”,&f);
c=5*(f-32)/9;
printf(“c=%f\n”,c);}
4.设计一个程序,输入正五边形的边长的长度a,按公式
计算该五边形外接圆的半径。
#include
#include
voidmain()
{floatr,a;
printf(“Inputa:
”);
scanf(“%f”,&a);
r=a*sqrt((10+2*sqrt(5))/5)/2;
printf(“r=%0.2f\n”,r);}
5.设计程序,输入空间中两点的坐标x1,y1,z1和x2,y2,z2计算两点之间的距离。
#include
#include
voidmain()
{floatx1,x2,y1,y2,z1,z2,d;
printf(“Inputx1,y1,z1,x2,y2,z2:
”);
scanf(“%f,%f,%f,%f,%f,%f”,&x1,&y1,&z1,&x2,&y2,&z2);
d=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)+(z2-z1)*(z2-z1));
printf(“d=%f\n”,z);
}
6.编写一个C程序,输入一个3位整数,分别输出百位数、十位数和个位数。
#include
voidmain()
{intx,a,b,c;
printf(“Inputainteger:
”);
scanf(“%3d”,&x);
a=x/100;b=x/10%10;c=x%10;
printf(“a=%d,b=%d,c=%d\n”,a,b,c);
}
实验四选择结构程序设计
1.编写程序输入四个整数,要求输出最小的一个。
#include
voidmain()
{inta,b,c,d,min;
printf(“Inputa,b,c,d:
”);
scanf(“%d,%d,%d,%d”,&a,&b,&c,&d);
min=a;
if(min>b)min=b;
if(min>c)min=c;
if(min>d)min=d;
printf(“min=%d\n”,min);}
2.编写程序判断体重。
体指数(t)=体重(w)/身高2(h)其中,t<18时体重偏轻,18<=t<25时体重正常,25<=t<27时体重偏重,t>=27时为肥胖。
#include
voidmain()
{floatt,w,h;
printf(“Inputw,h:
”);
scanf(“%f,%f”,&w,&h);
t=w/(h*h);
if(t<18)printf(“taiqingle\n”);
elseif(t<25)printf(“zhengchang\n”);
elseif(t<27)printf(“pianzhong\n”);
elseprintf(“feipang\n”);}
3.分别用if…else…if语句和switch语句编写书P58⑸
#include
voidmain()
{floatdan_jia,zong_e,ze_kou;
intn;
printf(“Inputn:
”);
scanf(“%d”,&n);
if(n<1)printf(“Inputerror!
\n”);
elseif(n<=5)ze_kou=n-1;
elseif(n<=20)ze_kou=4+(n-5)*0.4;
elseif(n<=50)ze_kou=10+(n-20)*0.15;
elseif(n<=300)ze_kou=14.5+(n-50)*0.03;
elseze_kou=22;
dan_jia=10*ze_kou;
zong_e=dan_jia*n;
printf(“dan_jia=%f,zong_e=%f\n”,dan_jia,zong_e);}
#include
voidmain()
{floatdan_jia,zong_e,ze_kou;
intn,m;
printf(“Inputn:
”);
scanf(“%d”,&n);
m=(n-1)/5;
4.有一人过独木桥,到桥中间时看见前面有狼,后面有虎,底下是深深的河水。
编程写出此人的最后结局。
#include
voidmain()
{charchoice;
printf(“Inputyourchoice(aorborc)”);
scanf(“%c”,&choice);
if(choice==’a’)printf(“beilangchile\n”);
elseif(choice==’b’)printf(“beihuchile\n”);
elseif(choice==’c’)printf(“shuaisile\n”);
elseprintf(“Inputerror!
\n”);}
5.从键盘输入3个数,判断能否构成三角形,若能构成三角形,计算以这3个数为边长的三角形面积;否则,输出相应的提示信息。
#include
#include
voidmain()
{floata,b,c,s,area;
printf(“Inputa,b,c:
”);
scanf(“%f,%f,%f”,&a,&b,&c);
if(a+b>c&&b+c>a&&a+c>b)
{s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf(“area=%f\n”,area);
}
elseprintf(“bunenggouchengsanjiaoxin\n”);
}
6.编写一个程序,输入某学生成绩,若成绩在85分以上,则输出“VeryGood”,若成绩在60分到85分之间,则输出“Good”,若成绩低于60分,则输出“Bad”。
#include
voidmain()
{floatgrade;
printf(“Inputastudent’grade:
”);
scanf(“%f”,&grade);
if(grade<0||grade>100)printf(“Inputerror!
\n”);
elseif(grade<60)printf(“Bad\n”);
elseif(grade<85)printf(“Good\n”);
elseprintf(“VeryGood\n”);
}
7.编写程序,读入一个年份和月份,打印出该月有多少天。
#include
voidmain()
{intyear,month,days;
printf(“Inputyearandmonth:
”);
scanf(“%d,%d”,&year,&month);
if(year%4==0&&year%100!
=0||year%400==0)
days=29;
elsedays=28;
switch(month)
{case1:
case3:
case5:
case7:
case8:
case10:
case12:
days=31;break;
case4:
case6:
case9:
case11:
days=30;
}
printf(“days=%d\n”,days);}
实验五循环结构程序设计
1.请分别用while语句和do-while语句编程求的值。
#include
voidmain()
{floatsum=0;
intk=1;
while(k<=100)
{sum=sum+k;k++;}
k=1;
while(k<=10)
{sum=sum+1.0/k;k++;}
printf(“sum=%f\n”,sum);}
#include
voidmain()
{floatsum=0;
intk=1;
do
{sum=sum+k;k++;}while(k<=100);
k=1;
do
{sum=sum+1.0/k;k++;}while(k<=10);
printf(“sum=%f\n”,sum);}
2.请分别用while语句和do-while语句编程求12/(1+1)+22/(2+1)+32/(3+1)+…+n2/(n+1),n由键盘输入。
#include
voidmain()
{intn,i;
floatsum=0;
printf(“Inputn:
”);
scanf(“%d”,&n);
i=1;
while(i<=n)
{sum=sum+i*i/(i+1.0);i++;}
Printf(“sum=%f\n”,sum);}
#include
voidmain()
{intn,i;
floatsum=0;
printf(“Inputn:
”);
scanf(“%d”,&n);
i=1;
do
{sum=sum+i*i/(i+1.0);i++;}while(i<=n);
Printf(“sum=%f\n”,sum);}
3.输入一个字符串,将其中的空格和数字删除后输出。
#include
voidmain()
{charch;
While((ch=getchar())!
=’\n’)
if(!
(ch==‘’||ch>=‘0’&&ch<=‘9’))
putchar(ch);
putchar(‘\n’);}
4.编写程序求出满足不等式1+2+3+…+n<500的最大n值及总和。
#include
voidmain()
{intsum=0,n=0;
while(sum<500)
{n++;sum=sum+n;}
sum=sum-n;
n--;}
printf(“sum=%d,n=%d\n”,sum,n);}
5.编程实现求数列1/2,3/4,5/8,7/16…的所有大于等于0.000001的数据项之和,显示输出计算结果。
#include
voidmain()
{floatm,n,sum=0;
m=1;n=2;
while(m/n>=0.000001)
{sum=sum+m/n;m+=2;n*=2;}
printf(“sum=%f\n”,sum);}
6.编程找出1000以内的完数。
所谓完数是它等于它的因子之和。
如:
6=1+2+3。
#include
voidmain()
{intm,s,i;
for(m=2;m<1000;m++)
{s=0;
for(i=1;iif(s==m)
{printf(“%d是一个完数。
它的因子是:
”,m);
for(i=1;iif(m%i==0)printf(“%d”,i);
printf(“\n”);}
}}
实验六一维数组的使用
1.用筛法求100以内的素数。
#include
#defineN100
voidmain()
{intsushu[N]={0},k,n;
for(j=1;jsushu[j]=j+1;
for(j=2;jfor(n=2;n<=sushu[j]/2;n++)
if(j%n==0)sushu[j]=0;
for(j=0;jif(sushu[j]!
=0)
printf(“%3d”,sushu[j]);
printf(“\n”);}
2.编写一个程序,计算若干学生的某门功课的平均成绩、标准差,找出最高分和最低分。
#include
#include
#defineN100
voidmain()
{floatgrade[N],aver,stdev,max,min;
intm,k;
printf(“Inputm:
”);
scanf(“%d”,&m);
for(k=0;k{printf(“Inputthe%d’sgrade:
”,k+1);
scanf(“%f”,&grade[k]);}
max=min=grade[0];aver=0;
for(k=0;k{aver=aver+grade[k];
if(maxif(min>grade[k])min=grade[k];
}
aver=aver/m;stdev=0;
for(k=0;kstdev=stdev+(grade[k]-aver)*(grade[k]-aver);
stdev=sqrt(stdev/m);
printf(“aver=%f,stdev=%f,max=%f,min=%f\n”,aver,stdev,max,min);}
3.编写一个程序,让计算机产生20个随机数,用选择法排序。
#include
#include
#defineN20
voidmain()
{inta[N],i,j,p,temp;
randomize();
for(i=0;ia[i]=random(100);
printf(“Beforsorted:
”);
for(i=0;i{if(i%10==0)printf(“\n”);
printf(“%3d”,a[i]);}
printf(“\n”);}
for(i=0;i{p=i;
for(j=i+1;jif(a[p]>a[j])p=j;
if(p!
=i)
{temp=a[p];a[p]=a[i];a[i]=temp;}
}
printf(“Aftersorted:
”);
for(i=0;i{if(i%10==0)printf(“\n”);
printf(“%3d”,a[i]);}
printf(“\n”);}
4.根据上题的内容1,编一程序在数组中查找一个数。
要求:
⑴若有该数,则输出该数,否则输出找不到的信息;
⑵用顺序查找实现;
⑶用折半查找实现。
顺序查找:
#include
#include
#defineN20
voidmain()
{inta[N],i,j,p,temp,x,f;
randomize();
for(i=0;ia[i]=random(100);
for(i=0;i{p=i;
for(j=i+1;jif(a[p]>a[j])p=j;
if(p!
=i)
{temp=a[p];a[p]=a[i];a[i]=temp;}
}
for(i=0;i{if(i%10==0)printf(“\n”);
printf(“%3d”,a[i]);}
printf(“\n”);
printf(“Inputyouwanttofind:
”);
scanf(“%d”,&x);f=0;
for(i=0;iif(a[i]==x){f=1;break;}
if(f)printf(“Found!
Thenumberis:
%d\n”,x);
elseprintf(“Notfound.\n”);
}
折半查找:
#include
#include
#defineN20
voidmain()
{inta[N],i,j,p,temp;
intx,top,mid,bot,f;
randomize();
for(i=0;ia[i]=random(100);
for(i=0;i{p=i;
for(j=i+1;jif(a[p]>a[j])p=j;
if(p!
=i)
{temp=a[p];a[p]=a[i];a[i]=temp;}
}
for(i=0;i{if(i%10==0)printf(“\n”);
printf(“%3d”,a[i]);}
printf(“\n”);
printf(“Inputyouwanttofind:
”);
scanf(“%d”,&x);
f=0;top=0;bot=N-1;
while(top{mid=(top+bot)/2;
if(x==a[mid]){f=1;break;}
elseif(xelsetop=mid+1;
}
if(f)printf(“Found!
Thenumberis:
%d\n”,x);
elseprintf(“Notfound.\n”);
}
5.根据实验内容3,编写一程序删除指定的一个数。
#include
#include
#defineN20
voidmain()
{inta[N],i,j,p,temp;
intx;
randomize();
for(i=0;ia[i]=random(100);
for(i=0;i{p=i;
for(j=i+1;jif(a[p]>a[j])p=j;
if(p!
=i)
{temp=a[p];a[p]=a[i];a[i]=temp;}
}
for(i=0;i{if(i%10==0)printf(“\n”);
printf(“%3d”,a[i]);}
printf(“\n”);
printf(“Inputyouwanttodelete:
”);
scanf(“%d”,&x);
for(i=0;iif(x==a[i])break;
for(;ia[i]=a[i+1];
a[i]=0;
for(i=0;i{if(i%10==0)printf(“\n”);
printf(“%3d”,a[i]);}
printf(“\n”);
}
6.根据实验内容3,编写一程序插入一个指定的数,插入后,数组仍然有序。
#include
#include
#defineN20
voidmain()
{inta[N+1],i,j,p,temp;
intx,f;
randomize();
for(i=0;ia[i]=random(100);
for(i=0;i{p=i;
for(j=i+1;jif(a[p]>a[j])p=j;
if(p!
=i)
{temp=a[p];a[p]=a[i];a[i]=temp;}
}
for(i=0;i{if(i%10==0)printf(“\n”);
printf(“%3d”,a[i]);}
printf(“\n”);
printf(“Inputyouwanttoinsert:
”);
scanf(“%d”,&x);
for(i=0;xfor(f=N;f>i;f--)
a[f]=a[f-1];
a[i]=x;
for(i=0;i<=N;i++)
{if(i%10==0)printf(“\n”);
printf(“%3d”,a[i]);}
printf(“\n”);
}
实验七二维数组的使用
1.找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。
也可能没有“鞍点”。
要求用随机函数生成数据。
#include
#include
#defineN5
voidmain()
{inta[N][N]={0},i,j,k,p,q;
randomize();
for(i=0;ifor(j=0;ja[i][j]=random(100);
for(i=0;i{p=0;
for(j=1;jif(a[i][p]q=0;
for(k=1;kif(a[q][p]>a[k][p])q=k;
if(i==q)
printf(“a[%d][%d]=%d\n”,i,q,a[i][q]);
}}