高级语言程序设计课程设计报告.docx

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

高级语言程序设计课程设计报告.docx

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

高级语言程序设计课程设计报告.docx

高级语言程序设计课程设计报告

高级语言程序设计课程设计

 

题目:

 

专业计算机与信息与科学系

班级计算机1105班

学生裴和平

学号3110307518

指导教师鲍春波蒋建辉陈乐

起止时间2012.2.13——2012.2.17

_2012__年_02___月

 

题目1:

写一个函数计算下列函数的值f(0),f(3),f(-3)。

测试之

实现代码:

/*

*函数功能:

计算下列函数的值f(0),f(3),f(-3)

*入口参数:

定义域X,值域y

*返回值:

y

*/

#include

intfunc(intx);

intmain()

{

intx;

while(scanf("%d",&x)!

=EOF)

{

printf("%d\n",func(x));

}

return0;

}

intfunc(intx)

{

inty;

if(x>0)

{

y=3*x*x-4;

}

elseif(x==0)

{

y=2;

}

else

{

y=0;

}

returny;

}

//本题的的目的是学会判断语句的使用,以及如何连续输入。

题目2:

写一个函数可以打印下面的图案

*

***

*****

*******

*****

***

*

要求每个打印语句只打印一个*号,测试之

实现代码:

/*

*函数功能:

打印菱形

*入口参数:

行号i,列号j,k符号*

*返回值:

*/

#include

intupangle(inti,intj,intk);

intdownangle(inti,intj,intk);

intmain()

{

inti,j,k;

upangle(i,j,k);

downangle(i,j,k);

return0;

}

intupangle(inti,intj,intk)

{

for(i=1;i<=5;i++)

{

for(j=5-i;j>=0;j--)

printf("");

for(k=1;k<=2*i-1;k++)

printf("*");

printf("\n");

}

}

intdownangle(inti,intj,intk)

{

for(i=4;i>=1;i--)

{

for(j=0;j<=5-i;j++)

printf("");

for(k=1;k<=2*i-1;k++)

printf("*");

printf("\n");

}

}

//本题的目的是学会for循环语句的使用

题目3:

写一个函数voidmaxMinAver(int*data,int*max,int*min,float*ave,intsize),求一组数据的最大值、最小值和平均值,测试之。

其中data指向给定数据的数组的指针,max、min、ave分别指向最大值、最小值和平均值,size是数组的大小。

要求第一个实参是数组,第2、3、4个实参都是对普通的简单变量的某种操作,最后一个实参是数组的大小。

测试之

实现代码:

/*

*函数功能:

求数据的最大,最小和平均值

*入口参数:

数据data,数据大小size

*返回值:

最大值max,最小值min,平均值ave

*/

#include

#include

#defineSIZE2

voidmaxMinAver(int*data,int*max,int*min,float*ave,intsize);

intmain()

