第八章函数程序设计一.docx

上传人:b****6 文档编号:16147262 上传时间:2023-07-10 格式:DOCX 页数:21 大小:40.08KB
下载 相关 举报
第八章函数程序设计一.docx_第1页
第1页 / 共21页
第八章函数程序设计一.docx_第2页
第2页 / 共21页
第八章函数程序设计一.docx_第3页
第3页 / 共21页
第八章函数程序设计一.docx_第4页
第4页 / 共21页
第八章函数程序设计一.docx_第5页
第5页 / 共21页
第八章函数程序设计一.docx_第6页
第6页 / 共21页
第八章函数程序设计一.docx_第7页
第7页 / 共21页
第八章函数程序设计一.docx_第8页
第8页 / 共21页
第八章函数程序设计一.docx_第9页
第9页 / 共21页
第八章函数程序设计一.docx_第10页
第10页 / 共21页
第八章函数程序设计一.docx_第11页
第11页 / 共21页
第八章函数程序设计一.docx_第12页
第12页 / 共21页
第八章函数程序设计一.docx_第13页
第13页 / 共21页
第八章函数程序设计一.docx_第14页
第14页 / 共21页
第八章函数程序设计一.docx_第15页
第15页 / 共21页
第八章函数程序设计一.docx_第16页
第16页 / 共21页
第八章函数程序设计一.docx_第17页
第17页 / 共21页
第八章函数程序设计一.docx_第18页
第18页 / 共21页
第八章函数程序设计一.docx_第19页
第19页 / 共21页
第八章函数程序设计一.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

第八章函数程序设计一.docx

《第八章函数程序设计一.docx》由会员分享,可在线阅读,更多相关《第八章函数程序设计一.docx(21页珍藏版)》请在冰点文库上搜索。

第八章函数程序设计一.docx

第八章函数程序设计一

第八章:

函数程序设计

(一)

实验时间:

2009年4月27日实验地点:

实验人:

专业:

班级:

实验题目:

函数程序设计

(一)

实验目的:

通过实验认识一些常见的系统库函数,能编写自定义函数。

实验过程:

1、例8.4实参求值顺序(从右到左)

main()

{inti=2,p;

p=f(i,++i);

printf(“%d”,p);

}

intf(inta,intb)

 {intc;

if(a>b) c=1;

elseif(a==b) c=0;

elsec=-1;

return(c);

 }

2、关于函数原型声明的例子:

1)例7.5

main()

{floatadd(floatx,floaty);函数声明

 floata,b,c;

 scanf(“%f,%f”,&a,&b);输入20,30逗号不要忘了

 c=add(a,b);

 printf(“sumis%f”,c);

 }

floatadd(floatx,floaty)函数定义

{floatz;

 z=x+y;

 return(z);

 }

2)例7.5

floatadd(floatx,floaty)

{floatz;

 z=x+y;

 return(z);

}

main()

{

floata,b,c;

scanf(“%f,%f”,&a,&b);

c=add(a,b);

printf(“%f”,c);

}

补充:

选择题

1.关于C语言函数的描述中,正确的是(B)P167

A.函数的定义可以嵌套,但函数的调用不可以嵌套

B.函数的定义不可以嵌套,但函数的调用得意嵌套

C.函数的定义和函数的调用都可以嵌套

D.函数的定义和函数的调用都不可以嵌套

2.已知chara;使用scanf()函数输入一个字符给变量a,不正确的函数调用是(B)

A.scanf(“%d”,&a);B.scanf(“%lf”,&a);

C.scanf(“%c“,a);D.scanf(”%u”,&a);整型和字符型可互相转换,但浮点型不可以

3.putchar()函数的功能是向终端输出(B)

A.多个字符B.一个字符C.一个实型变量值D.一个整型变量表达式

4、已知inta;使用scanf()函数输入一个整数给变量a,正确的函数调用是(B)

A、scanf(“%d”,a);B、scanf(“%d”,&a);

C、scanf(“A”,&a);D、scanf(“%df”,&a);

5.C语言的函数体由(B)括起来

A.()B.{}  C.[] D./**/

6.如下fun函数的类型是(C)

fun(floatx)

{

doubley;

intz;

y=x*x;

z=(int)y;

return(z);

}

A.voidB.doubleC.intD.float

7.以下程序的屏幕输出为(B)

#include

voidf(inti)

{

inta=2;

a=i++;

printf(“%d”,a);

}

main()

{

inta=1,c=3;

f(c);

a=c++;

printf(“%d”,a);

}

A.4,3B.3,3C.4,5D.3,5

8.若有以下函数定义:

intfun()

{

staticintk=0;

return++k;

}

以下程序段运行后屏幕输出为(D)

inti;

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

fun();

printf(“%d”,fun());

A.0B.1C.5D.6

9.以下程序运行的结果是(A)

intfun(intarray[4][4])

{

intj;

for(j=0;j<4;j++)

printf(“%2d”,array[2][j]);

printf(“\n”);

}

main()

