第五次课上课程序和习题参考程序.docx

上传人:b****4 文档编号:4879587 上传时间:2023-05-07 格式:DOCX 页数:15 大小:17.05KB
下载 相关 举报
第五次课上课程序和习题参考程序.docx_第1页
第1页 / 共15页
第五次课上课程序和习题参考程序.docx_第2页
第2页 / 共15页
第五次课上课程序和习题参考程序.docx_第3页
第3页 / 共15页
第五次课上课程序和习题参考程序.docx_第4页
第4页 / 共15页
第五次课上课程序和习题参考程序.docx_第5页
第5页 / 共15页
第五次课上课程序和习题参考程序.docx_第6页
第6页 / 共15页
第五次课上课程序和习题参考程序.docx_第7页
第7页 / 共15页
第五次课上课程序和习题参考程序.docx_第8页
第8页 / 共15页
第五次课上课程序和习题参考程序.docx_第9页
第9页 / 共15页
第五次课上课程序和习题参考程序.docx_第10页
第10页 / 共15页
第五次课上课程序和习题参考程序.docx_第11页
第11页 / 共15页
第五次课上课程序和习题参考程序.docx_第12页
第12页 / 共15页
第五次课上课程序和习题参考程序.docx_第13页
第13页 / 共15页
第五次课上课程序和习题参考程序.docx_第14页
第14页 / 共15页
第五次课上课程序和习题参考程序.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

第五次课上课程序和习题参考程序.docx

《第五次课上课程序和习题参考程序.docx》由会员分享,可在线阅读,更多相关《第五次课上课程序和习题参考程序.docx(15页珍藏版)》请在冰点文库上搜索。

第五次课上课程序和习题参考程序.docx

第五次课上课程序和习题参考程序

第五次课上课程序

请看书5.1~5.3小结,

1、弄清函数的定义、函数的调用、函数的原型声明及各自在程序中的位置,实参和形参的区别及位置,实参向形参单向值传递,函数的返回值只能由一个return返回,也只能返回一个

2、全局变量和局部变量的概念,位置,生存期和生存空间

3、auto(自动)变量、static(静态)变量存储区及使用

循环

例1:

1+2+3+……+n=?

#include

intmain(void)

