C语言课程设计报告.docx

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

C语言课程设计报告.docx

《C语言课程设计报告.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告.docx(20页珍藏版)》请在冰豆网上搜索。

C语言课程设计报告.docx

C语言课程设计报告

海南大学三亚学院

《信息管理与信息系统专业课程设计》

题目:

C语言程序设计实习

分院:

管理分院

专业:

信息管理与信息系统

班级:

信管0902

姓名:

蔡小倩

学号:

0910660048

组员:

蔡小倩、谢小芳、朱睿

指导教师:

蔡华苹张鑫

2011年9月5日

摘要

本文主要介绍C语言程序的编写和使用。

在程序设计过程中要用到的数据比较多,用汇编语言来直接对硬件编程要方便得多。

对《C程序设计》的学习,使我对C语言有了一定了解,这些知识为我们的下一步学习打下了坚实的基础。

为了让我们进一步的掌握和运用C语言,同时也让我们认清自己的不足之处和薄弱环节,我们进行此次课程设计的学习,C语言课程设计是和现代计算机技术的实际应用相结合的,本次是通过分组进行了信息管理专业的课程设计,巩固了我们再课堂上学习的C语言内容和专业课程、编程技能。

大家分工合作,有助于提高C语言解决实际问题的能力。

 

目录

实验一求给定英语规则名词的复数形4

(一)实验目的4

(二)实验内容4

(三)实验要求4

(四)代码设计4

(五)实验结果5

实验二计算两个整数的最大公约数7

(一)实验目的7

(二)实验内容7

(三)实验要求7

(四)代码设计7

(五)实验结果8

实验三确定比赛对手名单8

(一)实验目的8

(二)实验内容8

(三)实验要求9

(四)代码设计9

(五)实验结果9

实验四报数游戏10

(一)实验目的10

(二)实验内容10

(三)实验要求10

(四)代码设计10

(五)实验结果12

实验五编制万年历12

(一)实验目的12

(二)实验内容12

(三)实验要求13

(四)代码设计14

(五)实验结果18

总结...................................................................20

 

实验一求给定英语规则名词的复数形

完成人:

蔡小倩

(一)实验目的

本实验主要是让学生灵活、熟练的使用字符串数组,掌握字符串的遍历与查找及其输入与输出的方法。

(二)实验内容

1.已知英语规则名词由单数变成复数的规则如下:

(1)以辅音字母y结尾,则将y改为i,再加es;

(2)以s,x,ch,sh结尾,则加es;

(3)以元音o结尾,则加es;

(4)其他情况直接加s。

编程实现以上单词转换功能。

2.分别从键盘输入单词boy、glass、box、brush、match、hero、student,看程序运行结果是否正确。

(三)实验要求

要求从键盘输入英语规则名词,屏幕输出该名词的复数形式。

(四)完整程序代码

#include

#include

usingnamespacestd;

stringpluralize(string&singular)

{

stringplural;

if(singular[singular.size()-1]=='y'){

singular[singular.size()-1]='i';

plural=singular+"es";

}

elseif(singular[singular.size()-1]=='s'||

singular[singular.size()-1]=='x'||

(singular[singular.size()-2]=='c'&&

singular[singular.size()-1]=='h')||

(singular[singular.size()-2]=='s'&&

singular[singular.size()-1]=='h')){

plural=singular+"es";

}

elseif(singular[singular.size()-1]=='o'){

plural=singular+"es";

}

else{

plural=singular+"s";

}

returnplural;

}

 

intmain()

{

stringword;

cin>>word;

cout<

}

(五)程序运行结果

实验二计算两个整数的最大公约数

完成人:

蔡小倩

(一)实验目的

本实验主要是使学生灵活运用递归函数,用简洁的代码实现较为复杂的功能。

(二)实验内容

编程计算两个给定整数的最大公约数。

算法提示:

假设两个整数分别为x和y,如果x>y,则x和y的最大公约数与x-y和y的公约数相同;如果x

(三)实验要求

1、用提示算法计算最大公约数。

2、用递归函数实现。

(四)完整程序代码

#include

intgcd(intx,inty);

main()

