当前位置:文档之家› 实验十函数应用答案

实验十函数应用答案

实验十函数应用一、实验目的1.掌握函数的定义和调用;2.理解形参和实参的使用和传值调用;3.理解函数声明的使用;4.掌握函数的嵌套调用;5.了解函数的嵌套与递归调用,掌握递归函数的编写规律;6.了解数组元素、数组名作函数参数。

二、实验学时数2学时三、实验步骤(一)阅读程序1.#include <stdio.h>int fun (int x, int y, int z){ z=x * x + y * y;}main(){ int a=38;fun(7,3,a);printf("%d",a);2.#include <stdio.h>void fun (int x,int y );main(){int x=5,y=3;fun(x,y);printf("%d,%d\n",x,y);}void fun (int x,int y ){ x=x+y;y=x-y;x=x-y;printf("%d,%d\n",x,y);3.#include <stdio.h>int f (int a);main(){ int s[ 8 ] = {1,2,3,4,5,6} ,i, d=0;for (i=0; f( s[i] ) ; i++)d+=s[i];printf("%d\n",d);}int f(int a){ return a%2;}4.#include<stdio.h>long f( int g){ switch(g){ case 0:return 0;case 1:case 2: return 1;}return ( f(g-1)+ f(g-2));}main ( ){ long int k;k = f(7);printf("\nk= %d\n",k);}5. #include<stdio.h>int f(int b[ ][4]){ int i,j,s=0;for(j=0;j<4;j++){ i=j;if(i>2) i=3-j;s+=b[i][j];}return s;}main( ){int a[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};printf("%d\n",f(a) );}(二)要求:依据题目要求,分析已给出的语句,填写空白。但是不要增行或删行,改动程序的结构。1. 请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。#include <stdio.h>double max(double a,double b);//或者double max(double,double);main(){double x,y;scanf("%lf%lf",&x,&y);printf("%.8lf\n",max(x,y));}double max(double a,double b){return (a>b ? a:b) ;}2.以下函数的功能是:求x的y次方,请填空,并配写出主调函数。

double fun( double x, int y){int i;double z;for(i=1, z=x; i<y;i++) z=z* x;return z;}main( ){ double a;int b;scanf("%lf%d",&a,&b);printf("%lf的%d次方为%lf",a,b,fun(a,b));}3.mystrlen函数的功能是计算字符串的长度,并作为函数值返回。

请填空,并配写主调函数。

int mystrlen(char str[ ]){int i;for(i=0; str[i]!=‘\0';i++);return(i);}main ( ){ char a[81];scanf("%s",a);printf("所输入字符串的长度为%d\n",mystrlen(a));}(三)调试程序要求:调试运行下列程序是否正确,若有错,写出错在何处?填写正确的运行结果。1.行号1 void func ( float a , float b ) //void----float2 main()3 { float x , y ;4 float z ;5 scanf(“%f , % f”,&x ,&y);6 z = func ( x , y ) ;7 printf ( “ z = % f \n” , z ) ;8 }9 float func ( float a , float b )10 { float c ;11 c = a * a + b * b ;12 return c ;13 }2.函数sstrcmp()的功能是对两个字符串进行比较。

当s数组中字符串和t数组中字符串相等时,返回值为0;当s数组中字符串大于t数组中字符串时,返回值大于0;当s数组中字符串小于t数组中字符串时,返回值小于0(功能等同于库函数strcmp())。

行号1 int sstrcmp(char s[ ],char t[])2 { int i=0 , j=0 ;3 while(s[i]&&t[j]&& s[i]== t[j] ) ;4 return s[i]-t[j];5 }6 main()7 { int x;8 char s1[50],s2[50];9 scanf("%s%s",s1,s2);10 x= sstrcmp(s1,s2);11 printf("\n%d\n",x);}int sstrcmp(char s[ ],char t[]){ int i=0 , j=0 ;while(s[i]&&t[j]&& s[i]== t[j] )i++,j++;return s[i]-t[j];}main(){ int x;char s1[50],s2[50];scanf("%s%s",s1,s2);x= sstrcmp(s1,s2);printf("\n%d\n",x);}3.以下程序的功能是用递归方法计算学生的年龄,已知第一位学生年龄最小,为10岁,其余学生一个比一个大2岁,求第12位学生的年龄。

行号main()1 { int age( int n) ;2 int n =12;3 printf (“ Age is %d\n” , age (n));4 }5 int age(int n);6 { int c;7 c = age (n-1)+2 ;8 return ( c ) ;9 }main(){ int age( int n);int n=12;printf("Age is %d\n",age (n));}int age(int n){ int c;if(n==1) return 10;c=age(n-1)+2;return ( c ) ;}(四)编写程序1.编写一个函数,选出能被3整除且至少一位是5的两位数,用主函数调用这个函数,并输出所有这样的两位数。

2.编写函数判断某数是否为素数,如果是素数,则返回1,否则返回0,在main函数中调用该函数,根据返回值判断是否为素数。

1#include<stdio.h>int f(int x){ int a,b;a=x/10;b=x%10;if((a==5||b==5)&&x%3==0)return 1;else return 0;}main( ){int i;for(i=15;i<=95;i++)if(f(i)) printf("%4d",i);}2#include<stdio.h>int f(int x){ int i,t=1;for(i=2;i<=x-1;i++)if(x%i==0){t=0;break;}return t;}main( ){int n,t;scanf("%d",&n);t=f(n);if(t==1) printf("%4d是素数",n); else printf("%4d不是素数",n); }。

相关主题