- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言功能
实验十 函数
一、函数定义及调用
1、 上机调试下面的程序,记录系统给出的出错信息,并指出出错原因。
main()
{
int x,y; //这在定义什么东西?
printf(%d\n,sum(x+y)); //sum的调用形式正确吗?
int sum(a,b) //函数可以嵌套定义吗?
{
int a,b; //形式参数是这样声明的吗?
return(a+b);
}
}
2、调试下列程序,使之具有如下功能:fun函数是一个判断整数是否为素数的函数,使用该函数求1000以内的素数平均值。写出调试过程。#include math.hmain( ){ int a=0,k; /* a保存素数之和 */float av; /* av保存1000以内素数的平均值 */for(k=2;k=1000;k++)if(fun(k)) /* 判断k是否为素数 */a+=k;av=a/1000;printf(av=%f\n,av);}fun(int n) /* 判断输入的整数是否为素数 */{ int i,y=0;for(i=2;in;i++)if(n%i==0) y=1;else y=0;return y;}
3、编写一个求水仙花数的函数,求3位正整数的全部水仙花数中的次大值。所谓水仙花数是指三位整数的各位上的数字的立方和等于该整数本身。例如:153就是一个水仙花数:153 = 13 + 53 + 33
4、编写一个函数,对输入的整数k输出它的全部素数因子。例如:当k=126时,素数因子为:2,3,3,7。要求按如下格式输出:126 = 2 * 3 * 3 * 7。
5、编写并调试一个求(n 为整数)的递归函数,希望能在程序运行过程中动态地显示递归函数被调用的轨迹。
*6、 任意输入一个4位自然数,调用函数输出该自然数的各位数字组成的最大数。
*7、某人购买的体育彩票猜中了4个号码,这4个号码按照从大到小的顺序组成一个数字可被11整除,将其颠倒过来也可被11整除,编写函数求符合这样条件的4个号码。关于体育彩票号码的规则见实验四;可被11整除颠倒过来也可被11整除的正整数例如341,它可被11整除,颠倒过来143也可被11整除。
三、 分析讨论
1、 针对以上实验内容写出相应的参数传递过程并分析结果。
2、 讨论参数的传递的几种形式。
可能的修改程序:
#include stdio.h
int sum(int a, int b) //函数可以嵌套定义吗?
{
return(a+b);
}
main()
{
int x, y;
//x = 1;
//y = 2;
scanf(%d,%d,x,y);
printf(%d\n, sum(x, y));
}
二、 数组作为函数参数
1、写一函数,是给定的一个二位数组(4×4)转置,即行列互换。
2、写两个函数,分别求两个正数的最大公约数和最小公倍数,用主函数调用这两个函数并输出结果。两个正数由键盘输入。
3、写一函数,用“起泡法”对输入的10个字符按由小到大顺序排序。
源程序如下:
/*起泡法排序*/
#define N 10
char str[N];
main()
{
int i,flag;
for (flag=1; flag = =1;)
{
printf(“\n输入字符串,长度为10:\n”);
scanf(“%s”,str);
if (strlen(str)N)
printf(“超过长度,请重输!”);
else
flag = 0;
}
sort(str);
printf(“\n排序结果:”):
for (i=0;iN;i++)
printf(“%c”,str[i]);
}
sort(str)
char str[N];
{
int i,j;
char t;
for (j=1;jN;j++)
for (i=0;(iN-j)(str[i]!=’\0’);i++)
if (str[i]str[i+1])
{
t=str[i]; str[i]=str[i+1]; str[i+1]=t;
}
}
4、编写一个程序,包括主函数和如下子函数。
(1) 输入10个无序的整数;
(2) 用起泡方法从大到小排序;
(3) 要求输入一个整数,用折半查找法找出该数,若存在,在主函数中输出其所处的位置,否则,插入适当位置。
分析:input函数完成10个整数的录入。sort函数完成起泡法排序,search函数完成输入数的查找。
三、局部、全局、动态、静态四种变量的使用
1.验证程序输出结果
#include stdio.h
int i=10;
int main()
{
int i=1;
printf(“(1):%d\t”,i)
{
int i=2;
您可能关注的文档
最近下载
- 2025年常德科技职业技术学院单招职业技能考试题库(历年真题).docx VIP
- 孙永强《财务管理》武汉大学-第4章-财务战略与预算.ppt VIP
- 肝脏含脂肪病变的鉴别诊断.ppt VIP
- 常用降压药的分类和代表药及使用注意事项课件.pptx VIP
- 2026年湖南民族职业学院单招职业适应性考试题库最新.docx VIP
- 2026年邵阳职业技术学院单招职业适应性考试题库附答案.docx VIP
- 中国2型糖尿病防治指南解读试卷含答案.doc VIP
- 退役军人技能培训课件.pptx VIP
- 城镇污水处理厂剩余污泥微纳臭氧减量研究.doc VIP
- 2026年湖南九嶷职业技术学院单招职业适应性考试题库推荐.docx VIP
文档评论(0)