实验710函数指针结构体.docx
- 文档编号:28298484
- 上传时间:2023-07-10
- 格式:DOCX
- 页数:23
- 大小:154.16KB
实验710函数指针结构体.docx
《实验710函数指针结构体.docx》由会员分享,可在线阅读,更多相关《实验710函数指针结构体.docx(23页珍藏版)》请在冰豆网上搜索。
实验710函数指针结构体
实验7函数的定义与调用
一、实验目的
1、能根据问题正确确定函数的类型
2、掌握求值类函数的编写与调用
3、掌握判断类函数的编写与调用
4、掌握操作类函数的编写与调用
二、知识要点
1、函数的概念、使用目的以及实现方法
2、求值类函数的特点:
主调函数提供实参值,被调函数计算函数值,通过return语句返回函数值。
3、判断类函数的特点:
求值型的一种特例,函数返回值只有两种状态。
4、操作类函数的特点:
完成指定操作,函数类型为void。
三、实验预习(要求做实验前完成)
1、根据以下函数调用判断函数是求值类、判断类还是操作类:
if(x>0)fnu1(x);a=fun2(x,6)-1;if(fun3(b)==1)t++;
fun1是:
操作类fun2是:
求值类fun3是:
判断类
2、如果函数首部以void开头,则该函数属于:
空类型类;
如果函数首部以int开头,则该函数属于:
整型类;
如果函数首部以float开头,则该函数属于:
实型类;
3、写出满足如下要求函数的函数首部:
①函数名为hypo,为了求一个字符,需要两个参数,分别是整型和字符型:
charhypo(intx,hypoy);
②函数名为fun2,操作类函数,需要两个整型参数:
voidfun2(intx,inty);
③函数名为baoy,判断类函数,需要一个字符型参数和两个整型参数:
intbaoy(charx,inty,intz);
一、实验内容
1、编写一个函数求
的值,x作为形参,用主函数调用此函数求:
#include"stdio.h"
#include"math.h"
floatfun(floatx)
{
floaty;
y=x*x-5*x+4;
return(y);
}
voidmain()
{
floata,y1,y2,y3;
printf("输入a的值:
");
scanf("%f",&a);
y1=fun(a);
y2=fun(a+15);
y3=fun(sin(a));
printf("y1=%f\n",y1);
printf("y2=%f\n",y2);
printf("y3=%f\n",y3);
}
2、编写函数,给定一个字符和一个整数,将该字符输出整数次。
#include"stdio.h"
voidoutput(chara,intx)
{
inti;
for(i=1;i<=x;i++)
putchar(a);
}
main()
{
charb;
inty;
printf("请输入一个字符:
\n");
scanf("%c",&b);
printf("请输入次数:
\n");
scanf("%d",&y);
output(b,y);
printf("\n");
}
3、编写函数,输出所有的“水仙花”数。
#include"stdio.h"
intsx(intx)
{
inta,b,c;
a=x%10;b=x/100;c=(x-b*100)/10;
if(a*a*a+b*b*b+c*c*c==x)
return1;
elsereturn0;
}
main()
{
inti;
for(i=100;i<1000;i++)
if(sx(i))
printf("%d",i);
printf("\n");
}
五、实验结果
要求写出运行界面并输出运行结果
(1)
(2)
(3)
实验8函数与数组
一、实验目的
1、掌握数组作为参数的函数编写与调用方法
2、掌握数组作为参数的特殊性
3、掌握字符串作为参数的函数编写与调用方法
二、知识要点
1、地址传递的概念及使用
2、数组元素和数组名作为函数参数的特点与区别
3、字符串作为参数的特点:
‘\0’字符的使用
三、实验预习(要求做实验前完成)
1、数组作为函数参数时,其特殊性是参数之间的数据传递方式不是值传递,而是地址传递
2、定义字符数组作为参数的函数时,通常需要提供长度作为参数;而定义
整形或实形数组作为参数的函数时,通常不需要提供长度参数
3、写出满足如下要求函数的函数首部:
①函数名为fmax,求一个实型数组的最大元素值:
fmax(floata[10],floatmax)
②函数名为scount,求一个字符串中大写字母的个数:
scount(chara[10],intn)
③函数名为delf,删除一个字符串的第一个字符:
delf(chara[10],charb[10])
四、实验内容
1、编写一个函数,其功能是将字符串中的大写字母改为小写字母,其它字符不变。
#include"stdio.h"
#include"string.h"
voidexchange(chara[])
{
inti;
for(i=0;i if(a[i]>='A'&&a[i]<='Z') a[i]+=32; } voidmain() { charb[20],k; printf("请输入一个字符串: \n"); gets(b); exchange(b); puts(b); } 2、编写一个函数,求出给定的二维数组中每一行最大的元素,并显示出来。 #include"stdio.h" voidmax(inta[3][3]) { inti,j,max[3]; for(i=0;i<3;i++) max[i]=a[i][0]; for(j=0;j<3;j++) if(a[i][j]>max[i]) max[i]=a[i][j]; for(i=0;i<3;i++) printf("第%d行最大值: %d\n",i+1,max[i]); printf("\n"); } voidmain() { inti,j,b[3][3]; printf("输入一个3行3列的数组: "); for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d",&b[i][j]); printf("数组元素为: \n"); for(i=;i<3;i++) { for(j=0;j<3;j++) printf("%d",b[i][j]); printf("\n"); } max(b); } 3、在主函数中输入N个人的某门课程的成绩,分别用函数求: (1)平均分、最高分和最低分; (2)分别统计90-100分的人数、80-89分的人数、70-79分的人数、60-69分的人数及59分以下的人数。 结果在主函数中输出。 #include"stdio.h" doubleave(intx[15],floataveg,intmax,intmin); doublegrade(intx[15],inta,intb,intc,intd,inte); voidmain() { intx[15],n,min,max,a,b,c,d,e; floataveg; aveg=0; for(n=0;n<15;n++) scanf("%d",&x[n]); ave(x,aveg,max,min); grade(x,a,b,c,d,e); printf("平均成绩: %f\n最高分: %f\n最低分: %f\n",aveg,max,min); printf("小于60: %d\n60~70: %d\n70~80: %d\n80~90: %d\n90~100: %d\n",a,b,c,d,e); } doubleave(intx[15],floataveg,intmax,intmin) { inti: max=x[0]; min=x[0]; for(i=0;i<15;i++) {aveg=aveg+x[i]; if(max elseif(min>x[i]);min=x[i]; } aveg=aveg/40 return(aveg,min,max); } doublegrade(intx[15],inta,intb,intc,intd,inte) { intj; a=0;b=0;c=0;d=0;e=0; for(j=0;j<15;j++) {if(x[j]<60)e=e+1; elseif(x[j]<70)d=d+1; elseif(x[j]<80)c=c+1; elseif(x[j]<90)d=d+1; elseif(x[j]<100)e=e+1; } return(a,b,c,d,e); } 五、实验结果 要求写出运行界面并输出运行结果 (1) (2) (3) 实验9指针及其应用 一、实验目的 1、掌握指针的概念 2、掌握指针变量的定义和基本使用方法 3、掌握使用指针操作数组元素的方法 4、掌握使用指针操作字符串的方法 二、知识要点 1、变量的直接访问和间接访问的概念 2、指针和指针变量的概念 3、简单变量的指针及指向简单变量的指针变量的定义、赋值及使用 4、数组的指针及指向数组的指针变量的定义、赋值及使用 5、字符串的指针及指向字符串的指针变量的定义、赋值及使用 三、实验预习(要求做实验前完成) 1、写出一个C语句,使得指针变量u指向变量x: *p=&x; 2、写出一个C语句,输出“指针变量p指向的整型变量”的值: int*p; 3、把“指针变量u所指向的变量”的值变为40,其语句是: *u=40; 4、定义三个变量,其中x1是整型变量;y1、y2是指向整数的指针变量: intx1,*y1,*y2 5、若有语句: chart[20]=“abcdefgh”,*p;则使p指向字符串的第一个字符的语句是: p=t; 四、实验内容(以下题目要求使用指针方法完成) 1、已知一个整型数组x[4],它的各元素值分别为3、11、8和22.使用指针表示法编程序,求该数组各元素之积。 #include"stdio.h" #include"string.h" voidmain() { charstr1[30],str2[20],str3[50],*p,*q,*s; intn,i; printf("请插入原始字符串: \n"); gets(str1); printf("请输入需要插入的字符串: \n"); gets(str2); printf("请输入需要插入的位置: \n"); scanf("%d",&n); p=str1; q=str2; s=str3; for(i=0;i *(s+i)=*(p+i); for(i=0;i *(s+n+i)=*(q+i); for(i=0;i *(s+n+strlen(str2)+i)=*(p+n+i); puts(str3); } 2、编写程序,输入10个整数至一数组,将其中最小的数与第一个数对调,把最大的数与最后一个数对调。 (要求输出对调前后的数组) #include"stdio.h" voidmain() { inta[10],i,*p,min,t; printf("请输入十个数字: \n"); for(i=0;i<10;i++) scanf("%d",&a[i]); min=a[0]; for(i=0;i<10;i++) if(a[i] { p=&a[i]; min=a[i]; } t=a[0]; a[0]=min; *p=t; for(i=0;i<10;i++) printf("%d",a[i]); printf("\n"); } 3、编写程序,复制一个字符串到字符数组x中,要求在复制时删除其中的数字字符。 输出x数组。 (x数组中不能含有数字字符) #include“stdio.h” #include“string.h” voidmain() { chara[30],x[30],*p; inti,j=0; p=a; printf("请输入一个字符串: "); gets(p); for(i=0;i if(! (*(p+i)>='0'&&*(p+i)<='9')) x[j++]=*(p+i); x[j++]='\0'; puts(x); } 4、利用动态内存分配的方法,输入一个班的学生某门功课的成绩,人数由用户指定,输出全班平均分以及最高分和最低分。 #include"stdio.h" #include"stdlib.h" voidmain() { int*p,max,min,i,n; floatave,sum=0; printf("请输入人数n: "); scanf("%d",&n); printf("请输入每个人的成绩: \n"); p=(int*)malloc(n*sizeof(int)) for(i=0;i { scanf("%d",p+i); sum+=*(p+i); } max=min=*p; for(i=1;i { if(*(p+i) min=*(p+i); if(*(p+i)>max) max=*(p+i); } ave=sum/n; printf("\n最高分为: %d,最低分为: %d,平均分为: %f\n",max,min,ave); } 五、实验结果 要求写出运行界面并输出运行结果 (1) (2) (3) (4) 实验10结构体 一、实验目的 1、掌握结构体类型的定义方法 2、掌握定义和使用结构体变量、数组的方法 3、掌握访问结构体成员的方法 4、掌握结构体指针的定义与引用 二、知识要点 1、结构体类型与结构体变量的概念 2、结构体变量的定义、存储、引用方法 3、结构体数组的概念及使用 4、结构体指针的概念与使用 三、实验预习(要求做实验前完成) 1、使用结构体类型数据的目的是什么? 答: 为了表示一些相关的简单数据类型,定义数据库中表的结构,根据数据库中表的结构建立若干个“记录”,形成数据库中的表文件,其中每个记录是由多项数据构成的一个集合 2、结构体类型和结构体变量的区别为何? 答: 结构体类型: 只声明结构体的组织形式,本身不占存储空间 结构体变量: 某种结构体类型的具体实例,编译系统只有定义了结构体变量后才为其分配内存空间 3、结构体变量与简单变量的区别为何? 答: 结构体变量: 某种结构体类型的具体实例 简单变量: 结构体变量中的成员 4、结构体数组与结构体变量有何关系? 答: 一个结构体变量只能存放一个数据,存放若干数据则称为结构体数组 四、实验内容 1、有N个学生(N值自定),每个学生的数据包括学号,姓名,三门课的成绩,编程从键盘输入N个学生数据,要求打印出三门课每一门课的成绩,并输出三门课总分最高的学生的每一门课的成绩,以及他的学号姓名。 #include #include typedefstruct { charnum[10]; charname[10]; floatscore[3]; floatavg; }stu; voidinput(intn,stu*s) { for(inti=0;i { scanf("%s",&s[i].num); scanf("%s",&s[i].name); scanf("%f%f%f",&s[i].score[0],&s[i].score[1],&s[i].score[2]); s[i].avg=(s[i].score[0]+s[i].score[1]+s[i].score[2])/3; } } voidoutput1(intn,stu*s) { printf("学号\t姓名\t成绩1\t成绩2\t成绩3\t平均成绩\n"); for(intindex=0;index printf("%s\t%s\t%f\t%f\t%f\t%f\n",s[index].num,s[index].name,s[index].score[0],\ s[index].score[1],s[index].score[2],s[index].avg); } voidoutput2(intn,stu*s) { intindex=0; floatmax=s[0].avg; for(inti=1;i if(max { max=s[i].avg; index=i; } printf("%s\t%s\t%f\t%f\t%f\t%f\n",s[index].num,s[index].name,s[index].score[0],\ s[index].score[1],s[index].score[2],s[index].avg); } voidmain() { intn; printf("输入学生数目: \n"); scanf("%d",&n); stu*s=(stu*)malloc(n*sizeof(stu)); input(n,s); printf("所有学生数据: \n"); output1(n,s); printf("平均分最高学生数据: \n"); output2(n,s); } 2、定义一个结构体数组,存放12个月的信息,每个数组元素由3个成员组成: 月份的数字表示、月份的英文单词及该月的天数。 编写一个输出一年12个月信息的程序。 #include #include usingnamespacestd; structYear { intmonth; stringen_month; intdays; }; voidmain() { inti,j; Yearyear[12]; for(i=0;i<12;i++) { year[i].month=i+1; if(i+1==1||i+1==3||i+1==5||i+1==7||i+1==8||i+1==10||i+1==12) year[i].days=31; if(i+1==4||i+1==6||i+1==9||i+1==11) year[i].days=30; if(i+1==2) year[i].days=28; } year[0].en_month="January"; year[1].en_month="February"; year[2].en_month="March"; year[3].en_month="April"; year[4].en_month="May"; year[5].en_month="June"; year[6].en_month="July"; year[7].en_month="August"; year[8].en_month="September"; year[9].en_month="October"; year[10].en_month="November"; year[11].en_month="December"; for(j=0;j<12;j++) { cout< cout< cout< cout< } getchar(); } 五、实验结果 要求写出运行界面并输出运行结果 (1) (2)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 710 函数 指针 结构
![提示](https://static.bdocx.com/images/bang_tan.gif)