c语言课程设计设计报告Word文档下载推荐.docx

上传人:b****5 文档编号:19443277 上传时间:2023-01-06 格式:DOCX 页数:23 大小:21.21KB
下载 相关 举报
c语言课程设计设计报告Word文档下载推荐.docx_第1页
第1页 / 共23页
c语言课程设计设计报告Word文档下载推荐.docx_第2页
第2页 / 共23页
c语言课程设计设计报告Word文档下载推荐.docx_第3页
第3页 / 共23页
c语言课程设计设计报告Word文档下载推荐.docx_第4页
第4页 / 共23页
c语言课程设计设计报告Word文档下载推荐.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

c语言课程设计设计报告Word文档下载推荐.docx

《c语言课程设计设计报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《c语言课程设计设计报告Word文档下载推荐.docx(23页珍藏版)》请在冰豆网上搜索。

c语言课程设计设计报告Word文档下载推荐.docx

FindNum();

system("

pause"

);

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]);

hasdistinctrealroots:

%.2fand%.2f\n"

x1,x2);

else/*有两个虚根的情况*/

real=-b[j]/(2*a[j]);

image=sqrt(-disc)/(2*a[j]);

hascomplexroots:

%.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=m/10%10;

c=m/100%10;

d=m/1000;

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

Theequation3hasdistinctrealroots:

-1.00and-2.00

Theeauation4hascomplexroots:

-0.00+2.00i

-0.00-2.00i

Pressandkeytocontinue…

3回车

317744

4回车

10回车

1534

5回车

5回车

输出:

*

***

*****

6回车

0回车

按任意键结束程序

程序二:

学生成绩简单管理

一、程序功能简介:

用结构体数组结构实现简单的学生管理成绩管理功能,要求具有数据输入、数据输出、数组排序、元素插入、元素删除、查询等功能。

二、题目分析

完成与菜单项对应的功能设计

1、intInput(structstudentstu[],intn);

/*从键盘输入若干条纪录,依次存放到结构体数组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*/

三、函数调用关系图:

string.h>

typedefstructstudent/*定义结构体数组*/

charname[20];

floatscore;

};

structstudentInput_one_record()/*输入一个学生的成绩记录*/

structstudentstud;

pleaseinputthename:

%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(s

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 文化宗教

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1