{

inta[4][4]={0,1,2,0,1,0,0,4,2,0,0,5,0,4,5,0};

fun(a);

}

A.2005B.1004C.0120D.0450

10.以下程序运行后屏幕输出为(D)

#include〈stdio.h〉

inta=2,b=3;

intmax(inta,intb)

{

intc;

c=a>b?

a:

b;

return(c);

}

main()

{

inta=4;

printf(“%d”,max(a,b));

}

A.2,3B.2C.3D.4

11.以下程序运行后屏幕输出为(B)

#include

intf(intx,inty)

{

return(x+y);

}

main()

{

inta=2,b=3,c;

c=f(a,b);

printf(“%d+%d=%d\n”,a,b,c);

}

A.0B.2+3=5C.2+3=0D.3+2=5

改错题:

1.计算大于10的最小n个能被3整除的正整数倒数之和.

程序Cmody012.c中函数fun(intn)的功能是:

根据参数n,计算大于10的最小n个能被3整除的正整数之和.例如:

fun(8)=

fun(8)求大于10的最小8个能被3整除的正整数的倒数之和

答案:

#include

#include

#include

#include

#defineM50

doublefun(intn)

{doubley=0.0;

inti,j;

j=0;

for(i=1;;i++)

{

/**/if((i>10)&&(i%3==0))/**/i>10

{

/**/y+=1/i;/**/1.0%i

j++;

}

if(j==n)break;

}

returny;

}

voidmain()

{clrscr();

printf("fun(8)=%8.3lf\n",fun(8));

}

2.输出201~300之间的所有素数,统计总个数素数怎么判断?

程序cmody032.C的功能是:

输出201~300之间的所有素数,统计总个数。

答案:

#include

#include

voidmain()

{intnum;

printf("\n");

num=fun();

printf("\nThetotalofprimeis%d",num);

getch();

}

intfun()

{intm,i,k,n=0;

for(m=201;m<=300;m+=2)

{k=sqrt(m+1);

for(i=2;i<=k;i++)

/**/if(m/i==0)/**/m%i

break;

/**/if(i>k)/**/

{printf("%-4d",m);

n++;;

if(n%10==0)printf("\n");

}

}

returnn;

}

3.百元买百鸡

程序cmody022.c的功能是求解百元买百鸡问题:

设一只公鸡2元,一只母鸡1元,一只小鸡0.5元。

问一百元买一百只鸡,公鸡、母鸡、小鸡数可分别为多少?

有多少种分配方案?

答案:

#include

#include

/**/intfun();/**/分号去掉

