文档库 最新最全的文档下载
当前位置:文档库 › 实验10指针做函数参数编程训练

实验10指针做函数参数编程训练

实验10指针做函数参数编程训练
实验10指针做函数参数编程训练

实验10指针做函数参数编程训练

实验目的:

1.掌握指针的定义及使用;

2.体会使用指针的作用;

3.掌握指针做函数参数的作用;

4.掌握指针做函数参数的基本步骤;

实验题目:

1.输入某年某月某日,计算并输出它是这一年的第几天。

/*函数功能:对给定的某年某月某日,计算它是这一年第几天

函数参数:整型变量year,month,day,分别代表年,月,日

函数返回值:这一年的第几天*/

int DayofYear(int year,int month,int day);

2.输入某一年的第几天,计算并输出它是这一年的第几月第几日。

/*函数功能:对给定的某一年的第几天,计算它是这一年的第几月第几日函数入口参数:整型变量year,存储年

整型变量yearDay,存储这一年的第几天

函数出口参数:整型指针pMonth,指向存储这一年第几月的整型变量

整型指针pDay,指向存储第几日的整型变量

函数返回值:无*/

void MonthDay(int year,int yearDay,int *pMonth,int *pDay);

3.输出如下菜单,用switch语句实现根据用户输入的选择执行相应的操作。

1.year/month/day->yearDay

2.yearDay->year/month/day

3.Exit

Please enter your choice:

参考程序及注释:

#include

#include

int DayofYear(int year, int month, int day);

void MonthDay(int year, int yearDay, int *pMonth, int *pDay);

void Menu(void);

int dayTab[2][13] = {{0,31,28,31,30,31,30,31,31,30,31,30,31},

{0,31,29,31,30,31,30,31,31,30,31,30,31}};

int main()

{

int year, month, day, yearDay;

char c;

Menu(); /* 调用Menu函数显示一个固定式菜单*/

c = getchar(); /* 输入选择*/

switch (c) /* 判断选择的是何种操作*/

{

case '1':

printf("Please enter year, month, day:");

scanf("%d,%d,%d", &year, &month, &day);

yearDay = DayofYear(year, month, day);

printf("yearDay = %d\n", yearDay);

break;

case '2':

printf("Please enter year, yearDay:");

scanf("%d,%d", &year, &yearDay);

MonthDay(year, yearDay, &month, &day);

printf("month = %d, day = %d\n", month, day);

break;

case '3':

exit(0); /* 退出程序的运行*/

default:

printf("Input error!");

}

return 0;

}

/* 函数功能:对给定的某年某月某日,计算并返回它是这一年的第几天*/

int DayofYear(int year, int month, int day)

{

int i, leap;

/* 若year为闰年,即leap值为1,则用第1行元素dayTab[1][i]计算;

否则leap值为0,用第0行dayTab[0][i]计算*/

leap = ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0);

for (i=1; i

{

day = day + dayTab[leap][i];

}

return day; /* 返回计算出的day的值*/

}

/* 函数功能:对给定的某一年的第几天,计算它是这一年的第几月第几日*/ void MonthDay(int year, int yearDay, int *pMonth, int *pDay)

{

int i, leap;

leap = ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0);

for (i=1; yearDay>dayTab[leap][i]; i++)

{

yearDay = yearDay - dayTab[leap][i];

}

*pMonth = i; /* 将计算出的月份值赋值给pMonth所指向的变量*/ *pDay = yearDay; /* 将计算出的日号赋值给pDay所指向的变量*/

}

/* 函数功能:显示菜单*/

void Menu(void)

{

printf("1. year/month/day -> yearDay\n");

printf("2. yearDay -> year/month/day\n");

printf("3. Exit\n");

printf("Please enter your choice:");

}

实验11 字符串与指针编程练习

实验目的:

1.熟悉字符串的输入及输出

2.掌握字符指针做函数参数的方法

3.掌握数组做函数参数的方法

实验题目:

1.编写一函数实现字符串的反序输出,函数原型如下:

void invert(char *s);

即将字符串s反序。