{

intx,y;

printf("请输入两个正整数(n1,n2):

\n");

scanf("%d,%d",&x,&y);

printf("%d,%d的最大公约数是:

%d\n",x,y,gcd(x,y));

return(0);}

intgcd(intx,inty){

intt;

if(x

t=x;

x=y;

y=t;}

if(x%y==0)

returny;

else

returngcd(y,x%y);

}

(五)程序运行结果

 

实验三确定比赛对手名单

完成人:

谢小芳

(一)实验目的

本实验主要是使学生掌握循环语句的使用方法,进一步提高利用C语言这个工具解决实际问题的能力。

(二)实验内容

两个乒乓球队进行比赛,各出3人。

甲队为A、B、C3人,乙队为X、Y、Z3人。

以抽签决定比赛名单。

有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比。

请编程序找出3对赛手的名单。

(三)实验要求

 打印3对赛手的名单。

(四)完整程序代码

#include"stdio.h"

#include"conio.h"

main()

{

chari,j,k;/*i是a的对手,j是b的对手,k是c的对手*/

for(i='x';i<='z';i++)

for(j='x';j<='z';j++)

{

if(i!

=j)

for(k='x';k<='z';k++)

{

if(i!

=k&&j!

=k)

{

if(i!

='x'&&k!

='x'&&k!

='z')

printf("orderisa--%c\tb--%c\tc--%c\n",i,j,k);

}

}

}

getch();

}

(五)程序运行结果

 

实验四报数游戏

完成人:

谢小芳

(一)实验目的

本实验主要使学生加强对指针以及结构体的理解,灵活运用以解决实际问题。

(二)实验内容

13个人围成一圈,从第一个人开始顺序报号1、2、3,凡报到3者退出圈子。

找出最后留在圈子里的人原来的序号(即游戏的胜出者是谁)。

(三)实验要求

1、用结构体表示参与游戏的每一个人;

2、用链表实现。

 (四)完整程序代码

#include

#include

#defineN13

#defineLENsizeof(structstu)

structstu{

intnum;

structstu*next;

};

staticintn;

structstu*create(){

structstu*p1,*p2,*head;

n=1;

head=NULL;

p1=p2=(structstu*)malloc(LEN);

p1->num=n;

for(n=1;n

if(n==1)

head=p1;

else

p2->next=p1;

p2=p1;

p1=(structstu*)malloc(LEN);

p1->num=n+1;

}

p2->next=p1;

p1->next=head;

return(head);

}

voidprint(structstu*head,intx){

structstu*p;

inti;

p=head;

for(i=1;i

printf("%d\n",p->num);

p=p->next;

}

}

structstu*del(structstu*head,intx){

structstu*p1,*p2;

inti;

n=N;

p1=head;

for(n=N;n>=x;n--){

for(i=1;i

p2=p1;

p1=p1->next;

}

if(p1==head)p2->next=head=p1->next;

elsep2->next=p1->next;

free(p1);

p1=p2->next;

}

return(head);

}

main(){

structstu*head;

intx;

head=create();

printf("enterx:

");

scanf("%d",&x);

head=del(head,x);

print(head,x);

}

(五)程序运行结果

实验五编制万年历

完成人:

朱睿

(一)实验目的

本试验主要是使学生学会灵活使用自定义函数,以及函数的调用方法,掌握结构化程序设计的内涵。

(二)实验内容

编制万年历,程序名为Calendar.cpp。

程序可以实现如下三种功能:

1.求某个日期对应的星期

2.求某年某月有的天数

3.输出某年的日历。

例如,打印2006年日历如下:

(由于篇幅问题,3~12月省略,但实际应能打印12个月。

 

---------------------------------------------------------------------------

2006年

---------------------------------------------------------------------------

一月二月

周日周一周二周三周四周五周六周日周一周二周三周四周五周六

1357911131357

14151617181920891011121314

2122232425262715161718192021

2829303122232425262728

(三)实验要求

1、应实现的自定义函数如下:

voidSeekWeekDay(void);/*求某个日期对应的星期函数*/

intWeekDay(intyear,intmonth,intday);/*根据输入的日期,返回对应的星期*/

voidHowManyDays(void);/*求某年某月有的天数函数*/

intMonthDays(intyear,intmonth);/*根据输入的年号和月份,返回该月的天数*/

voidPrintWeek(intweekday);/*打印星期几*/

voidPrintMonth(intmonth);/*打印月份*/

voidPrintData();/*打印日历*/

2、扩展知识补充:

计算星期可用蔡勒(Zeller)公式(只适合于1582年10月15日之后的情形):

W=Y+[Y/4]+[C/4]-2C+[13(M+1)/5]+D-1

公式中的符号含义如下:

C:

世纪数减一(年的高两位数);

Y:

年(年的低两位数);

M:

月(M大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,比如2005年1月1日要看作2004年的13月1日来计算);

D:

日;

[]代表取整,即只要整数部分。

W:

星期;W对7取模得:

0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六

注意:

负数不能按习惯的余数的概念求余数,只能按数论中的余数的定义求余。

为了方便计算,我们可以给它加上一个7的整数倍,使它变为一个正数。

以2005年2月14日为例:

C=20,Y=4,M=14,D=14

W=4+[4/4]+[20/4]-2*20+[26*(14+1)/10]+14-1

=4+1+5-40+39+14-1

=22(除以7余1)

所以2005年2月14日是星期一。

(四)完整程序代码

#include

#include

#include

#include

usingnamespacestd;

intweekday(int,int,int);//根据年月日判断星期几

intleap_year(int);//判断闰年

intmonthdays(int,int);//根据年月判断天数

voidseekweekday(int,int,int);//查询某天

voidhowmanydays(int,int);//显示某月的天数

voidprintdata(int);//显示某年日历

intmain()

{

inty,m,d,es=1;

while(es)

{

HANDLEconsolehwnd;

consolehwnd=GetStdHandle(STD_OUTPUT_HANDLE);

SetConsoleTextAttribute(consolehwnd,12);//改变字体颜色

cout<<"请选择操作:

\n1→查询某天\

\n2→显示某月的天数\n3→显示某年日历\n0→退出"<

chartp[20];cin>>tp;

if(tp[1]!

='\0'||tp[0]>'3'||tp[0]<'0'){cout<<"输入有误"<

switch(tp[0]-48)

{

case1:

{cout<<"请输入年、月、日,以空格分开:

";cin>>y>>m>>d;system("cls");

seekweekday(y,m,d);break;}

case2:

{cout<<"请输入年、月,以空格分开:

";cin>>y>>m;system("cls");

howmanydays(y,m);break;}

case3:

{cout<<"请输入年份:

";cin>>y;system("cls");printdata(y);break;}

case0:

{es=0;break;}

}

}

return0;

}

//-----根据年月日判断星期几-------------------------

intweekday(inty,intm,intd)

{

intweekday1,yy=y;

if(m==1){m=13;yy--;}

if(m==2){m=14;yy--;}

weekday1=(d+2*m+3*(m+1)/5+yy+yy/4-yy/100+yy/400)%7;

ints;

switch(weekday1)

{

case0:

s=1;break;

case1:

s=2;break;

case2:

s=3;break;

case3:

s=4;break;

case4:

s=5;break;

case5:

s=6;break;

case6:

s=0;break;

}

returns;

}

//----判断闰年-------------------------------------

intleap_year(inty)

{

inti;

if((y%4==0&&y%100!

=0)||y%400==0)i=1;

elsei=0;

returni;

}

//----根据年月判断天数-------------------------------------

intmonthdays(inty,intm)

{

intx,a[13];

a[1]=a[3]=a[5]=a[7]=a[8]=a[10]=a[12]=31;//

a[4]=a[6]=a[9]=a[11]=30;//确定每月天数

if(leap_year(y))a[2]=29;

elsea[2]=28;

x=a[m];

returnx;

}

//--------显示某年日历------------------------

voidprintdata(inty)

{

intn1,n2,i,j,a[13],c,d;

HANDLEconsolehwnd;

consolehwnd=GetStdHandle(STD_OUTPUT_HANDLE);

SetConsoleTextAttribute(consolehwnd,5);

cout<

cout<

for(i=1;i<=27;i++)cout<<'*';

cout<

a[1]=a[3]=a[5]=a[7]=a[8]=a[10]=a[12]=31;//

a[4]=a[6]=a[9]=a[11]=30;//确定每月天数

if(leap_year(y))a[2]=29;

elsea[2]=28;//

for(i=1;i<=11;i+=2)//六次循环

{

SetConsoleTextAttribute(consolehwnd,1);

cout<

SetConsoleTextAttribute(consolehwnd,2);

cout<

<<"四"<

cout<

cout<

<<"四"<

SetConsoleTextAttribute(consolehwnd,7);

n1=weekday(y,i,1);n2=weekday(y,i+1,1);

if(n1)//-----------

{

for(j=1;j<=n1;j++)//

cout<

}

for(j=1;j<=7-n1;j++)

cout<

cout<

if(n2)

{//-----输出每次循环的第一行---

for(j=1;j<=n2;j++)

cout<

}

for(j=1;j<=7-n2;j++)

cout<

cout<

c=8-n1;d=8-n2;

for(intm=1;m<6;m++)//每月日历最多占六行

{

if(c>a[i])cout<a[i],则该月的这一行全部输出空格

for(j=c;j<=a[i];j++)

{

cout<

if((j-c+1)%7==0){c=j+1;break;}

if(j==a[i]){cout<

//如果j是该月最后一天,该行剩下的全部补空格

}

cout<

if(d>a[i+1])cout<

for(j=d;j<=a[i+1];j++)

{//

cout<

if((j-d+1)%7==0){d=j+1;break;}

if(j==a[i+1]){cout<

}

cout<

}

cout<

}

cout<

}

//--------查询某天------------

voidseekweekday(inty,intm,intd)

{

intn;

HANDLEconsolehwnd;

consolehwnd=GetStdHandle(STD_OUTPUT_HANDLE);

SetConsoleTextAttribute(consolehwnd,7);

n=weekday(y,m,d);

switch(n)

{

case1:

cout<

case2:

cout<

case3:

cout<

case4:

cout<

case5:

cout<

case6:

cout<

case0:

cout<

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

当前位置:首页 > 高中教育 > 初中教育

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

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