C语言课程设计.docx
《C语言课程设计.docx》由会员分享,可在线阅读,更多相关《C语言课程设计.docx(14页珍藏版)》请在冰豆网上搜索。
C语言课程设计
沈阳理工大学(信息科学与技术学院)
2013/12/31
C语言课程设计
成绩评定表
学生姓名
班级学号
专业
电子信息工程
课程设计题目
C语言课程设计任务(三十一)
数组应用、查找字符、旅游景点信息管理程序的设计
评
语
组长签字:
成绩
日期
20年月日
课程设计任务书
学院
信息科学与工程学院
专业
电子信息工程
学生姓名
马斌
班级学号
1303030331
课程设计题目
C语言课程设计任务(三十一)数组应用、查找字符、旅游景点信息管理程序的设计
实践教学要求与任务:
1.编写函数,求一个二维数组两条对角线上元素的最大值和最小值;主函数中初始化一个4X4的数组,输出该数组,并调用函数后,输出结果。
2.请编写一个函数fun(char*s,char c),其功能是:
求出s所指字符串中,包含c中字符的个数。
例如,若输入字符串为:
1234aasdd233,输入的字符为3,则输出3。
3.旅游景点信息管理程序设计
设计结构体数组,结构中包数据为:
编号、景点名称、旅游地名、所需费用等。
设计各个函数,分别实现以下功能:
(1)输入数据
(2)显示所有信息 (3)输入旅游地名,显示符合该条件的记录,并所需总费用。
设计菜单,通过选择菜单调用以上各函数。
工作计划与进度安排:
第一天:
开题,系统设计。
第二天:
设计数据库,设计网页。
第三天:
编码实现,测试系统。
第四天:
书写设计报告。
第五天:
系统评价、验收、答辩。
指导教师:
201年月日
专业负责人:
201年月日
学院教学副院长:
201年月日
1数组应用
1.数组应用
1.1题目内容
编写函数,求一个二维数组两条对角线上元素的最大值和最小值;主函数中初始化一个4X4的数组,输出该数组,并调用函数后,输出结果。
1.2算法图框
图1.1为数组应用算法图框
1.3源程序及注释
#include
#defineN4
voidmax(intstr[][N]){
inti,j,m1,m2;
intstr1[N]={0},str2[N]={0};/*定义了两个一维数组,负初值为0,用于承载量对角线上的数*/
for(i=0;ifor(j=0;j{
if(i==j)/*查找主对角线数,行标等于列表*/
{
str1[i]=str[i][j];/*将二维数组的主对角线数依次负给一维数组*/
}
if(i+j==N-1)/*查找副对角线数*/
{
str2[i]=str[i][j];
}
}
m1=str1[0];
for(i=1;iif(m1m1=str1[i];/*将最大值负给m1*/
}
m2=str2[0];
for(i=1;iif(m2m2=str2[i];
}
printf("主对角线中最大值:
%d\n",m1);
printf("副对角线中最大值:
%d\n",m2);
}
voidmin(intstr[][N])
{
inti,j,m1,m2;
intstr1[N]={0},str2[N]={0};
for(i=0;ifor(j=0;j{
if(i==j)
{
str1[i]=str[i][j];
}
if(i+j==N-1)
{
str2[i]=str[i][j];
}
}
m1=str1[0];
for(i=1;iif(m1>str1[i])
m1=str1[i];
}
m2=str2[0];
for(i=1;iif(m2>str2[i])
m2=str2[i];
}
printf("主对角线中最小值:
%d\n",m1);
printf("副对角线中最小值:
%d\n",m2);
}
voidmain()
{
intstr[N][N]={0};/*定义一个二维数组用于承载输入数据*/
inti,j;
printf("请输入一个%d*%d的数组:
\n",N,N);
for(i=0;i{
for(j=0;jscanf("%d",&str[i][j]);
}
printf("该数组是:
\n");
for(i=0;i{
for(j=0;jprintf("%4d",str[i][j]);
printf("\n");/*每输出四个输出一个换行符*/
}
max(str);/*调用函数,求对角线最大值*/
min(str);/*调用函数,求对角线最小值*/
}
1.4运行结果
图1.2为数组应用结果运行结果截图
2.查找字符
2.1题目内容
请编写一个函数fun(char*s,charc),其功能是:
求出s所指字符串中,包含c中字符的个数。
例如,若输入字符串为:
1234aasdd233,输入的字符为3,则输出3。
2.2算法图框
图2.1为查找字符算法图框
2.3源程序及注释
#include
#defineN50
intfun(char*s,charc)/*定义了一个指针型数组变量,一个字符*/
{
intn=0;
while(*s!
=0){/*while循环用于循环结构的结束*/
if(*s==c)/*if语句用于判断指针指向的字符是否与输入字符相同*/
n++;/*n计算要统计字符的个数*/
s++;
}
returnn;
}
voidmain()
{
charstr[N],ch;
intnum;
printf("请输入一串字符串:
");
gets(str);
printf("请输入一个字符:
");
scanf("%c",&ch);
num=fun(str,ch);/*调用函数*/
printf("%c在字符串%s中出现的次数是:
%d次\n",ch,str,num);
}
2.4程序结果
图2.2字符查找的运行结果截图
3.旅游景点信息管理程序设计
3.1题目内容
设计结构体数组,结构中包数据为:
编号、景点名称、旅游地名、所需费用等。
设计各个函数,分别实现以下功能:
(1)输入数据
(2)显示所有信息(3)输入旅游地名,显示符合该条件的记录,并所需总费用。
设计菜单,通过选择菜单调用以上各函数。
3.2算法图框
图3.1.1为旅游景点信息管理程序设计主调函数算法图框
图3.1.2为旅游景点信息管理程序设计被调函数查找部分算法图框
3.3源程序及注释
#include
#include
#defineN20
structtravel
{intnum;/*定义整型变量num表示编号*/
charsight[N];/*定义字符串数组,用于承载景点名称*/
charaddress[N];/*定义字符串数组,用于承载旅游地名称*/
intprice;/*定义整型变量price表示所需费用*/
};
intn=0;
structtravelt[N];
voidset(structtravel*p)/*此处为被调函数,用于数据输入*/
{printf("第%d个旅游地点:
\n",n+1);
scanf("%d",&p[n].num);
scanf("%s",&p[n].address);
scanf("%s",&p[n].sight);
scanf("%d",&p[n].price);
p[n].num=n+1;
n++;
}
voidshow(structtravel*p)/*此处为被调函数,用于显示所有输入信息*/
{inti=0;
printf("\n编号\t景点名称\t旅游地名\t所需费用\n");
for(i=0;i{printf("%d\t%s\t\t%s\t%d\n",p[i].num,p[i].sight,p[i].address,p[i].price);
}
}
voidfun(structtravel*p)/*此处为被调函数,用于查找信息*/
{charsort[N];/*定义一个字符串数组,用于承载需查找的旅游地名*/
intm=0;
printf("\n请输入旅游地名:
");
scanf("%s",sort);
printf("\n编号\t景点名称\t旅游地名\t所需费用\n");
for(m=0;m{if(!
strcmp(sort,p[m].address))/*比较所输入旅游地名与指针指向的字符串是否相同*/
{printf("%d\t%s\t\t%s\t%d\n",p[m].num,p[m].sight,p[m].address,p[m].price);
}
}
}
voidmain()
{inta;
Do/*do…while循环控制程序运行于结束*/
{printf("\n***请选择菜单***\n");
printf("\n1.输入数据2.显示所有信息3.显示符合条件信息\n");
printf("\n输入一个数字:
");
scanf("%d",&a);
switch(a)/*switch()结构,用于选择调用哪个被调函数*/
{case1:
set(t);
break;
case2:
show(t);
break;
case3:
fun(t);
break;
default:
printf("notfount\n");
}
}while
(1);
}
3.4运行结果
图3.3为旅游景点信息管理程序的设计的运行结果截图
4.总结
我的课程设计是数组应用、查找字符、旅游景点信息管理程序的设计。
经过近两天
的设计和同学的帮助,我的程序终于完成了!
达到了要求的目的。
对于我们这些新手来说,这是很大的考验,我一次次的问自己,怎么才能找到课堂所
学与实际应用的最佳结合点?
怎么才能让自己的程序在篇幅上简单,在使用价值上丰富?
怎
样让自己的计划更具有序性,而不会忙无一用?
经过自己的琢磨,听取了同学的建议,还查
阅了很多书籍,才做到了心中有数,才了解了C语言课程设计的真正用意——培养自学能
力,养成程序编辑的好习惯。
我从来不相信车到山前必有路的说法,认为那只是懒惰者自寻
懒惰的借口,我要积极,要把握,要努力。
我们自己能做到的仅此而已,因为人力也有所不
能及。
在课程设计过程中,我学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实
现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪,黑夜过去了,我们收
获的是黎明。
在本次实践中,给我印象最为深刻的是在文件删除程序的编译过程中,先有我
的各个子程序都已经编辑成功,那么这最后的程序就将是我成功的关键。
老天不会让我太过
顺利,他在这最后的时刻设置的障碍,是要考验我的能力,他要置我于死地?
在这个问题的
解决上,我打了退堂鼓,我不能忍受长时间的无功而反,时间正在消磨我的意志。
没有了柳
暗花明的一天,那么我怎么能说经受住了考验?
谢谢老师的那句话,她说:
人力有所不能及
,然而,人的精神是不会败倒的。
我鼓起勇气,到处问,到处查资料,黄天不负有心人,在
一篇文章上,终于看到了我所特别要求的函数,我实现了组合是关键的理论。
不得不说这是
精神的胜利,是永不言败的精神让我夺得胜利。
谢谢给我指点迷津的老师!
5.参考文献
马秀丽,刘志妩,李筠.C语言程序设计.北京.清华大学出版社.
C语言课程设计任务(三十一)
题目名称:
数组应用、查找字符、旅游景点信息管理程序的设计
内容及要求:
5.编写函数,求一个二维数组两条对角线上元素的最大值和最小值;主函数中初始化一个4X4的数组,输出该数组,并调用函数后,输出结果。
6.请编写一个函数fun(char*s,char c),其功能是:
求出s所指字符串中,包含c中字符的个数。
例如,若输入字符串为:
1234aasdd233,输入的字符为3,则输出3。
7.旅游景点信息管理程序设计
设计结构体数组,结构中包数据为:
编号、景点名称、旅游地名、所需费用等。
设计各个函数,分别实现以下功能:
(1)输入数据
(2)显示所有信息 (3)输入旅游地名,显示符合该条件的记录,并所需总费用。
设计菜单,通过选择菜单调用以上各函数。