{

inti,n,term,sum;

printf("Inputn:

");

scanf("%d",&n);

sum=0;

term=0;

for(i=1;i<=n;i++)/*循环控制变量i递增*/

{

term=term+1;/*项变化*/

sum=sum+term;/*累加*/

}

printf("1+2+3+...+%d=%d\n",n,sum);

return0;

}

例2、n!

=?

#include

intmain(void)

{

inti,n,term;

doublefac;

printf("Inputn:

");

scanf("%d",&n);

fac=1;

term=0;

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

{

term=term+1;

fac=fac*term;

}

printf(“%d!

=%.0f\n",n,fac);

return0;

}

例3、1!

+2!

+3!

+……+n!

=?

#include

intmain(void)

{

intterm,n,i;

doublesum;

printf("Inputn:

");

scanf("%d",&n);

sum=0;

term=1;

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

{

term=term*i;

sum=sum+term;

}

printf("1!

+2!

+...+%d!

=%.0f\n",n,sum);

return0;

}

例4:

输入一个正整数,判断是否是素数

#include

#include

intmain(void)

{

intnum,end,i,flag;/*设标志flag*/

printf("Inputaninteger:

");

scanf("%d",&num);

end=(int)sqrt(num);

flag=1;

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

{

if(num%i==0)

{

flag=0;

break;/*break终止当前层的循环,注意与continue区别*/

}

}

if(flag==1)

{

printf("%disaprime.\n",num);

}

else

{

printf("%disnotaprime.\n",num);

}

return0;

}

函数

例2改写1:

求n!

——专用功能独立为一个函数

#include

doublejiecheng(intn);/*函数原型声明*/

intmain(void)

{

intn;/*n,fac为main函数的局部变量*/

doublefac;

printf("Inputn:

");

scanf("%d",&n);

fac=jiecheng(n);/*函数调用,n为实际参数*/

printf("%d!

=%.0f\n",n,fac);

return0;

}

/*阶乘部分独立成为一个函数*/

doublejiecheng(intn1)/*函数定义,n1为形参,double为返回值类型*/

{

inti;/*i,term,fac1为阶乘函数的局部变量*/

intterm;

doublefac1;

fac1=1;

term=0;

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

{

term=term+1;

fac1=fac1*term;

}

returnfac1;

}

不同函数可以有同名的变量,因为它们是局部变量,只在自己函数中存在并使用,离开函数这些局部变量将消亡。

#include

doublejiecheng(intn);/*函数原型声明*/

intmain(void)

{

intn;/*n,fac为main函数的局部变量*/

doublefac;

printf("Inputn:

");

scanf("%d",&n);

fac=jiecheng(n);/*函数调用,n为实际参数*/

printf("%d!

=%.0f\n",n,fac);

return0;

}

doublejiecheng(intn)/*函数定义,n为形参局部变量,double为返回值类型*/

{

inti;/*i,term,fac为jiecheng函数内部变量,局部变量*/

intterm;

doublefac;

fac=1;

term=0;

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

{

term=term+1;

fac=fac*term;

}

returnfac;

}

例3改写1:

1!

+2!

+……+n!

=?

(连加和)

#include

doublejiecheng(intn);/*函数原型声明*/

intmain(void)

{

intn,i;

doubleterm,sum;

printf("Inputn:

");

scanf("%d",&n);

sum=0;

for(i=1;i<=n;i++)/*连加和*/

{

term=jiecheng(i);/*函数调用,i为实际参数*/

sum=sum+term;

}

printf("%d!

=%.0f\n",n,sum);

return0;

}

doublejiecheng(intn)/*函数定义,n1为形参局部变量,double为返回值类型*/

{

inti,term;

doublefac;

fac=1;

term=0;

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

{

term=term+1;

fac=fac*term;

}

returnfac;

}

例4改写1:

输入一个正整数,判断是否是素数

#include

#include

intprime(intnum);/*函原型数声明*/

intmain(void)

{

intnum;

printf("Inputaninteger:

");

scanf("%d",&num);

if(prime(num))/*函数调用*/

{

printf("%disaprime.\n",num);

}

else

{

printf("%disnotaprime.\n",num);

}

return0;

}

intprime(intnum)/*函数定义*/

{

intend,i,flag;

end=(int)sqrt(num);

flag=1;

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

{

if(num%i==0)

{

flag=0;

break;

}

}

returnflag;

}

全局变量

例5:

输入两个整数,按从大到小输出——全局变量

为三个数的排序作准备——重复程序段独立为函数

#include

intmain(void)

{

intaa,bb,temp;

printf("Inputaa,bb:

");

scanf("%d,%d",&aa,&bb);

if(aa

{

temp=aa;

aa=bb;

bb=temp;

}

printf("%5d%5d\n",aa,bb);

return0;

}

使用全局变量,但注意:

这只是一个演示,尽量不要这样用,因全局变量降低了程序的可移植性(原因是程序依赖外部变量)。

#include

voidexchange(void);

intaa,bb;/*全局变量*/

intmain(void)

{

printf("Inputaa,bb:

");

scanf("%d,%d",&aa,&bb);

exchange();

printf("%5d%5d\n",aa,bb);

return0;

}

voidexchange(void)

{

inttemp ;

if(aa

{

temp=aa;

aa=bb;

bb=temp;

}

}

由于实参→形参是单向值传递,即形参变化后的值不能传回给实参,加上一个函数只能通过一条return语句返回一个值(即使函数中有多条return语句,函数也只能从一条return语句返回),所以想通过调用函数得到多个返回值,上面使用了全局变量解决此问题,但因全局变量降低了程序的可移植性,所以要求使用以后学习的指针(指针即地址,即直接通过访问变量在内存中所占空间,修改空间里面的值),参考程序如下(此程序在指针中还会学)

#include

intmain(void)

{

intaa,bb;

printf("Inputaa,bb:

");

scanf("%d,%d",&aa,&bb);

exchange(&aa,&bb);

printf("%5d%5d\n",aa,bb);

return0;

}

voidexchange(int*aa,int*bb)

{

inttemp ;

if(aa

{

temp=*aa;

*aa=*bb;

*bb=temp;

}

}

static变量

例3改写3:

求1!

+2!

+。

+n!

=?

——static

#include

doublejiecheng(intn);

intmain(void)

{

intn,i;

doublefac,sum;

printf("Inputn:

");

scanf("%d",&n);

sum=0;

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

{

fac=jiecheng(i);

sum=sum+fac;

}

printf("%d!

=%.0f\n",n,sum);

return0;

}

doublejiecheng(intn1)

{

staticdoublefac1=1;/*静态变量,记忆功能*/

fac1=fac1*n1;

returnfac1;

}

作业参考程序

习题5-5

p2-211.c

#include

intmain(void)

{

inti,j,n;

printf("\nPleaseinputn:

");

scanf("%d",&n);

printf("\n");

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

{

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

{

printf("");

}

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

{

printf("#");

}

printf("\n");

}

for(i=n;i>=1;i--)

{

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

{

printf("");

}

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

{

printf("#");

}

printf("\n");

}

return0;

}

习题5-7

p7-741.c

#include

#include

intprime(intnum);

intmain(void)

{

intmm,nn,count,i;

printf("Inputthem,n:

");

scanf("%d,%d",&mm,&nn);

printf("Theresult:

\n");

count=0;

for(i=mm;1;i++)

{

if(prime(i))

{

count++;

printf("%d",i);

}

if(count==nn)

{

break;

}

}

printf("\n");

return0;

}

intprime(intnum)

{

intend,i,flag;

end=(int)sqrt(num);

flag=1;

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

{

if(num%i==0)

{

flag=0;

break;

}

}

returnflag;

}

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

当前位置:首页 > PPT模板 > 商务科技

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

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