完整版c语言课程设计设计报告.docx
《完整版c语言课程设计设计报告.docx》由会员分享,可在线阅读,更多相关《完整版c语言课程设计设计报告.docx(23页珍藏版)》请在冰豆网上搜索。
![完整版c语言课程设计设计报告.docx](https://file1.bdocx.com/fileroot1/2022-10/28/3bba442e-4a6f-4ddf-9633-fec05d46d61d/3bba442e-4a6f-4ddf-9633-fec05d46d61d1.gif)
完整版c语言课程设计设计报告
C语言课程设计报告
姓名:
学号:
年月
目录:
●程序功能简介
●题目分析
●函数的调用关系图及主要算法
●源程序及注释
●测试流程
●心得感想
程序一:
简单数学问题
一、程序功能简介:
实现多个简单数学问题的求解。
二、题目分析
完成与菜单项对应的功能设计
1、voidFindNum();/*用穷举法找到被咬掉的数字*/
2、voidFindRoot();/*求解方程ax2+bx+c=0的根*/
3、voidDetective();/*根据线索用穷举法找出牌照号码*/
4、voidMonkey();/*根据天数循环求出第一天所摘桃子数*/
5、voidDiamond();/*调用函数Print_Diamond()输出line行的钻石图案*/
6、voidCalculator();/*实现两个整数简单的加减乘除四则运算*/
三、函数的调用关系图:
四、源程序及注释:
#include
#include
#include
#include
intmenu_select();
voidmain()/*主函数*/
{
for(;;)
{
switch(menu_select())
{case1:
FindNum();
system("pause");
break;
case2:
FindRoot();
system("pause");
break;
case3:
Detective();
system("pause");
break;
case4:
Monkey();
system("pause");
break;
case5:
Diamond();
system("pause");
break;
case6:
Calculator();
system("pause");
break;
case0:
printf("Goodbye!
\n");
system("pause");
exit(0);
}
}
}
intmenu_select()/*主函数菜单*/
{
charc;
do{
system("cls");
printf("1.FindNum\n");
printf("2.FindRoot\n");
printf("3.Detective\n");
printf("4.Monkey\n");
printf("5.Diamond\n");
printf("6.Calculator\n");
printf("0.Goodbye!
\n");
c=getchar();
}while(c<'0'||c>'6');
return(c-'0');
}
FindNum()/*找数字*/
{
inti;
for(i=1;i<=9;i++)/*穷举*/
if((30+i)*6237==(10*i+3)*3564)
printf("%d\n",i);
}
FindRoot()/*找方程的根*/
{
floata[10],b[10],c[10],disc,x1,x2,real,image;/*定义abc三个数组存放方程的系数*/
inti,k,j;
for(i=0;i<10;i++)/*循环输入方程的三个系数*/
{
printf("pleaseinputthreerealnumbers:
\n");
scanf("%f%f%f",&a[i],&b[i],&c[i]);
printf("press'1'tocontinue\npress'2'tocalculate\n");
scanf("%d",&k);
if(k==2)break;/*判断是否继续输入*/
}
for(j=0;j<=i;j++)
{
printf("Theequation%d",j+1);
if(fabs(a[j])<=1e-7)/*a=0的情况*/
printf("isnotquadratic,solutionis%.2f\n",-c[j]/b[j]);
else
{
disc=b[j]*b[j]-4*a[j]*c[j];
if(fabs(disc)<=1e-7)/*有两个相等的实根的情况*/
printf("isnotquadratic,solutionis:
%.2f\n",-b[j]/(2*a[j]));
elseif(disc>1e-7)/*有两个不等实根的情况*/
{
x1=(-b[j]+sqrt(disc))/(2*a[j]);
x2=(-b[j]-sqrt(disc))/(2*a[j]);
printf("hasdistinctrealroots:
%.2fand%.2f\n",x1,x2);
}
else/*有两个虚根的情况*/
{
real=-b[j]/(2*a[j]);
image=sqrt(-disc)/(2*a[j]);
printf("hascomplexroots:
\n");
printf("%.2f+%.2fi\n",real,image);
printf("%.2f-%.2fi\n",real,image);
}
}
}
}
Detective()/*找牌照*/
{
inti,a,b,c,d;longm;
for(i=32;i<=99;i++)/*穷举找出后四位号码*/
{
m=i*i;
a=m%10;
b=m/10%10;
c=m/100%10;
d=m/1000;
if(a==b&&c==d)
break;
}
printf("%ld\n",m+310000);
}
Monkey()/*猴子吃桃问题*/
{
intn,i;
longx;
scanf("%d",&n);
x=1;
for(i=n-1;i>=1;i--)
x=(x+1)*2;
printf("%ld\n",x);
}
voidprint_diamond(intline)
{
inti,j,k,m,n,p,q,a,b;
for(i=1;i<=(49-line)/2;i++)/*输出(49-line)/2行的空格*/
printf("\n");
for(j=1;j<=(line+1)/2;j++)
{for(m=1;m<=(80-line)/2;m++)/*先输出(80-line)/2个空格*/
printf("");
for(a=1;a<=(line-(2*j-1))/2;a++)/*行数j从1到中间一行输出(line-(2*j-1))/2个空格*/
printf("");
for(n=1;n<=2*j-1;n++)/*中间行及上面每行输出2*j-1个"*"*/
printf("*");
printf("\n");
}
for(k=1;k<=(line-1)/2;k++)/*同理输出中间行下面的钻石图案*/
{for(p=1;p<=(80-line)/2;p++)
printf("");
for(b=1;b<=k;b++)
printf("");
for(q=1;q<=line-2*k;q++)
printf("*");
printf("\n");
}
}
Diamond()/*钻石*/
{
intline;
scanf("%d",&line);
print_diamond(line);/*调用print_diamond输出钻石图案*/
}
Calculator()/*简单计算器*/
{
inta[4],b[4],c[4],i,j,k;/*定义ab两个数组存放数*/
charch[4];/*定义c存放运算符*/
FILE*fp1,*fp2;
fp1=fopen("expres.txt","r");/*打开expres文件*/
if(fp1==NULL)/*判断打开成功*/
{
printf("Cannotopenfileexpres\n");
exit
(1);
}
for(i=0;i<=3;i++)
fscanf(fp1,"%d%c%d",&a[i],&ch[i],&b[i]);/*循环读入四道题*/
for(j=0;j<=3;j++)
{
switch(ch[j])/*判断运算符*/
{case'+':
c[j]=a[j]+b[j];break;
case'-':
c[j]=a[j]-b[j];break;
case'*':
c[j]=a[j]*b[j];break;
case'/':
c[j]=a[j]/b[j];break;
}
}
fp2=fopen("result.txt","w");/*打开文件result*/
if(fp2==NULL)/*判断打开文件是否成功*/
{
printf("Cannotopenfileexpres\n");
exit
(2);
}
for(k=0;k<=3;k++)/*循环向文件中输入结果*/
fprintf(fp2,"%d%c%d=%d\n",a[k],ch[k],b[k],c[k]);
printf("succeed!
\n");
}
五、测试流程:
运行程序
屏幕显示:
1.FindNum
2.FindRoot
3.Detective
4.Monkey
5.Dismond
6.Calculator
0.Goodbye!
输入:
1回车
显示:
9
Pressanykeytocontinue…
按任意键返回菜单
输入:
2回车
显示:
pleaseinputthreerealnumber:
输入:
0回车1回车2回车
显示:
press‘1’tocontinue
press’2’tocalculate
输入:
1回车
显示:
pleaseinputthreerealnumber:
(按照以上方法再输入三组数据:
1,2,1;1,3,2;1,0,4后选择2,回车)
显示:
Theequation1isnotquadratic,solutionis-2.00
Theequation2isnotquadratic,solutionis-1.00
Theequation3hasdistinctrealroots:
-1.00and-2.00
Theeauation4hascomplexroots:
-0.00+2.00i
-0.00-2.00i
Pressandkeytocontinue…
按任意键返回菜单
输入:
3回车
显示:
317744
Pressandkeytocontinue…
按任意键返回菜单
输入:
4回车
10回车
显示:
1534
Pressandkeytocont