{inthen,cock,chicken,n=0;

for(cock=0;cock<=50;cock+=1)

for(hen=0;hen<=100;hen=hen+1)

{chicken=2*(100-hen-2*cock);

/**/if(cock+hen+chicken=100)/**/=改为==

{n++;

printf("%d-->hen:

%d,cock:

%d,chicken:

%d\n",n,hen,cock,chicken);

if(n==20)getch();

}

}

returnn;

}

voidmain()

{intnum;

num=fun();

printf("\nThereare%dsolutions.\n",num);

getch();

}

填空题:

:

1.歌德巴赫猜想

补充程序Ccon023.c,该程序可测试歌德巴赫猜想:

从键盘上输入一个大于6的偶数,总

能找到两个素数,使得这两素数之和正好等于该偶数.

答案:

#include

#include

intprime(intn)

{intk,flag=1;

for(k=2;k<=n/2+1;k++)

if(n%k==0){flag=/**/0/**/;break;}

returnflag;

}

voidmain()

{intnum,a;

//clrscr();

do

{printf("Pleaseinputanevennumber:

");

scanf("%d",&num);

}while(num<=6||num%2==1);

for(a=2;a<=num/2+1;a++)

if(prime(a)&&prime(/**/num-a/**/))

printf("\n%d=%d+%d",num,a,num-a);

}

2.冒泡排序法

补充程序con042.c程序中的insort()函数用冒泡法对数组

中m个元素从大到小排序。

答案:

#include

#include

voidsort(inta[],intm)

{inti,j,t,swap;

for(i=0;i

{

swap=0;

for(j=0;j

{

if/**/a[j]

{

swap=1;

t=a[j];

a[j]=/**/a[j+1]/**/;

a[j+1]=t;

}

}

if(!

swap)break;

}

}

voidmain()

{

inta[]={23,55,8,32,18,2,9};

inti,k=sizeof(a)/sizeof(int);

sort(a,k);

for(i=0;i

printf("%d",a[i]);

printf("\n");

getch();

}

起3.用所给公式计算三角形面积

补充程序ccon053.c,使程序中的fun()函数,能根据三角形三边长a,b,c,用公式

计算这个三角形的面积,(规定:

若这三条边不能构成三角形,返回-1)。

答案:

#include

#include

/**/float/**/fun(floata,floatb,floatc)

{

floats,area;

s=/**//**/;

s=s*(s-a)*(s-b)*(s-c);

if(s<0)

area=-1;

else

area=sqrt(s);

returnarea;

}

main()

{

floata,b,c,area;

printf("Pleaseinputthreenumbers:

\t");

scanf("%f%f%f",&a,&b,&c);

area=fun(a,b,c);

printf("Areais:

%.2f\n",area);

getch();

}

4.求函数值

补充程序ccon071.c,对函数f(x)=x2-2x+6,分别计算f(x+8)和f(sinx)的值。

如x=2.0,则输出:

f(x+8)=86.000

f(sinx)=5.008

答案:

#include

/**/#include/**/

doublefun(doublex)

{

/**/floaty;

y=x*x-2*x+6;

returny;

/**/

}

voidmain()

{

doublex,y1,y2;

clrscr();

printf("Pleaseinputx:

");

scanf("%lf",&x);

y1=fun(x+8);

y2=fun(/**/sinx/**/);

printf("\nf(x+8)=%.3lf",y1);

printf("\nf(sinx)=%.3lf",y2);

getch();

}

5.计算已知公式的值

补充程序ccon072.c,计算

其中m,n为整数且m>n>=0。

答案:

#include

doublefun(unsignedm,unsignedn)

{

unsignedi;

doublep=1.0;

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

/**//**/

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

/**//**/

for(i=1;i<=m-n;i++)

p=p/i;

returnp;

}

voidmain()

{

clrscr();

printf("p=%f\n",fun(13,7));

getch();

}

编程题:

1.输入数字,求已知公式的值

打开程序Cprog041.c,其中的fun()函数,使其计算:

f(x)=

输入:

12

32.25

0.113

输出:

f(12.000)=10.387

f(32.250)=12.935

f(0.113)=1.568

答案:

#include

#include

doublef(floatx)

{

/**/

/**/

}

voidmain()

{

floatx;

doubley;

printf("Pleaseinputanumber:

\n");

scanf("%f",&x);

y=f(x);

printf("f(%.3f)=%.3f\n",x,y);

getch();

}

2.函数求值

打开Cprog031.c,完成其中的函数fun1,该函数的数学表达式是:

fun1(x)=

例如:

fun1(0.76)=1.200

fun1(3.00)=10.000

fun1(3.76)=8.520

答案:

#include

#include

doublefun1(doublex)

{

/**/

/**/

}

voidmain()

{

clrscr();

printf("fun1(0.76)=%8.3lf\n",fun1(0.76));

printf("fun1(3.00)=%8.3lf\n",fun1(3.00));

printf("fun1(3.76)=%8.3lf\n",fun1(3.76));

}

3.求已知函数的值

Cprog021.c,完成其中的函数fun1,该函数的数字表达式是:

fun1(x)=

答案:

#include

#include

doublefun1(doublex)

{/**/

 

/**/

}

voidmain()

{

clrscr();

printf("fun1(0.76)=%8.3lf\n",fun1(0.76));

printf("fun1(3.00)=%8.3lf\n",fun1(3.00));

printf("fun1(3.76)=%8.3lf\n",fun1(3.76));

}

4.将三个字符串a,b,c从小到大排序后输出.

Cprog022.c,完成其中函数fun2{chara[],charb[],charc[]),实现:

将三个字符串a,b,c从小到大排序后输出.

答案:

#include

#include

#include

#include

voidfun2(chara[],charb[],charc[])

{

/**/

chart[10];

if(strcmp(a,b)>0)

{

strcpy(t,a);

strcpy(a,b);

strcpy(b,t);

}

if(strcmp(a,c)>0)

{

strcpy(t,a);

strcpy(a,c);

strcpy(c,t);

}

if(strcmp(b,c)>0)

{

strcpy(t,c);

strcpy(c,b);

strcpy(b,t);

}

/**/

}

voidmain()

{charstr1[15]="Fuzhou",str2[15]="Fujian",str3[15]="China";

clrscr();

fun2(str1,str2,str3);

printf("Theorderedstringsis:

%s,%s,%s\n",str1,str2,str3);

getch();

}

5.按要求实现函数功能

打开考生文件夹中的cprog012.c,完成其中的函数

实现:

(1)将数组a中大于-20的元素,依次存放到数组b中。

(2)将数组b中的元素按照从小到大的顺序存放到数组c中;

(3)函数返回数组b中的元素个数。

答案:

#include

#include

#include

#include

intfun2(inta[],intn,intb[],intc[])

{

/**/

/**/

}

voidmain()

{intn=10,i,nb;

intaa[10]={12,-10,-31,-18,-15,50,17,15,-20,20};

intbb[10],cc[10];

//clrscr();

printf("Thereare%2delementsinaa.\n",n);

printf("Theyare:

");

for(i=0;i

printf("\n");

nb=fun2(aa,n,bb,cc);

printf("Elementsinbbare:

");

for(i=0;i

printf("\n");

printf("Elementsinccare:

");

for(i=0;i

printf("\n");

printf("Thereare%2delementsinbb.\n",nb);

}

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

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2