解题思路:用循环将串s的首尾字符对调,直到中间位置结束。

如:串“ABCDE\0”,将A与E对调(交换),B与D对调,循环次数是串的实际长度的一半。

2.在主函数main中输入一串字符串,并调用invert函数将此字符串反序,然后再将反序后

的字符串输出。

3.编写一函数将字符串s中的字符c删除

void charDel(char *s,char c);

解题思路:假设s为“aebefe\0”串中的e字符删除,判断当前s指针是否指向e字符,若指向e字符,则将e字符后面的befe\0字符向前移动一位,然后移动s指针,重复这一过程。

4.编写函数void replace(char *s,char c1,char c2)实现将s所指向的字符串中所有字符c1用

c2替换,字符串,字符c1和c2均在主函数中输入,将原始字符串和替换后的字符串显示在屏幕上。

解题思路:如果当前s指针指向的是c1字符,则把c2赋值给s指针所指向的地址空间,然后移动指针s,重复上述过程。

参考代码:

#include "stdio.h"

#include "string.h"

void replace(char *s,char c1,char c2);

void charDel(char *s,char c);

void invert(char *s);

int main()

{

char str[]="acbd";

invert(str);

puts(str);

}

void invert(char *s)

{

int strLenth;

char *i,*j,*mid,temp;//j和i所指向字符是相互交换的字符

strLenth=strlen(s);

mid=s+strLenth/2;//交换的次数应为字符串总长度除以2

j=s+strLenth-1;//令j指向字符串的末尾,\0字符的前一个字符

for(i=s;i

{

temp=*i;*i=*j;*j=temp;//交换对应的字符

j--;//字符串末尾指向前移

}

}

void charDel(char *s,char c)

{

char *p,*q;

while(*s!='\0')

{

if(*s==c)

{

p=s;

q=s+1;

while(*p++=*q++);//要删除的字符后面的字符串整体向前移动一位,也可以用下面的这段代码

/*while(*p!='\0')

{

*p=*q;

p++;

q++;

}

*q='\0';*/

}

s++;

}

}

void replace(char *s,char c1,char c2)

{

while(*s!='\0')

{

if(*s==c1)

{

*s=c2;

s++;

}

}

}

Python 实验8 函数1

实验8 函数(一)实验目的: 1、理解自定义函数过程的定义与调用方法; 2、掌握自定义函数的定义与调用方法; 3、理解函数中的参数的作用; 实验内容: 1、编写一函数Fabonacci(n),其中参数n代表第n 次的迭代。While循环 def fib(n): if n==1 or n==2: return 1 a=1 b=1 i=2 while True: c=a+b a=b b=c i+=1 #第i次迭代,也就就是第i个数 if i==n: return c break def main(): n=input("Enter a number of generation:") print fib(n) main() 或者用for循环 def fib(n): a=1 b=1 c=0 if n==1 or n==2: return 1 else: for i in range(3,n+1): c=a+b a=b b=c return c def main(): n=input("enter n:") print fib(n) main() 2、编写一函数Prime(n),对于已知正整数n,判断该数就是否为素数,如果就是素数,返回True,否则返回 False。 def prime(n): if n<2: return False a=0 for i in range(1,n+1): if n%i==0: a+=1 if a>2: return False else: return True def main(): n=input("Enter a number:") print prime(n) main() Or: def prime(n): if n<2: return False if n==2: return True for i in range(2,n): if n%i==0: return False return True def main(): n=input("Enter a number:") print prime(n) main()

浙师大 C语言 实验10函数2+答案

上机实验十函数与程序结构 学号姓名 一.目的要求 1.掌握函数声明、定义和调用的基本方法 2.掌握用递归函数解决问题的方法。 3.掌握局部变量与全局变量的作用域区别 4.掌握数组作为函数参数的基本方法。 二.实验内容 【实验题1】 分析如下: Line 2中的变量k是_全局_变量;而Line 10中的k是__局部_变量。程序输出结果是k=1,k=1,k=1 。 如果将第10行改为“static int k=1;变量,程序输出结果是k=1,k=2,k=1 。 如果将第10行改为“k=1; ”,该k变量,程序输出结果是k=1,k=1,k=2 。 如果将第10行改为空语句“; ”后,,程序输出结果是k=1,k=2,k=3 。 【实验题2】程序填空:输入一个整数n (1≤n≤10),再输入n个整数,将它们按升序排列后输出。 程序分析_选择法: (1)由于n最大是10,需要定义一个长度为10的整型数组a; (2)整个排序只需要确定前n-1个元素(a[0] ~a[n-2]),最后一个元素a[n-1]无需另外处理; (3)在确定a[i](i=0,1,…,n-2)时,先将a[i]本身看成最小,即令k=i, 并将a[k]与后面的元素a[j](j=i+1, i+2, …, n-1)一一比较, 如果a[j]< a[k],则更新k的值:k =j。找出对应于下标i的最小元素a[k]后,交换a[i]与a[k]。(4)上述排序算法的代码:

运行程序,输入n: 5,输入5个整数:23 -9 14 0 -3,显示结果为: 如果是按从大到小的降序排列,语句行Line 13 应改为:if(a[k]> a[j] ) k=j; [思考题]程序填空: 将上述的程序用函数调用的方式去实现。定义一个sort()函数来实现数组的排序;在main()函数中调用sort()函数来实现数组的排序,并将结果输出。

实验2:函数的应用

实验项目:函数的应用 实验目的: (1)掌握函数的定义和调用方法 (2)练习重载函数的使用 (3)练习使用系统函数 (4)使用debug调试功能,使用step into追踪到函数内部。 实验任务: 1.编写重载函数MAX1可分别求取两个整数,三个整数,两个双精度,三个双精度数的最大值。 2.用递归的方法编写函数求Fibonacci级数,观察递归调用的过程。 实验步骤: 1.分别编写四个同名的函数max1,实现函数重载,在main()中测试函数功能。 int max1(int x, int y) { return (x>y?x:y); } int max1(int x, int y, int z) { int temp1=max1(x,y); return (y>z?y:z); } double max1(double x, double y) { return (x>y?x:y); } double max1(double x, double y, double z) { double temp1=max1(x,y); return (y>z?y:z); } void main() { int x1, x2; double d1, d2; x1 = max1(5,6); x2 = max1(2,3,4); d1 = max1(2.1, 5.6); d2 = max1(12.3, 3.4, 7.8); cout << "x1=" <=1000) {printf("please enter the num again! (num>=100&&num<1000) \n"); scanf("%d",&num);} if(fun(num)==1) printf(" yes \n"); else printf(" no \n");} 编写函数ss(n), 判断n是否为素数,是返回1,否返回0。编写main函数,输入一个数num,调用ss(num)函数,并输出函数的返回值。 #include "stdio.h" int ss(int n) {int i; for(i=2;i=n) return(1); else return(0);} main() { int num; scanf("%d",&num); if(ss(num)==1) printf(" yes \n"); else printf(" no \n");} 编写一个函数fun(n),计算n!,并编写main函数测试,在main函数中输入num,调用fun(num),输出计算的结果。 #include "stdio.h" long fun(int n) {long s=1; int i; for(i=1;i<=n;i++) s=s*i; return(s);}

实验四 MATLAB程序设计

实验四 MATLAB 程序设计 1.实验目的 (1)熟练掌握MATLAB 的程序流程控制结构。 (2)掌握M 文件的结构,M 函数文件编写、使用。 (3)熟练掌握函数调用和参数传递。 2.实验仪器 (1)Matlab6.5应用软件安装版 一套 (3)PC 机 一台 3. 实验原理 依据MA TLAB 的编程的原理,编写M 函数文件,调用M 函数文件,完成曲线绘制。 4. 实验步骤 (1)利用for 、while 控制语句和sum 指令求和。 (2)使用MA TLAB 函数文件绘图。 (3)利用置换指令绘制脉冲响应曲线. (4)利用feval 指令实现指定的函数。 5. 实验报告内容(选做其中两题) (1)分别用for 和while 循环语句计算∑==630i i 2 K 的程序,再写出一种避免循环的计算程序。 (提示:可考虑利用MA TLAB 的sum (X,n )函数,实现沿数组X 的第n 维求和。)保存为M 文件. (2)将课本例4-8子函数编程及调用演示,三个子图上的圆和多边形绘制在同一坐标系中。并保存为M 文件。保存输出结果图。 (3)利用置换指令subs(X,new),例4-18中的脉冲响应在t=[0,18]的曲线。并保存为M 文件。保存输出结果图。 (4)试利用feval ()指令计算F(x)+F 2(x),其中F 可取‘sin ’、‘cos ’。(提示:先编写以个M 函数function y=trif(F,x)实现F(x)+F 2(x)的计算,在编写调用函数完成F 为‘sin ’、‘cos ’的计算),并保存为M 文件。(指定完成sin(pi/2)+sin(pi/2)^2; cos(pi/3)+cos(pi/3)^2)