{

intmin,max,i;

intsize=SIZE;

floatave;

intdata[SIZE];

for(i=0;i

{

scanf("%d",&data[i]);

}

maxMinAver(data,&max,&min,&ave,size);

printf("%d%d%f\n",max,min,ave);

return0;

}

voidmaxMinAver(int*data,int*max,int*min,float*ave,intsize)

{

inti,total;

total=0,*ave=0;

*max=data[0];

*min=data[0];

for(i=0;i

{

total=total+data[i];

}

*ave=(float)total/size;

for(i=1;i

{

if(data[i]>*max)

*max=data[i];

if(data[i]<*min)

*min=data[i];

}

}

//本题主要考指针在数组中的应用,关键在于最大最小值先定义为第一个数据以及参数的指向地址。

题目4写一个函数用指针型字符串实现两个字符串比较,intmystrcmp(constchar*str1,constchar*str2),如果大于返回1,等于返回0,小于返回-1,测试之

实现代码:

/*

*函数功能:

用指针型字符串实现两个字符串比较

*入口参数:

字符串a,b

*返回值:

大于返回1,等于返回0,小于返回-1

*/

#include

intmystrcmp(constchar*str1,constchar*str2);

intmain()

{

inti=0;

chara[80],b[80];

scanf("%s%s",a,b);

i=mystrcmp(a,b);

printf("%d\n",i);

return0;

}

intmystrcmp(constchar*str1,constchar*str2)

{

inti;

for(i=0;*(str1+i)!

='\0'&&*(str2+i)!

='\0';i++)

{

if(*(str1+i)>*(str2+i))

{

return1;

}

elseif(*(str1+i)<*(str2+i))

{

return-1;

}

}

if(str1[i]=='\0'&&str2[i]=='\0')return0;

if(str2[i]=='\0')return1;

if(str1[i]=='\0')return-1;

}

//本题最主要的是要注意字符串一长一短的比较;刚开始做题时我也忽略了这点,只想到两个字符串自左至右逐个字符相比,直到出现不同的字符。

题目5写一个函数求求圆周率的近视值,精确到小数7位。

计算公式是

 

实现代码:

/*

*函数功能:

求圆周率的近似值

*入口参数:

分子a,分母b,第i个数,第i个数的值num,第i个数前的积s

*返回值:

*/

#include

#include

doublefunc(doubles);

intmain()

{

doubles=1;

printf("∏=%.7f\n",func(s));

return0;

}

doublefunc(doubles)

{

doublea=0,b=1;

inti=0;

doublenum;

doubles1=0;

intk;

while(fabs(2*s-2*s1)>=1e-7)

{

s1=s;

if(i%2==0)

a=a+2;

else

b=b+2;

num=a/b;

i++;

s*=num;

}

s=s*2;

returns;

}

//本题目的是学会精度的使用,其次是要善于发现该计算公式的规律。

题目6定义一个学生结构体,取别名STU,包含学号、姓名、数学、语文、计算机、英语等课程成绩,还有总分和平均分,写一个函数实现求一组学生每个学生各门课程的平均值,函数原型为floatave(STUstu[],intsize)。

测试之。

实现代码:

#include

#include

#defineSIZE2

typedefstruct

{

charnum[10];

charname[10];

intmath;

intenglish;

intcomputer;

intchinese;

intsum;

floataverage;

}STU;

STUstu[SIZE];

floatave(STUstu[],intsize);

intmain()

{

inti,size=SIZE;

floatsum,average;

for(i=0;i

{

scanf("%s%s%d%d%d%d",&stu[i].num,&stu[i].name,&stu[i].math,&stu[i].english,

&stu[i].computer,&stu[i].chinese);

}

ave(stu,size);

for(i=0;i

{

printf("%s%s%5.2f\n",stu[i].num,stu[i].name,stu[i].average);

}

return0;

}

floatave(STUstu[],intsize)

{

inti;

intsum=0;

floataverage=0;

for(i=0;i

{

stu[i].sum=stu[i].math+stu[i].english+stu[i].computer+stu[i].chinese;

stu[i].average=stu[i].sum/4.0;

}

}

//结构体会把调用函数计算出的结果自动带回,注意结构体别名的使用。

题目7写一个函数能够从文件读入一组学生STU的信息,保存到一个结构体数组中。

测试之

实现代码:

#include

#include

#include

#defineSIZE2

typedefstruct

{

charnum[10];

charname[10];

intmath;

intenglish;

intcomputer;

intchinese;

}STU;

STUstu[SIZE];

voidreadline(STUstu[]);

intmain()

{

inti;

readline(stu);

for(i=0;i

{

printf("%s%s%d%d%d%d\n",stu[i].num,stu[i].name,stu[i].math,stu[i].english,

stu[i].computer,stu[i].chinese);

}

return0;

}

voidreadline(STUstu[])

{

inti;

FILE*fp;

if((fp=fopen("php.txt","r+"))==NULL)

{

printf("cannotopeninfile\n");

getch();

exit

(1);

}

for(i=0;i

{

fscanf(fp,"%s%s%d%d%d%d",stu[i].num,stu[i].name,&stu[i].math,&stu[i].english,

&stu[i].computer,&stu[i].chinese);

}

fclose(fp);

}

//用“r+”方式时该文件应该已经存在,以便能向计算机输入数据。

如果不能实现“打开”的任务,fopen函数将会带回一个出错信息,出错原因可能是用“r+”打开一个并不存在的文件。

在使用完一个文件后应该关闭它,以防止再被误用。

题目8写一个函数能够输出某一学生结构体数组STUstu[10]的信息和每个人的总分、平均分到某一文本文件中,测试之。

输出格式是:

“%s%s%d%d%d%d%d%5.2f”

实现代码:

#include

#include

#include

#defineSIZE10

typedefstruct

{

charnum[10];

charname[10];

intmath;

intenglish;

intcomputer;

intchinese;

intsum;

floataverage;

}STU;

STUstu[SIZE];

floatave(STUstu[],intsize);

voidoutfile(STUstu[],intsize);

intmain()

{

inti,size=SIZE;

intsum;

floataverage;

for(i=0;i

{

scanf("%s%s%d%d%d%d",stu[i].num,stu[i].name,&stu[i].math,&stu[i].english,

&stu[i].computer,&stu[i].chinese);

}

ave(stu,size);

outfile(stu,size);

return0;

}

floatave(STUstu[],intsize)

{

inti;

intsum=0;

floataverage=0;

for(i=0;i

{

stu[i].sum=stu[i].math+stu[i].english+stu[i].computer+stu[i].chinese;

stu[i].average=stu[i].sum/4.0;

}

}

 

voidoutfile(STUstu[],intsize)

{

FILE*fp;

inti;

if((fp=fopen("structstu.txt","w+"))==NULL)

{

printf("cannotopeninfile\n");

getch();

exit

(1);

}

for(i=0;i

{

fprintf(fp,"%s%s%d%d%d%d%d%5.2f\n",stu[i].num,stu[i].name,stu[i].math,stu[i].english,

stu[i].computer,stu[i].chinese,stu[i].sum,stu[i].average);

}

fclose(fp);

}

//懂得fprintf的作用是将结构体中的整型和实型常量输出到fp指向的文件上。

题目9写一个函数能够打印输出学生结构体数组STUstu[10]的信息到屏幕上,测试之

实现代码:

#include

#include

#defineSIZE2

typedefstruct

{

charnum[10];

charname[10];

intmath;

intenglish;

intcomputer;

intchinese;

intsum;

floataverage;

}STU;

STUstu[SIZE];

floatave(STUstu[],intsize);

voidprint(STUstu[],intsize);

intmain()

{

inti,size=SIZE;

intsum;

floataverage;

for(i=0;i

{

scanf("%s%s%d%d%d%d",stu[i].num,stu[i].name,&stu[i].math,&stu[i].english,

&stu[i].computer,&stu[i].chinese);

}

ave(stu,size);

print(stu,size);

return0;

}

floatave(STUstu[],intsize)

{

inti;

intsum=0;

floataverage=0;

for(i=0;i

{

stu[i].sum=stu[i].math+stu[i].english+stu[i].computer+stu[i].chinese;

stu[i].average=stu[i].sum/4.0;

}

}

voidprint(STUstu[],intsize)

{

inti;

for(i=0;i

{

printf("%s%s%d%d%d%d%d%8.2f\n",stu[i].num,stu[i].name,stu[i].math,stu[i].english,

stu[i].computer,stu[i].chinese,stu[i].sum,stu[i].average);}

}

题目10写一个函数能够把一组学生成绩信息按总分进行排序,测试之。

实现代码:

#include

#include

#defineSIZE2

typedefstruct

{

charnum[10];

charname[10];

intmath;

intenglish;

floatsum;

}STU;

STUstu[SIZE];

floatave(STUstu[],intsize);

voidexchangeSort(STUstu[],intsize);

voidprint(STUstu[],intsize);

intmain()

{

inti,j,size=SIZE;

floatsum;

for(i=0;i

{

scanf("%s%s%d%d",&stu[i].num,&stu[i].name,&stu[i].math,&stu[i].english);

}

ave(stu,size);

exchangeSort(stu,size);

print(stu,size);

return0;

}

floatave(STUstu[],intsize)

{

inti,j;

floatsum=0;

for(i=0;i

{

stu[i].sum=stu[i].math+stu[i].english;

}

}

voidexchangeSort(STUstu[],intsize)

{

inti,j,tmp;

floattemp;

chartmpstr[size];

for(i=0;i

{

for(j=i+1;j

{

if(stu[i].sum>stu[j].sum)

{

temp=stu[i].sum;stu[i].sum=stu[j].sum;stu[j].sum=temp;

strcpy(tmpstr,stu[i].num);strcpy(stu[i].num,stu[j].num);strcpy(stu[j].num,tmpstr);

strcpy(tmpstr,stu[i].name);strcpy(stu[i].name,stu[j].name);strcpy(stu[j].name,tmpstr);

tmp=stu[i].math;stu[i].math=stu[j].math;stu[j].math=tmp;

tmp=stu[i].english;stu[i].english=stu[j].english;stu[j].english=tmp;

}

}

}

}

voidprint(STUstu[],intsize)

{

inti;

for(i=0;i

{

printf("%5s%10s",stu[i].num,stu[i].name);

printf("%8.2f\n",stu[i].sum);

}

}

//注意字符串的赋值不是用等号,而是用strcpy(,);字符串不能和一个字符等价,操作过程中不小心常会犯这样的错误。

题目11写一个函数能够查找给定学号的学生成绩信息,如果找到打印成绩信息,如果没有,显示“notfound!

”.测试之。

实现代码:

#include

#include

#defineSIZE2

typedefstruct

{

charnum[10];

charname[10];

intmath;

intenglish;

intcomputer;

intchinese;

floataverage,sum;

}STU;

STUstu[SIZE];

voidchoose(STUstu[],intsize);

intmain()

{

inti,j,size=SIZE;

floatsum,average;

for(i=0;i

{

scanf("%s%s%d%d%d%d",&stu[i].num,&stu[i].name,&stu[i].math,&stu[i].english,

&stu[i].computer,&stu[i].chinese);

}

choose(stu,size);

return0;

}

voidchoose(STUstu[],intsize)

{

inti;

charnum[10];

intflag=0;

scanf("%s",&num);

for(i=0;i

{

if(strcmp(num,stu[i].num)==0)

{

printf("

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

当前位置:首页 > 解决方案 > 其它

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

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