c语言课程设计设计报告Word格式文档下载.docx
- 文档编号:22875829
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:23
- 大小:20.24KB
c语言课程设计设计报告Word格式文档下载.docx
《c语言课程设计设计报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《c语言课程设计设计报告Word格式文档下载.docx(23页珍藏版)》请在冰豆网上搜索。
);
break;
case2:
FindRoot();
case3:
Detective();
case4:
Monkey();
case5:
Diamond();
case6:
Calculator();
case0:
printf("
Goodbye!
\n"
exit(0);
}
}
intmenu_select()*主函数菜单*
charc;
do{
cls"
1.FindNum\n"
2.FindRoot\n"
3.Detective\n"
4.Monkey\n"
5.Diamond\n"
6.Calculator\n"
0.Goodbye!
c=getchar();
}while(c<
'
0'
||c>
6'
return(c-'
FindNum()*找数字*
inti;
for(i=1;
i<
=9;
i++)*穷举*
if((30+i)*6237==(10*i+3)*3564)
%d\n"
i);
FindRoot()*找方程的根*
floata[10],b[10],c[10],disc,x1,x2,real,image;
*定义abc三个数组存放方程的系数*
inti,k,j;
for(i=0;
10;
i++)*循环输入方程的三个系数*
pleaseinputthreerealnumbers:
scanf("
%f%f%f"
&
a[i],&
b[i],&
c[i]);
press'
1'
tocontinue\npress'
2'
tocalculate\n"
%d"
k);
if(k==2)break;
*判断是否继续输入*
for(j=0;
j<
=i;
j++)
Theequation%d"
j+1);
if(fabs(a[j])<
=1e-7)*a=0的情况*
isnotquadratic,solutionis%.2f\n"
-c[j]b[j]);
else
disc=b[j]*b[j]-4*a[j]*c[j];
if(fabs(disc)<
=1e-7)*有两个相等的实根的情况*
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]);
"
x1,x2);
else*有两个虚根的情况*
real=-b[j](2*a[j]);
image=sqrt(-disc)(2*a[j]);
%.2f+%.2fi\n"
real,image);
%.2f-%.2fi\n"
Detective()*找牌照*
inti,a,b,c,d;
longm;
for(i=32;
=99;
i++)*穷举找出后四位号码*
m=i*i;
a=m%10;
b=m10%10;
c=m100%10;
d=m1000;
if(a==b&
&
c==d)
%ld\n"
m+310000);
Monkey()*猴子吃桃问题*
intn,i;
longx;
n);
x=1;
for(i=n-1;
i>
=1;
i--)
x=(x+1)*2;
x);
voidprint_diamond(intline)
inti,j,k,m,n,p,q,a,b;
=(49-line)2;
i++)*输出(49-line)2行的空格*
for(j=1;
=(line+1)2;
{for(m=1;
m<
=(80-line)2;
m++)*先输出(80-line)2个空格*
for(a=1;
a<
=(line-(2*j-1))2;
a++)*行数j从1到中间一行输出(line-(2*j-1))2个空格*
for(n=1;
n<
=2*j-1;
n++)*中间行及上面每行输出2*j-1个"
*"
*
for(k=1;
k<
=(line-1)2;
k++)*同理输出中间行下面的钻石图案*
{for(p=1;
p<
p++)
for(b=1;
b<
=k;
b++)
for(q=1;
q<
=line-2*k;
q++)
Diamond()*钻石*
intline;
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)*判断打开成功*
Cannotopenfileexpres\n"
exit
(1);
=3;
i++)
fscanf(fp1,"
%d%c%d"
ch[i],&
b[i]);
*循环读入四道题*
switch(ch[j])*判断运算符*
{case'
+'
:
c[j]=a[j]+b[j];
case'
-'
c[j]=a[j]-b[j];
*'
c[j]=a[j]*b[j];
c[j]=a[j]b[j];
fp2=fopen("
result.txt"
w"
*打开文件result*
if(fp2==NULL)*判断打开文件是否成功*
exit
(2);
for(k=0;
k++)*循环向文件中输入结果*
fprintf(fp2,"
%d%c%d=%d\n"
a[k],ch[k],b[k],c[k]);
succeed!
五、测试流程:
运行程序
屏幕显示:
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,2,1;
1,3,2;
1,0,4后选择2,回车)
Theequation1isnotquadratic,solutionis-2.00
Theequation2isnotquadratic,solutionis-1.00
Theequation34);
*从键盘输入若干条纪录,依次存放到结构体数组stud中,n为数组原有纪录数,程序运行初始纪录数为0,函数返回纪录数.*
2、Display(structstudentstu[],intn);
*显示所有记录,每10个暂停一下,n为数组元素个数*
3、Sort_by_Name(structstudentstu[],intn);
*按姓名作升序排序,要求用选择排序法*
4、intInsert_a_record(structstudentstu[],intn);
*输入待插入的姓名和成绩,按姓名作有序插入,输出插入成功信息,返回纪录个数*
5、intDelete_a_record(structstudentstu[],intn);
*输入待删除的姓名,经确认后删除该姓名的纪录,输出删除成功与否的信息.返回数组中的纪录数*
6、intQuery_a_recored(structstudentstu[],intn);
*输入待查找的姓名,查找该姓名的纪录,输出查找成功与否的信息和该学生的信息*
7、intAddfromText(structstudentstud[],intn);
*从文件filename添加一批纪录到数组中,返回添加纪录后的新的纪录数*
8、WritetoText(structstudentstu[],intn);
*将数组中的纪录全部写入文件records.txt*
三、函数调用关系图:
stdio."
%s"
stud.name);
pleaseinputthescore:
%f"
stud.score);
returnstud;
intInput(structstudentstu[],intn)*输入学生成绩记录*
for(n=0;
=39;
n++)
stu[n]=Input_one_record();
*调用函数Input_ont_record输入学生成绩记录*
doyouwanttocontinue:
('
Y'
or'
N'
)"
getchar();
if(toupper(getchar())=='
returnn+1;
voidDisplay(structstudentstu[],intn)*输出所有学生的成绩记录*
inti,j;
3;
i++)*每屏显示十个记录然后暂停*
for(j=10*i;
=10*i+9;
j++)*循环输出十个记录*
if(j>
n-1)break;
%s%20f\n"
stu[j].name,stu[j].score);
pressanykeytodisplaythenexttenrecords:
voidSort_by_Name(structstudentstu[],intn)*排序*
inti,j,p;
structstudentt;
=n-2;
i++)*选择排序法*
p=i;
for(j=i+1;
=n-1;
j++)*找到最小数据的下标*
if(strcmp(stu[j].name,stu[p].name)<
0)
p=j;
if(p!
=i)*判断最小数据是否在第一个*
t=stu[p];
stu[p]=stu[i];
stu[i]=t;
intInsert_a_record(structstudentstu[],intn)*插入一个学生成绩记录*
structstudentnew;
structstudent*s;
pleaseinputaname:
new.name);
new.score);
s=&
new;
n=Insert(stu,n,s);
*调用函数Insert作有序插入*
returnn;
intInsert(structstudentstu[],intn,structstudent*s)*有序插入*
if(strcmp(stu[i].name,s->
name)>
0)break;
for(j=n-1;
j>
j--)
stu[j+1]=stu[j];
stu[i]=*s;
intDelete_a_record(structstudentstu[],intn)*删除一个学生的成绩记录*
intk;
structstudentname_to_delete;
structstudent*name;
pleaseinputthenameyouwanttodelete:
name_to_delete.name);
name=&
name_to_delete;
Delete%s'
srecord('
):
name_to_delete.name);
k=Delete(stu,n,name);
*调用函数Delete查找数据,若存在做删除*
if(k==-1)*判断是否存在*
Therecorddoesnotexist!
elsen=k;
intDelete(structstudentstu[],intn,structstudent*name)
=n;
if(strcmp(stu[i].name,name->
name)==0)break;
*找到需要删除的数据下标i*
if(i==n+1)*判断要删除的数据是否存在*
return-1;
*不存在,返回提示信息*
else*存在,做删除*
for(j=i;
stu[j]=stu[j+1];
returnn-1;
voidQuery_a_record(structstudentstu[],intn)*查找一个学生的成绩记录*
structstudentname_to_query;
pleaseinputthenameyouwanttoquery:
name_to_query.name);
name_to_query;
if(Query(stu,n,name)==-1)*调用函数Query判断要查找的记录是否存在*
%sdoesnotexist!
*不存在输出提示信息*
else*存在,输出记录*
name_to_query=stu[Query(stu,n,name)];
\n%s\t%f\n"
name_to_query.name,name_to_query.score);
intQuery(structstudentstu[],intn,structstudent*name)*查找记录*
i++)*找到需要查找的记录的下标*
name)==0)
if(i<
=n-1)*判断要查找的记录时候存在*
returni;
*存在,返回下标i*
elsereturn-1;
intAddfromText(structstudentstu[],intn)*从文件中整批输入*
inti,num;
FILE*fp;
*定义文件指针*
charfilename[20];
Inputthefilename:
filename);
if((fp=fopen(filename,"
))==NULL)
cann'
topenthefile!
fscanf(fp,"
num);
num;
i++)*循环读入文件内容*
%s%f"
stu[n+i].name,&
stu[n+i].score);
n+=num;
fclose(fp);
Sort_by_Name(stu,n);
*调用函数Sort_by_Name排序*
voidWritetoText(structstudentstu[],intn)*将记录写到文件*
WritetherecordstoaTextFile\n"
"
topenthefile\n"
return;
fprintf(fp,"
n+1);
i++)*循环将记录写到文件中*
%s\t%f\n"
stu[i].name,stu[i].score);
voidQuit()
{}
voidmain()*主函数*
structstudentstu[40];
intn=0;
case1:
n=Input(stu,n);
system("
break;
Display(stu,n);
Sort_by_Name(stu,n);
n=Insert_a_record(stu,n);
n=Delete_a_record(stu,n);
Query_a_record(stu,n);
case7:
n=AddfromText(stu,n);
case8:
WritetoText(stu,n);
Quit();
intmenu_select()*显示主菜单*
do
sy
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 设计 报告