C语言设计_c语言设计
C语言设计由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言设计”。
福建工程学院
《c语言课程设计》课程设计报告
班
级:
机械1008
学
号:
3100111818
姓
名:
陈永华
指导教师:
杨海燕、邝凌宏
日
期:
2011-1-6
C语言设计专周任务书
设计要求:
1.每人在第一部分至少要完成6道题;第二部分必须做。2.写出解题分析,解题的方法、步骤等 3.写出源程序 4.上机运行通过
5.写出心得体会(其中要包含自我评价),不少于500字 6.应提交的作品
a)设计文档打印稿:答辩时提交给老师。(文档书写格式可参看附录)
b)电子稿:包括设计文档电子文档、源程序、可执行程序以及其它执行程序所需要的文件。每个人按照自己的年级班级及座号建立一个数字的文件夹,每个人的文档及源程序存放在自己的文件夹内。
时间安排: 周二-周五
上午8点20分到12点; 下午2点到3点40分
做完了就可以开始答辩,集中答辩安排在周五的三四节和五六节课。
课程设计题目
第一部分
题目1: 企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
一、步骤:
1、定义当月变量利润x,变量奖金y;
2、利润中
3、利润中10~20万元部分的奖金,按7.5%提成奖金;
4、利润中20~40万元部分的奖金,按5%提成奖金;
5、利润中40~60万元部分的奖金,按3%提成奖金;
6、利润中60~100万元部分的奖金,按1.5%提成奖金;
7、利润中>=100万元部分的奖金,按1%提成奖金。
二、源程序: #include void main(){ float x,y;printf(“nInput the profit x=”);scanf(“%f”,&x);if(x
三、运行结果:
题目2:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
一、步骤;
1. 定义一个变量i,定义两个函数j,k;
2. 令j是变量i加上100后的一个完全平方数;
3. 令k是变量i加上100后在加上168后的一个完全平方数; 4. 求出变量i。
二、源程序: #include #include void main(){ int i;double j,k;clrscr();for(i=1;i
二、运行结果:
题目5:从键盘输入一个偶数,将表示为两个素数之和。
一、步骤:
1. 输入一个整数n;
2. 如果n是奇数,则重新输入;
3. 如果n是偶数,则n将分成两个素数p和q之和。
二、源程序: #include void main(){ int n,p,q,i,signp,signq;clrscr();scanf(“%d”,&n);while(n%2!=0)
/*如果为n奇数,则重新输入*/ { printf(“n is not even.”);scanf(“%d”,&n);} p=1;do {p=p+1;q=n-p;signp=1;for(i=2;i
三、运行结果:
题目6:有36块砖,共36人搬,成年男子一次搬4块砖,成年女子一次搬3块砖,儿童两人抬1块砖,恰好一次全部搬完,编程求出成年男子 成年女子和儿童各有多少人。
一、步骤:
1. 定义变量成年男子x,成年女子y,儿童z;
2. 男子人数可搬x*4块砖,女子人数可搬y*3块砖,儿童人数可搬z/2块砖; 3. 男子36人,砖36块,故x+y+z=36,x*4+y*3+z/2=36;4. 求出x,y,z。
二、源程序: #include void main(){ int x,y,z;clrscr();for(x=0;x
三、运行结果:
题目8:统计文本单词的个数,输入一行句子,统计其中有多少个单词,单词之间用格分隔开
一.步骤:
1)输入一个文本单词;
2)从第一个字符开始扫描到结束;
3)当遇到空格时,则单词个数加上1,若没再遇到空格,则有效字符属于前一单词,单词个数不加1;
4)输出整句文本的单词个数。二. 源程序: #include #include void main(){ char str[128];char *p=str;int num=0,flag=0;clrscr();gets(p);while(*p!='.'&&*p!=0){ if(*p==' '||*p==',')flag=0;else if(flag==0)num++,flag=1;p++;} printf(“num=%dn”,num);} 三.运行结果:
题目9:用折半查找法,对一组有序数据进行查找。
一、步骤:
1、定义10个数据按升序存放在数组a中;
2、定义待查找数据变量x,整型变量left、mid和right分别表示查找区间起始元素、中间元素和最后一个元素的下标;
3、先设left=0,right=9,即开始在区间a[0]~a[9]内查找,则mid=(left+right)/2,比较x,a[mid]的值;
4、重复查找过程,直到没找到,或等于a[mid]为止。
二、源程序: #include void main(){int a[10]={7,9,12,18,21,25,33,39,45,60};int x,left=0,mid,right=9,flag=0;clrscr();printf(“Input a number to be searched: ”);scanf(“%d”, &x);if(x>= a[left] && x
/*若x位于查找区间则开始查找/*
while(!flag && lefta[mid])left=mid+1;else right=mid-1;} if(flag==1)printf(“%4d is found,it's at %4d.n”,x,mid);else printf(“Not exist!n”);}
三、运行结果:
第二部分
课题一
有N名学生,每名学生含有如下信息:学号、姓名、某四门课的成绩,并计算其总分,用一结构数组表示之。然后实现以下功能:(1)将这些数据存放至文件stuf.dat中;
(2)将文件中的数据读出至结构数组中,并显示之;(3)输出总分最高分和最低分的名字;
(4)输出总分在340分,单科成绩不低于80分的名单;(5)求出各科平均分数;(6)按总分排名;(7)输出补考名单。
一、步骤:、1、定义N名学生名字name,学号,成绩S及总分sum;
2、输出5名学生学号、姓名、某四门课成绩及总分;
3、将输出数据存放至文件中,并读出至结构数组stu[]中;
4、从数组中找出总分大于340.,单科成绩不低于80的名单;
5、求各科平均分,按总分排名,补考名单。
二、源程序: #include #include #define N 5 struct student {
int number;
char name[10];
int s1;
int s2;
int s3;
int s4;};void main(){
FILE *fp;
int sum,b[10],sum1=0,sum2=0,sum3=0,sum4=0,sum5=0;
int max,min,m=0,n=0;
int i,j,k,p;
float v1,v2,v3,v4;
struct student temp,stu2[5],stu1[5]={{01,“xiaoyan”,78,87,85,93},{02,“yaochen”,86,57,94,96},{03,“xiaoxuner”,88,87,94,89},{04,“cailin”,76,48,83,91},{05,“ziyan”,65,77,86,73}};
/*输出5学生的学号,姓名,四科成绩/*
clrscr();
if((fp=fopen(“stud04.dat”,“wb”))==NULL)
{
printf(“error!n”);
exit(0);}
fwrite(stu1,sizeof(struct student),5,fp);
rewind(fp);
fread(stu2,sizeof(struct student),5,fp);
for(i=0;i
fclose(fp);
for(i=0;i
/*计算5学生成绩总分/*
{
sum=stu2[i].s1+stu2[i].s2+stu2[i].s3+stu2[i].s4;
b[i]=sum;
printf(“ sum=%dn”,b[i]);
}
max=min=b[0];
for(i=0;i
{
if(max
{max=b[i];
m=i;
}
if(min>b[i])
{
min=b[i];
n=i;
}
}
printf(“ max name=%s,min name=%sn”,stu2[m].name,stu2[n].name);
/*输出总分最高的学生名字/*
for(i=0;i
/*统计总分大于340且4科成绩都不低于80*/
{
if(b[i]>340&&stu2[i].s1>80&&stu2[i].s2>80&&stu2[i].s3>80&&stu2[i].s4)
printf(“ sum>340 student name=%5sn”,stu2[i].name);
}
for(i=0;i
{
sum1+=stu2[i].s1;sum2+=stu2[i].s2;sum3+=stu2[i].s3;sum4+=stu2[i].s4;
}
v1=1.0*sum1/5;v2=1.0*sum2/5;v3=1.0*sum3/5;v4=1.0*sum4/5;/*/*
printf(“vage1=%f,vage2=%f,vage3=%f,vage4=%fn”,v1,v2,v3,v4);
for(i=0;i
{
k=i;
for(j=i+1;j
if(b[k]
k=j;
if(k!=i)
{
p=b[i];
b[i]=b[k];
b[k]=p;
temp=stu2[i];
stu2[i]=stu2[k];
stu2[k]=temp;
} }
for(i=0;i
printf(“%4d %4s %4d %4d %4d %4d %4dn”,stu2[i].number,stu2[i].name,stu2[i].s1,stu2[i].s2,stu2[i].s3,stu2[i].s4,b[i]);
for(i=0;i
/*查找成绩不及格的学生*/
{ if(stu2[i].s1
三、运行结果: