C实验1-参考答案

上传人:xt****7 文档编号:140142945 上传时间:2022-08-23 格式:DOC 页数:4 大小:38.50KB
收藏 版权申诉 举报 下载
C实验1-参考答案_第1页
第1页 / 共4页
C实验1-参考答案_第2页
第2页 / 共4页
C实验1-参考答案_第3页
第3页 / 共4页
资源描述:

《C实验1-参考答案》由会员分享,可在线阅读,更多相关《C实验1-参考答案(4页珍藏版)》请在装配图网上搜索。

1、完成情况成绩等级评阅人评阅日期1234567实验1、函数一、实验目的1、进一步掌握函数的定义、调用、返回值以及值传递、地址传递的不同;2、理解并掌握函数的嵌套调用和函数的递归调用;3、了解全局变量和局部变量、动态变量、静态变量的概念和使用方法;4、熟悉进入和跳出函数的调试方法二、实验内容1、程序填空题(请填写适当的符号或语句,使程序实现其功能)下列程序的功能为:通过调用一个判断素数的函数isprime(),验证歌德巴赫猜想:即任何大于2的偶数均可表示为两个素数之和。例如:4=2+2(特例,仅此一个),6=3+3,8=3+5,。程序要求输入任一偶数,输出6到该数范围内的各个满足条件的组合。#in

2、clude int isprime(int m) 答案:【1】 i=m 【2】isprime(a) 【3】isprime(b) 【4】continue int i ;for(i=2;m%i!=0;i+); return ( 【1】 ); main() int n,x,a,b; scanf(%d,&x);for(n=6;n=x ;n+=2) for(a=3;a=n/2;a+=2)if( 【2】 ) b=n-a; if( 【3】 ) printf(“%d=%d+%d”,n,a,b); 【4】 ; /退出a循环,判别下一个n的组合 2、程序调试题(纠正程序中存在错误,使程序实现其功能)函数fac()

3、是用户自定义的一个用递归方法求任意整数阶乘的函数,在main函数中通过调用该函数求出一个三位整数n,其每位数字的阶乘之和正好等于该数本身,即x!+y!+z!=n。例如145=1!+4!+5!。程序中存在错误,请调试程序。#includeint fac(int m)/1int f;/2if(m=0|m=1)/3f=1;/4出错行号及正确答案:/6 f=m*fac(m-1);/13 i=fac(a)+fac(b)+fac(c)else/5f=f*fac(m-1); /6 return f; /7main()int i,a,b,c;/8for(i=100;i=999;i+)/9a = i / 100

4、;/10b = i % 100 / 10;/11c = i % 10;/12if(i=fac(a)+fac(b)+fac(c)/13printf(%d, i);/143、编程题:编写程序:根据下面的要求,按所给的公式计算并输出结果。要求:分别编写一个求阶乘n!的函数fac(n)、一个求组合数函数cnm(n,m); 编写主函数,由键盘输入n和m,通过嵌套调用中的函数完成计算。输入n和m要给出提示,并检查n和m的合理性,不合理的输入应输出错误信息,并不再进行计算。阶乘函数fac(n):int fac(int n) int f; if(n=0|n=1) f=1; else f=n*fac(n-1);

5、 return f;组合数函数cnm(n,m)::int cnm(int n,int m) int fac(int n); return (fac(n)/(fac(n-m)*fac(m);主函数:#include main() int cnm(int n,int m); int n,m; printf(Input number:n mn); scanf(%d,%d,&n,&m); if(nm|n0|m0) printf(输入错误n); else printf(reslut %dn,cnm(n,m);4、编程题: 用递归方法编写求Fibonacci数列第n项系数的函数fib(n),并且在main

6、函数中调用该函数输出Fibonacci数列从第1项到第n项的系数,每行输出5项,n的值由用户从键盘输入。主函数:#includemain() int fib(int n); int n,i; printf(要输出几项:(n大于0)); scanf(%d,&n); for(i=1;i=n;i+) printf(%12d,fib(i); if(i%5=0) printf(n); printf(n);fib(n)函数:int fib(int n) int f; if(n=1|n=2) f=1; else f=fib(n-1)+fib(n-2); return f; 5、编程题: 编程实现以下功能:在

7、主函数中,由键盘输入10个整数存放在一维数组a中,并调用选择算法函数selectedsort对数组元素进行降序排列。其中的排序算法函数selectedsort调用findmax函数查找数组局部的最大值的下标位置。自定义函数的首部及功能如下: int findmax(int arr,int start,int end):该函数用于查找数组中从start到end之间的数组元素中最大值所在的下标位置;void selectedsort(int arr ,int n):该函数应用选择算法对n个数组元素进行降序排列。#include int findMax(int arr,int start,int e

8、nd)int k,i;k=start; for(i=start+1;iarrk)k=i;return k; void selectedsort(int arr,int n)int i,j,t;for(i=0;in-1;i+)j=findMax(arr,i,n-1); if(i!=j) t=arri,arri=arrj,arrj=t; main() int a10,i; for(i=0;i10;i+) printf(NO %d :,i+1); scanf(%d,&ai); selectedsort(a,10); for(i=0;i10;i+) printf(%d ,ai); printf(n);

9、6、分析以下程序的运行结果,然后运行程序验证自己的分析是否正确。#include 分析的结果:1:a=1,b=12:a=1,b=23:a=1,b=3运行的结果:void f(int c) int a=0; static int b=0; a+; b+; printf(%d: a=%d, b=%dn, c, a, b);main() int i; for (i=1; i=3; i+) f(i);7、分析以下程序的运行结果,然后运行程序验证自己的分析是否正确。#include int a=10,b=20; 分析的结果:21,3312,24运行的结果:main( ) int a=1,c=0; c=a+b;printf(%d,c);a+;b+;mysum(a,b); int a=6,b=6; c=a+b; printf(%d,c);printf(%dn,a+b); int mysum(int x,int y)a+;b+;printf(%dn,a+b);return x+y;本次实验小结(简介本次内容完成的情况,存在哪些问题,什么原因)

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!