C语言程序设计实验报告(实验大纲+过程)之欧阳家百创编

《C程序设计》实验教学大纲 欧阳家百(2021.03.07) 一、适用范围 大纲适用信息管理专业本科教学使用。 二、课程名称 C程序设计 三、学时数与学分 总学时:90 总学分: 4 实验学时:28 实验学分:1 四、教学目的和基本要求 目的:通过C程序设计实验,培养学生对学习程序设计的兴趣,加深对讲授内容的理解,尤其是通过上机来掌握语法规则,使学生全面了解C 语言的特点,熟练掌握C 语言程序设计的基本方法和编程技巧。 基本要求:了解和熟悉C语言程序开发的环境;学会上机调试程序,善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行,达到实验知识和理论知识的融会贯通。上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序、直至运行结果正确为止,上机结束后,应整理出实验报告。 五、实验项目与学时分配

注:带*的实验项目为选做实验项目 六、教材、讲义及参考书 《C程序设计题解与上机指导》谭浩强主编清华大学出版社 七、实验成绩评定办法 实验成绩=平时实验表现+实验报告。实验成绩占总成绩的20%。 实验成绩以等级形式给出,评定等级分优、良、中、及格、不及格五类。 1、平时考核:上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序、直至运行结果正确为止。在实验中,教师可根据学生编程操作能力、观察和分析及运用知识能力、程序编制正确性以及学生的课堂纪律、实验态度、保持实验室卫生等方面的表现进行综合考核。 2、实验报告:学生实验后应按时完成实验报告。 八、实验教学大纲说明 本大纲共安排28学时的实验,其中带*号实验项目为选做实验项目,实际课时为18学时。实验项目多为设计性实验项目,每

实验二 函数的应用

实验二函数的应用 一、实验目的 1、掌握函数的定义和调用方法。 2、掌握函数实参与形参的对应关系。 3、掌握函数嵌套调用和递归调用的方法。 二、实验内容与步骤 1、写一个判断素数的函数,在主函数中输入一个整数,输出是否是素数的信息。 2、编写重载函数Max可分别求取两个整数,三个整数,两个双精度数,三个双精度数的最大值。 3、递归函数与非递归函数。 编写一个函数,求从n个不同的数中取r个数的所有选择的个数。其个数值为:n! C r n= r!*(n-r)! 其中:n!=n*(n-1)*(n-2)* (1) 要求: (1)分别用递归和非递归两种方式完成程序设计; (2)主程序中设计一个循环,不断从输入接收n和r的值,计算结果并输出,当用户输入0 0时,程序结束; (3)能检查输入数据的合法性,要求n>=1并且n>=r; (4)注意整数能存放的数据范围有限,如何解决? 提示: (1)可以用double数据类型来存放函数的计算结果。 (2)递归结束条件: 如果r=0,则C(n,r)=1; 如果r=1, 则C(n,r)=n。 测试数据: 输入:5 3 输出:10 输入:10 20 输出:Iput Invalid1 输出:50 3 输出:19600 输入:0 0 程序结束 思考问题:

