北科大C语言程序设计实验报告6.docx
《北科大C语言程序设计实验报告6.docx》由会员分享,可在线阅读,更多相关《北科大C语言程序设计实验报告6.docx(21页珍藏版)》请在冰点文库上搜索。
北科大C语言程序设计实验报告6
姓名
徐松松
学号
41345053
班级
计1304
说明:
1.本次上机内容分两次上机完成。
2.将本文档改名为“学号_姓名_班级_Lab6.doc”,按照本说明完成以下实验内容;
3.在下下次上机(13周)时通过课程中心提交本文档。
实验内容和实验要求(上机指导P137)
1.练习题一
运行结果截图:
思考题及问题
答案:
源程序文本(修改部分红色字体标注)
#include
voidmain()
{
charc;
printf("pleaseinputastring:
");
while((c=getchar())!
='\n')
{
if(c>='D'&&c<='Z'||c>='d'&&c<='z')
c=c-3;
elseif(c>='A'&&c<='C'||c>='a'&&c<='c')
c=(c+26)-3;
printf("%c",c);
}
printf("\n");
}
运行结果截图:
2.练习题二
运行结果截图:
思考题及问题
答案:
源程序文本(修改部分红色字体标注)
#include
voidCommonDivisor(intm,intn);
voidLowestCommonMultiple(intm,intn);
intremainder;
intlowestCommonMultiple;//全局变量
voidmain()
{
intm,n;
printf("求最大公约数和最小公倍数,请输入m和n\n");
scanf("%d%d",&m,&n);
CommonDivisor(m,n);
LowestCommonMultiple(m,n);
printf("最大公约数为%d,最小公倍数为%d\n",remainder,lowestCommonMultiple);
}
voidCommonDivisor(intm,intn)
{
inttemp;
if(n>m)
{
temp=m;
m=n;
n=temp;
}
remainder=m%n;
while((m%n)!
=0)
{
m=n;
n=remainder;
}
}
voidLowestCommonMultiple(intm,intn)
{
lowestCommonMultiple=m*n/remainder;
}
运行结果截图:
3.练习题三
运行结果截图:
思考题及问题:
答案:
源程序文本(修改部分红色字体标注)
#include
#include
intprime(intn);
voidmain()
{
intm,count=0;
for(m=200;m<=300;m++)
{
if(prime(m))
{
printf("%5d",m);
count++;
if(count%5==0)
printf("\n");
}
}
}
prime(intn)
{
inti;
for(i=2;i<=n-1;i++)
if(n%i==0)break;
if(i==n)
return1;
else
return0;
}
运行结果截图:
4.练习题四
运行结果截图:
思考题及问题:
答案:
#include
#include
voidmain()
{
voidroot1(floata,floatb,floatc,floatd);
voidroot2(floata,floatb,floatc,floatd);
voidroot3(floata,floatb,floatc,floatd);
floata,b,c,d;
scanf("%f%f%f",&a,&b,&c);
d=b*b-4*a*c;
printf("theequation");
if(fabs(a)<1e-6)
printf("isnotquadratic\n");
elseif(fabs(d)<=1e-6)
root1(a,b,c,d);
elseif(d>1e-6)
root2(a,b,c,d);
else
root3(a,b,c,d);
}
voidroot1(floata,floatb,floatc,floatd)
{
floatx1,x2;
printf("hastwoequalroots:
\n");
printf("x1=x2=%8.4f\n",-b/(2*a));
}
voidroot2(floata,floatb,floatc,floatd)
{
floatx1,x2;
x1=(-b+sqrt(d)/(2*a));
x2=(-b-sqrt(d)/(2*a));
printf("hastworealroots:
\n");
printf("x1=%8.4f,x2=%8.4f\n",x1,x2);
}
voidroot3(floata,floatb,floatc,floatd)
{
floatx1,x2,jp,ip;
jp=-b/(2*a);ip=sqrt(-d)/(2*a);
printf("hastwocomplexroots:
\n");
printf("x1=%8.4f+%8.4fi\n",jp,ip);
printf("x2=%8.4f-%8.4fi\n",jp,ip);
}
自测练习
1.自测练习一
源程序文本:
(提示:
可用全局变量)
#include
#defineN8
voidmain()
{
floatSum(floata[]);
floata[N];
for(inti=0;i{
scanf("%f",&a[i]);
}
floatsum;
sum=Sum(a);
printf("sum=%f,average=%f\n",sum,sum/N);
}
floatSum(floata[])
{
floatsum=0;
for(inti=0;isum+=a[i];
returnsum;
}
运行结果截图:
2.自测练习二
源程序文本:
#include
voidmain()
{
intprime(int);
printf("以大于5且小于100的偶数证明哥德巴赫猜想:
\n");
intn,count=0;
for(n=6;n<=100;n+=2)
{
for(inta=2;a<=n/2;a++)
{
if(prime(a)&&prime(n-a))
{
printf("%3d=%2d+%2d",n,a,n-a);
count++;
if(count%4==0)
printf("\n");
break;
}
}
}
}
intprime(intn)
{
for(inti=2;iif(n%i==0)
return0;
return1;
}
运行结果截图:
3.自测练习三
源程序文本:
#include
voidmain()
{
intprime(int);
intn,a,count=0;
for(n=10;n<=99;n++)
{
a=n%10*10+a/10;
if(prime(n)&&prime(a))
{
printf("%4d",n);
count++;
if(count%4==0)
printf("\n");
}
}
printf("\n");
}
intprime(intn)
{
for(inti=2;iif(n%i==0)
return0;
return1;
}
运行结果截图:
4.自测练习四
源程序文本:
#include
intmain()
{
intf_year(int);
intf_day(int,int,int);
intyear,month,day,number;
printf("pleaseinputyearmonthandday:
\n");
scanf("%d%d%d",&year,&month,&day);
number=f_day(year,month,day);
printf("%d年%d月%d号是这年的第%d天",year,month,day,number);
return0;
}
intf_year(intyear)
{
if(year%4==0&&year%100!
=0||year%400==0)
return1;
else
return0;
}
intf_day(intyear,intmonth,intday)
{
intnumber=0;
inta[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
for(inti=1;inumber+=a[i];
number=number+day;
if(f_year(year)&&month>2)
number++;
returnnumber;
}
运行结果截图:
5.自测练习五
源程序文本:
(提示:
带参数的宏定义)
#include
#include
#defineSUM(a)((a)*(a)*(a)+(a)-1)
intmain()
{
floatf(intn,floatx);
floatx;
scanf("%f",&x);
printf("(x)*(x)*(x)+(x)-1=%f\n",f(1,x));
printf("(5+x)*(5+x)*(5+x)+(5+x)-1=%f\n",f(2,x));
printf("(sinx)*(sinx)*(sinx)+(sinx)-1=%f\n",f(3,x));
return0;
}
floatf(intn,floatx)
{
switch(n)
{
case1:
returnSUM(x);
case2:
returnSUM(5+x);
case3:
returnSUM(sin(x));
}
}
运行结果截图:
6.自测练习六
源程序文本:
#include
intmain()
{
intp(inti);
ints(intn);
floatf(intx,inty);
intx,y;
floatf1;
printf("pleaseinputxandy:
\n");
scanf("%d%d",&x,&y);
f1=f(x,y);
printf("f(x,y)=%f\n",f1);
return0;
}
intp(inti)
{
inty=1;
for(intn=1;n<=i;n++)
y=y*n;
returny;
}
ints(intn)
{
intsum=0;
for(inti=1;i<=n;i++)
sum+=p(i);
returnsum;
}
floatf(intx,inty)
{
floatm;
m=(float)s(x)/s(y);
returnm;
}
运行结果截图:
7.自测练习七
源程序文本:
运行结果截图:
8.自测练习八
源程序文本:
运行结果截图: