实验函数指针结构体.docx

上传人:b****2 文档编号:2189890 上传时间:2022-10-27 格式:DOCX 页数:17 大小:105.86KB
下载 相关 举报
实验函数指针结构体.docx_第1页
第1页 / 共17页
实验函数指针结构体.docx_第2页
第2页 / 共17页
实验函数指针结构体.docx_第3页
第3页 / 共17页
实验函数指针结构体.docx_第4页
第4页 / 共17页
实验函数指针结构体.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

实验函数指针结构体.docx

《实验函数指针结构体.docx》由会员分享,可在线阅读,更多相关《实验函数指针结构体.docx(17页珍藏版)》请在冰豆网上搜索。

实验函数指针结构体.docx

实验函数指针结构体

实验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个整数至一数组,将其中最小的数与第一个数对调,把最大的数

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

当前位置:首页 > 农林牧渔 > 农学

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

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