(1)对各种数据类型的字长是否有了新的认识? (2)递归函数的书写要点是什么? (3)递归和非递归函数各有哪些好处? 4、求两个整数的最大公约数和最小公倍数,用一个函数求最大公约数,用另一个函 数求最小公倍数。 要求: 两个整数在主函数中输入,并传送给函数1,求出的最大公约数返回主函数,然后再和两个整数一起作为实参传递给函数2,以求出最小公倍数,再返回到主函数输出最大公约数和最小公倍数。

实验6函数习题及答案

实验6 函数 班级:学号: 姓名:日期: 一、实验目的 (1)掌握定义函数的方法; (2)掌握函数实参与形参的对应关系,以及“值传递”的方式; (3)掌握函数的嵌套调用和递归调用的方法; (4)掌握全局变量和局部变量、动态变量和静态变量的概念和使用方法; (5)学习对多文件的程序编译和运行。 二、实验内容 1.阅读下面程序,写出程序运行结果,并且上机进行验证。 (1)a1.cpp 变量的虚实耦合,实现的是值传递,是单向传递 #include "stdio.h" int swap(int a,int b) { int c,s; c=a; a=b; b=c; s=a+b; return s; } void main() { int a,b,s; a=3;b=4; s=swap(a,b); printf("a=%d b=%d s=%d\n",a,b,s); } (2)a2.cpp

将十进制数26的各位数字相乘 #include "stdio.h" int fun(int num) { int k=1; do { k*=num %10; / num/=10; }while(num); return(k); } void main() { int n=26; printf("%d\n",fun(n)); } (3)a3.cpp 变量的作用域,当在函数内定义了与全局变量同名的局部变量时,全局变量被屏蔽#include "stdio.h" int a=3,b=5,c; void f(int b) { c=a+b; printf("%d %d %d\n",a,b,c); } void main() { int a=8; f(3); printf("%d %d %d\n",a,b,c); } (4)a4.cpp 递归,将十进制11转换为二进制 #include "stdio.h" void dtob(int n) { int i;

实验4-1 函数的应用的答案

实验4 函数的应用 【实验目的】 1掌握函数声明、定义和调用的方法; 2了解函数调用的实参与形参的传递,以及参数默认值的设置。 3掌握重载函数的实现方法。 4理解递归和嵌套函数的概念、定义与调用。 【实验内容】 ⒈分别输入整数半径和实数半径,使用函数重载计算圆的面积。 #include #define PI 3.14 int area(int); float area(float); void main() { int r1; cout<<"Input a integer r="; cin>>r1; cout<<"area="<

实验十函数应用答案

实验十函数应用 一?实验目的 1.掌握函数的定义和调用; 2.理解形参和实参的使用和传值调用; 3.理解函数声明的使用; 4.掌握函数的嵌套调用; 5.了解函数的嵌套与递归调用,掌握递归函数的编写规律; 6.了解数组元素、数组名作函数参数。 二?实验学时数 2学时 三?实验步骤 (一)阅读程序 1.#include 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 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 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 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); }

实验八 函数含答案

实验八函数 【目的与要求】 1.掌握C语言函数的定义方法、函数的声明及函数的调用方法。 2.了解主调函数和被调函数之间的参数传递方式。 【上机内容】 【一般示例】 【例1】将打印18个"*"组成星形线定义为一个返回值和形参列表都为空的函数,通过主函数调用它。 #include void Star(void) //画星形线。函数没有返回值,形参列表也为空 { int i; for(i=1;i<=18;i++) printf("*"); //18个"*"组成星形线 printf("\n"); return ; //返回值类型为void,return后不带表达式,此句可省略 } int main() { Star( ); //单独的函数调用语句,实参表为空,但必须保留括号 printf("I love C language!\n"); Star( ); return 0; } 【例2】调用prime 函数以每行5个素数的格式输出100到200之间的所有素数。

#include #include int prime(int m) //判断素数函数定义 { int i,k,f=1 ; //函数内定义3个变量 if (m==1) //形参若为1 f=0 ; //形参若为1,非素数 k=(int)sqrt(m); for (i=2; i<=k;i++) if (m%i==0) //m被某除数整除 f=0 ; //则不是素数 return f ; //用return语句返回 } //函数体结束 int main( ) { int i,count=0; for (i=101;i<200;i=i+2) //用i作为循环控制变量,从101开始,步长为2 if (prime(i)) //对每一个i,调用prime函数判断它是否为素数 { printf("%5d",i); //如果是素数,输出该素数i count++ ; //素数个数加1 if (count%5==0 ) //每输出5个素数换一行 printf("\n"); }

matlab实验四函数编写与程序设计

实验四:函数编写与程序设计 一、实验目的1 . 掌握M文件的创建。 2.掌握函数的编写规则。 3.掌握函数的调用。 4 . 掌握基本的输入输出函数以及显示函数的用法。 5.会用Matlab程序设计实现一些工程算法问题。 二、实验内容 1 . 设计程序,完成两位数的加、减、乘、除四则运算,即产生两个两位随机整数,再输入一个运算符号,做相应的运算,显示相应的结果,并要求结果显示类似于“a=x+y=34”。a=input('请输入一个数: ')

b=input('请输入一个数:'); fuhao=input('请输入一个运算符号(+-*/):','s'); switch fuhao case {'+'} he=a+b; disp(['和=',num2str(a),'+',num2str(b),'=',num2str(he)]); case {'-'} he=a-b; disp(['减=',num2str(a),'-',num2str(b),'=',num2str(he)]) case {'*'} he=a*b; disp(['乘=',num2str(a),'*',num2str(b),'=',num2str(he)]) case {'/'} he=a/b; disp(['除=',num2str(a),'/',num2str(b),'=',num2str(he)]) otherwise disp('请输入正确的符号'); end 2 . 求下列分段函数的值 2 2 2 6,0 56, 1, y χχχχ χχχχχ χχ ?+-<≠ ? =-+≤≠≠? ?-- ? 且-3 0<10,2且3 其他

C语言:函数的应用实验报告

课程名称:结构化程序设计与C语言开课实验室:年月日 一、实验目的 用C语言编写和调试函数的程序。从而对函数的定义、调用、全局变量的灵活运用有比较深入的了解。 二、内容及结果 1、程序一素数函数 1)程序要求:写一个判断是否是素数的函数,在主函数输入一个整数,调用它后输出结果。2)代码: #include #include int prime(int n) { int i,k; k=sqrt(n); for(i=2;i<=k;i++) if(n%i==0) break; if(i<=k) return 0; else

return 1; } int main() { int prime(int n); int n; printf("Please enter n:"); scanf("%d\n",&n); if(prime(n)==1) printf("%d is a prime number",int(n)); else printf("%d is not a prime number",int(n)); } 3)运行截图: 2、程序二用递归方法求n阶勒让德多项式的值 1)程序要求: 递归公式为: 当n=0,= ) (x P n 1 当n=1, = ) (x P n x; 当n>=1, = ) (x P n((2n-1)x-P n-1(x)-(n-1)P n-2 )x))/n 2)代码: #include

#include int p(int n,int x); void main() { int n,x; scanf("%d",&x); for(n=0;n<=10;n++) printf("p(%d,%d)=%d\n",n,x,p(n,x)); } int p(int n,int x) { if(n==0) return 1; else if(n==1) return x; else return((2*n-1)*x-p(n-1,x)-(n-1)*p(n-2,x))/n; } 3)运行截图:

实验七 用函数实现模块化程序设计

河南工业大学C语言实验报告 专业班级:生物11级1班学号:201112910118姓名:l刘路路指导老师:朱红莉评分: 实验题目:用函数实现模块化程序设计 实验目的:熟练掌握函数的定义、调用、声明 实验内容:P218-219 习题1、2、4 实验步骤:(具体程序及运行结果) 7.1写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。 #include int main() {int hcf(int,int); int lcd(int,int,int); int u,v,h,l; scanf("%d,%d",&u,&v); h=hcf(u,v); printf("H.C.F=%d\n",h); l=lcd(u,v,h); printf("L.C.D=%d\n",l); return 0; } int hcf(int u,int v) {int t,r; if (v>u) {t=u;u=v;v=t;} while ((r=u%v)!=0) {u=v; v=r;} return(v); } int lcd(int u,int v,int h) { return(u*v/h); } 7.3写一个判素数的函数,在主函数输入一个整数,输出是否为素数的信息。 #include int main() {int prime(int); int n; printf("input an integer:"); scanf("%d",&n);

if (prime(n)) printf("%d is a prime.\n",n); else printf("%d is not a prime.\n",n); return 0; } int prime(int n) {int flag=1,i; for (i=2;i #define N 3 int array[N][N]; int main() { void convert(int array[][3]); int i,j; printf("input array:\n"); for (i=0;i

大学生C语言程序设计(第四版 谭洪强)实验7 答案

实验七 参考答案(参考答案) (1) (sy7-1.c )请编写函数fun ,它的功能是:计算并输出n (包括n )以内能被5 或9 整除的所有自然数的倒数之和。例如,若主函数从键盘给n 输入20后,则输出为s=0.583333。 注意:n 的值要求不大于100。 算法分析: 使用for 循环i ,遍历n 包含n 以内的所有整数,逐一判断每个i ,是否满足条件(能被5 或9 整除),如果满足,则把它的倒数累加到累加器里。注意:i 的倒数要表示成:1.0/i; 参考子函数如下: double fun(int n) { double sum=0; int i; for(i=5;i<=n;i++) if(i%5==0||i%9==0) sum=sum+1.0/i; return sum; } (2) (sy7-2.c ) 请编写函数fun ,其功能是:根据以下公式计算s ,并计算结果作为函数值返回,n 通过形参传入。 n s ?++++?++++++=321132112111 例如:若n 的值为11时,函数的值为1.83333 算法分析: 等式右边从第二项(i=2)开始,其分母等于前一项的分母加上i ;一共有n 项;求出每项的分母,然后把每项进行累加。 参考子函数如下: float fun(int n) { float sum=1; //sum 中已经累加了第一项的值 int i,m=1; //m 表示每项的分母; for(i=2;i<=n;i++) { m=m+i; sum=sum+1.0/m; } return sum; }

(3) (sy7-3.c)请编写函数fun,其功能是:将两个两位数的正整数a、b 合并形成一个整数放在c 中。合并的方式是:将 a 数的十位和个位依次放在c 数的十位和千位上,b 数的十位和个位数依次放在c 数的个位和百位上。 例如,当a=45,b=12,调用该函数后,c=5241。 算法分析: 对一个两位数n,它的各位可以通过n%10求的,它的十位数可以通过n/10求的;所以分别用上述方法求的a和b的个位和十位,同时按照要求累加到c里。 参考子函数如下: long fun(int a, int b) { long c=0; c=a%10*1000+a/10*10+b/10+b%10*100; return c; } (4) (sy7-4.c)请编一个函数fun,函数的功能是使实型数保留2位小数,并对第三位进行四舍五入(规定实型数为正数)。例如:实型数为1234.567, 则函数返回1234.570000;实型数为1234.564, 则函数返回1234.560000。 算法分析: 先把这个数乘以100,然后再加0.5(实现四舍五入),再把这个数存放到一个长整型变量中,目的是把小数点后的小数去除,最后把这个数转换成浮点型数除以100,即可得出所的结果。 参考自定义函数如下: float fun ( float h ) { long w ; w = h * 100 + 0.5 ; return (float) w / 100 ; } (5) (sy7-5.c)请编写一个函数unsigned fun ( unsigned w ),w 是一个大于10的无符号整数,若w 是n (n ≥2)位的整数,函数求出w的低n-1位的数作为函数值返回。 例如:w 值为5923,则函数返回923;w 值为923 则函数返回23。 算法分析: 首先应求出w的位数,有一位,i就乘以10(如果有4位,i就等于10000);然后通过求模运算舍弃最高位; 参考子函数如下: unsigned fun ( unsigned w ) { int i=1;//i用来存放整数的位数

C++语言程序设计实验答案-函数的应用

C++语言程序设计实验答案-函数的应用

实验03函数的应用(2学时) (第3章函数) 一、实验目的 (1) 掌握函数的定义和调用方法。 (2) 练习重载函数的使用。 (3) 练习使用系统函数。 (4) 学习使用Visual Studio 2010的调试功能,使用“逐语句”追踪到函数内部。 二、实验任务 3_1(习题3-8)编写一个函数把华氏温度转换为摄氏温度,转换公式为:C=(F-32)*5/9。 3_2 编写重载函数Max1可分别求取2个整数、3个整数、2个双精度数、3个双精度数的最大值。 3_3 使用系统函数pow(x, y)计算x y的值,注意包含头文件cmath。 3_4(习题3-13)用递归的方法编写函数求Fibonacci级数,观察递归调用的过程。

三、实验步骤 1.(编程,习题3-8)把华氏温度转换为摄氏温度。 编写函数float Convert(float TempFer),参数和返回值都为float类型,实现算法 C=(F-32)*5/9,在main()函数中实现输入、输出。程序名:lab3_1.cpp。 ★程序及运行结果:(注意:定义的函数头是float Convert(float TempFer)) //lab3_1(习题3-8) #include using namespace std; float Convert(float TempFer); void main(){ float f; cout<<"输入一个华氏温度值:"; cin>>f; cout<<"华氏温度"<

度的值是"< using namespace std; int Max1(int a,i n t b){

实验四 函数编程练习

2.2.4 实验4:函数编程练习 1. 给小学生出加法考试题 编写一个程序,给学生出一道加法运算题,然后判断学生输入的答案对错与否,按下列要求以循序渐进的方式编程。 程序1 通过输入两个加数给学生出一道加法运算题,如果输入答案正确,则显示“Right!”,否则显示“Not correct! Try again!”,程序结束。 程序2 通过输入两个加数给学生出一道加法运算题,如果输入答案正确,则显示“Right!”,否则显示“Not correct! Try again!”,直到做对为止。 程序3 通过输入两个加数给学生出一道加法运算题,如果输入答案正确,则显示“Right!”,否则提示重做,显示“Not correct! Try again!”,最多给三次机会,如果三次仍未做对,则显示“Not correct! You have tried three times! Test over!”,程序结束。 程序4 连续做10道题,通过计算机随机产生两个1~10之间的加数给学生出一道加法运算题,如果输入答案正确,则显示“Right!”,否则显示“Not correct!”,不给机会重做,10道题做完后,按每题10分统计总得分,然后打印出总分和做错的题数。 程序5 通过计算机随机产生10道四则运算题,两个操作数为1~10之间的随机数,运算类型为随机产生的加、减、乘、整除中的任意一种,如果输入答案正确,则显示“Right!”,否则显示“Not correct!”,不给机会重做,10道题做完后,按每题10分统计总得分,然后打印出总分和做错题数。 【思考题】如果要求将整数之间的四则运算题改为实数之间的四则运算题,那么程序该如何修改呢?请读者修改程序,并上机测试程序运行结果。 2.掷骰子游戏 编写程序模拟掷骰子游戏。已知掷骰子游戏的游戏规则为:每个骰子有6面,这些面包含1、2、3、4、5、6个点,投两枚骰子之后,计算点数之和。如果第一次投的点数和为7或11,则游戏者获胜;如果第一次投的点数和为2、3或12,则游戏者输;如果第一次投的点数和为4、5、6、8、9或10,则将这个和作为游戏者获胜需要掷出的点数,继续投骰子,直到赚到该点数时算是游戏者获胜。如果投掷7次仍未赚到该点数,则游戏者输。 【思考题】将游戏规则改为:计算机想一个数作为一个骰子掷出的点数(在用户输入数据之前不显示该点数),用户从键盘输入一个数作为另一个骰子掷出的点数,再计算两点数之和。其余规则相同,然后请读者重新编写该程序。

相关文档
相关文档 最新文档