实验3 函数和编译预处理
函数与编译预处理

函数与编译预处理一、函数的定义1、无参函数的定义形式类型标识符函数名()第一行:函数首部{声明部分语句 { }包含的:函数体}例1:void fun( ){printf(“Hello!\n”);}2、有参函数的定义形式类型标识符函数名(形式参数列表){声明部分语句}例2:int max(int x, int y){ int z;z = x > y ? x : y;return (z);}注:“类型标识符”是指函数值的类型。
若省略,默认为int。
二、函数的调用无参函数:函数名()有参函数:函数名(实际参数列表)例3:在main函数中调用fun和max函数void main( ){int m,n,t;scanf(“%d,%d”,&m,&n);t=max(m,n); /*调用max函数*/fun(); /*调用fun函数*/printf(“max number is %d\n”,t);}注:1、C语言程序由函数构成,其中有且仅有一个main函数,各函数书写的先后顺序任意。
2、函数的定义是相互独立的,不能在一个函数的内部定义另一个函数,即函数的定义不能嵌套。
3、程序从main函数开始执行,其他函数被调用时执行,调用完后回到主调函数,最后在main函数中结束整个程序。
三、函数的声明在主调函数中一般要对被调函数进行声明。
声明的作用是告知编译器被调函数的函数名、函数类型、参数个数和参数类型,方便进行语法检查。
声明的形式:类型标识符函数名(形式参数列表);即:函数首部加分号例如:void fun( );int max(int x, int y);其中参数名称可省略,如:int max(int , int );Turbo C在以下两种情况中,可省略函数声明:1、被调函数定义在主调函数前。
2、被调函数类型为int、char。
四、参数的传递1、形参是变量,但函数被调用时才被分配内存,调用完毕,所占内存将被释放。
C语言 函数与编译预处理

main() {
int i, m, s=0; for (i=1; i<6; i++)
{ m=mul( i ); s+=fact( m );
} printf(“%d\n”, s); }
函数的递归调用
函数的递归 函数自身
在调用函数的过程中,该函数又去调用 int f (int x)
补充:编写一个函数isprime(int a)用来判断自变 量a是否是素数,若是,返回数值1,否则返回数值0。
开始 输入a, flag=1 调用判断函数
算法思想: 只能被 1 和其本身整
除的数,称为素数
Y
N
是素数?
flag=1
返回
flag=0
查看源程序
补充:利用isprime函数,编程验证任意一个偶数可 以写成两个素数之和。
查看源程序
6.4 函数的嵌套与递归调用
函数的嵌套 在调用函数的过程中,又去调用另一个函数
main()
sub1()
sub2()
例6.6 计算 s = (1*1)!+(2*2)!+(3*3)!+...+(6*6)!
算法分析:n!可定义为一个函数fact( int n ) ( k*k)的运算也可以定义为一个函数mul( int k ) 计算s本身是一个循环程序
int n; scanf( “%d”, &n ); printf(“%d\n”,sum(n)); }
int sum ( int n ) {
int s=0; int k; for( k=1;k<=n; k++)
s= s + k; return s; }
函数与编译预处理实验报告

函数与编译预处理实验报告一、实验目的本次实验旨在通过编写程序,掌握函数与编译预处理的相关知识,了解函数的调用和返回机制以及编译预处理的作用。
二、实验环境操作系统:Windows 10开发工具:Code::Blocks 17.12编程语言:C语言三、实验内容1. 函数的定义和调用函数是C语言中的一个重要概念,它可以将一段代码封装成一个功能单元,方便代码重用和维护。
在本次实验中,我们需要掌握如何定义函数,并且了解函数的调用过程。
在C语言中,函数通常由以下几部分组成:返回类型函数名(参数列表){函数体;return 返回值;}其中,返回类型指定了函数返回值的类型;函数名是唯一标识符,用于调用该函数;参数列表指定了该函数需要传入的参数;函数体是一段具体的代码逻辑;return语句则将结果返回给调用者。
在调用一个函数时,我们需要按照以下格式进行:返回值变量 = 函数名(参数列表);其中,返回值变量接收该函数返回的结果;参数列表则按照定义顺序传入相应参数。
如果该函数不需要传入任何参数,则可以省略参数列表。
2. 函数指针除了直接调用一个已经定义好的函数外,我们还可以使用函数指针来间接调用一个函数。
函数指针和普通指针类似,它指向的是一个函数的地址。
通过函数指针,我们可以在运行时动态地确定需要调用哪个函数。
在C语言中,声明一个函数指针的方法如下:返回类型 (*指针变量名)(参数列表);其中,括号中的*表示这是一个指针变量;指针变量名则是该变量的标识符;参数列表和返回类型与被指向的函数相同。
通过以下代码可以将一个已经定义好的函数赋值给一个函数指针:int max(int a, int b){return a > b ? a : b;}int (*p)(int, int) = max;在上述代码中,p就是一个用于存储max函数地址的函数指针。
3. 编译预处理编译预处理是C语言中一项重要的功能,在编译过程中会对源代码进行一些预处理操作。
c语言实验报告——标准库函数使用与编译预处理

printf("%d和%d的最最大公约数和最小公倍数分别为%d和%d\n",a,b,zdgys(a,b),zxgbs(a,b));
printf("\n请继续输入或者关闭\n");
gotoloop;
}
//b.c求两个数最大公约数
intmax(inta,intb);
}
//c.c求两个数最小公倍数
intmin(inta,intb);
intzxgbs(inta,intb);
intzxgbs(inta,intb)
{
intj,k,i=1;
k=i*max(a,b);
while(1)
{
j=k*i;
if(j%a==0&&j%b==0)
break;
i++;
}
returnj;
}
2.掌握建立和调试多源程序文件程序的方法;
3.掌握C程序中函数的定义和调用方式,理解函数声明的概念,掌握函数声明的方法
二、实验项目内容(实验题目)
求2个数的最大公约数和最小公倍数。要求用函数实现,并且将主函数和这两个函数分别存入3个文件a.cpp ,b.cpp ,c.cpp中。用文件包含的方法实现多文件编译链接。
3.包含函数原来可以不用是正规的可以运行的c,只要是所需的正确的函数即可。
3、源程序(实验过程或算法)
//a.c主函数
#include"stdio.h"
#include"12核技术02班20123857刘春波03b.c"
#include"12核技术02班20123857刘春波03c.c"
C语言编译预处理实验报告

C 语言编译预处理实验报告实验名称:编译预处理一. 实验目的(1) 掌握文件包含、宏定义、条件编译、assert 宏的使用。
(2)练习带参数的宏定义、条件编译的使用。
( 3)练习assert 宏的使用。
(4)使用集成开发环境中的调试功能:单步执行,设置断点,观察变量。
二、实验内容1. 源程序改错:源程序:#include <stdio.h> #define SUM a+b #define DIF a-b #define SWAP(a,b)a=b, b=aint main(){int b, t;printf("Input two integers a,b:"); scanf("%d, %d", &a, &b);printf("\nSUM=%d\n the difference between square of a andsquare b is:%d",SUM,SUM*DIF);SWAP(a,b);Printf("\nNow a=%d,b=%d\n", a, b); return 0;}.2. 源程序修改替换源程序:voidmain(void){int a, b, c;float d, e;printf("Enter three integers:"); scanf("%d, %d, %d", &a, &b, &c);printf("\nthe maximum of them is %d\n", max(a,b,c)); printf("Enter two floating pointnumbers:");scanf("%f, %f", &d, &e); printf("\nthe sum of them is%f\n",sum(d,e));return 0;int max(int x, int y, int z){int t; if (x > y) t = x;elset = y;if (t < z)t = z; return t;}3. 跟踪调试程序程序代码:#define Rint main(void){float r, s; int s_integer = 0; printf("input a number:");scanf("%f", &r);#ifdef R s = 3.14159 * r * r; printf("area of round is:%f\n", s); s_integer = integer_fraction(s);printf("the integer fraction of area is %d\n", s_integer); assert((s-s_integer) < 1.0);#endifreturn 0;}int integer_fraction(float x){int i = x; return i; }4. 程序设计三、实验步骤及结果步骤:1.编写源程序2. 对源程序进行编译,修改错误,运行修改后的程序3•发现结果有误,进行调试。
函数与编译预处理实验报告

函数与编译预处理实验报告1. 背景函数与编译预处理是计算机编程中非常重要的两个概念,它们对于程序的结构和执行效率都起着关键作用。
函数是一段可重复使用的代码块,通过将任务划分为多个函数可以提高代码的可读性与维护性。
而编译预处理则是在编译过程中对源代码进行预处理,包括宏展开、文件包含和条件编译等操作。
本次实验通过设计并实现一段使用函数和编译预处理的程序,旨在加深对函数和编译预处理的理解,掌握它们的基本概念和使用方法,并通过实践感受它们对程序结构和性能的影响。
2. 分析2.1 需求在实验中,我们需要设计一个问题,通过函数和编译预处理来实现对问题的解决。
首先,我们需要确定问题的具体要求和输入输出规范。
只有明确了问题的需求,才能设计出合适的函数和合理的编译预处理指令。
2.2 设计根据实验要求,我们可以设计一个简单的问题:计算一个整数的平方。
用户输入一个整数,程序输出该整数的平方。
这是一个简单的计算问题,可以通过函数和编译预处理来实现。
我们可以设计一个函数calculate_square用于计算平方,并通过编译预处理指令来实现输入输出的控制。
具体的实现细节如下:#include <stdio.h>// 函数:计算平方int calculate_square(int x) {return x * x;}// 编译预处理指令:实现输入输出控制#define ENABLE_INPUT_OUTPUT#ifdef ENABLE_INPUT_OUTPUTint main() {int num;printf("Please enter an integer: ");scanf("%d", &num);int result = calculate_square(num);printf("The square of %d is %d.\n", num, result);return 0;}#endif上述代码中,我们定义了一个函数calculate_square用于计算整数的平方。
第四章:函数和预编译处理

第四章函数和预编译处理指令第一节函数函数是C源程序的基本模块,通过对函数模块的调用实现特定的功能。
C程序的全部工作都是由各式各样的函数完成的,所以也把C语言称为函数式语言。
由于采用了函数模块式的结构,C语言易于实现结构化程序设计。
使程序的层次结构清晰,便于程序的编写、阅读、调试。
函数:实现了特定功能的带名称的一小段程序。
C语言不仅提供了极为丰富的库函数(如Turbo C,MS C 都提供了三百多个库函数),还允许用户建立自己定义的函数。
用户可把自己的算法编成一个个相对独立的函数模块,然后用调用的方法来使用函数。
【注意】:✓一个源程序文件由一个或多个函数组成.一个源程序文件是一个编译单元,即程序是以源文件编译的,而不是以函数编译的.✓一个C程序由一个或多个源程序文件组成.一个源文件可以被多个应用程序公用✓C程序的执行从main函数开始并在调用其他函数后返回main函数,在main函数中结束整个程序的运行.main函数是系统定义的.✓所有函数都是平行的,即在定义函数时时相互独立的,一个函数并不属于另一个函数,所以函数定义不能相互嵌套。
函数间可以相互调用,但是不能调用Main()函数.一、函数的特点:1.分工合作2.较好的可读性3.便于修改、纠错4.提高程序编写的效率c语言中的函数是子程序的总称,包括函数(有返回值)和子过程(无返回值)。
C语言的程序由函数组成,函数是C语言程序的基本单位.c语言的编译单元是整个的源程序文件,而不是函数。
二、函数的一般形式[函数返回值类型标示符] 函数名([形式参数列表]){说明部分;语句部分;}函数总是全局的,但可以使用static关键字告诉编译器,指定函数不被其他文件调用,若有被其他文件调用的情况则编译器报错,其声明形式为:static 类型标识符函数名(形式参数列表);三、函数的分类(一)、按声明类型划分:1.库函数:由C系统提供,用户无须定义,也不必在程序中作类型说明,只需在程序前包含有该函数原型的头文件即可在程序中直接调用2.用户自定义函数:由用户按需要写的函数。
函数与预编译处理

#include<stdio.h> int max(int x,int y) { return x>y?x:y; } void main() { int a,b,c,m; printf ("请输入3个整数:\n"); scanf("%d%d%d",&a,&b,&c); m=max(c,max(a,b)); printf ("m=%d\n",m); }
【例6.5】 求1!+2!+3!+4!+5!。
#include<stdio.h> /* 不是语句,末尾不加分号 */ int fact(int n) /* 求n!函数 */ { int j,f=1 ; for(j=1;j<=n;j++) f=f*j ; return f; /* 返回main函数 */ } void main() { int k, sum=0 ; for(k=1;k<=5;k++) sum=sum+fact(k); printf("sum=%d\n",sum); }
#include<stdio.h> void main() { float x, y; int n ; float power(float x,int n); /* power()函数的提前声明 */ scanf("%f%d", &x,&n); y=power(x, n); printf("y=%.2f\n", y ); } float power(float x,int n) { int i; float t=1; for(i=1;i<=n;i++) t=t*x; return t; }
函数与编译预处理

,一一传递数据。
2、函数调用的方式
(1)函数语句 printf(“%d”,’3’);
(2)函数表达式 y=power(3,3);
(3)函数参数 函数调用作为一个函数的实参如:
maxval=max(max(a,b),c);
3、 对被调用函数的声明和函数原型
①在一个函数中调用另一函数需要具备的条件:
a、调用的函数必须是已经存在的函数(是库函数或自己定
的参数表称为形式参数表,简称形参表。
★ 说明:函数定义不允许嵌套。
在C语言中,所有函数(包括主函数main()都是平行的。 一个函数的定义,可以放在程序中的任意位置,主函数main() 之前或之后。但在一个函数的函数体内,不能再定义另一个
函数,即不能嵌套定义。
2019/10/10
C语言程序设计教程
第6章 函数与编译预处理 10
3、函数类型与返回值
在C语言中可把函数分为有返回值函数和无返回值函数两种: (1)函数返回值与return语句
有返回值的函数,是通过函数中的return语句来获得的。 ①return语句的一般格式: return ( 返回值表达式 );
②return语句的功能:返回调用函数,并将“返回值表达式”
的值带给调用函数。
例6_2:计算1!+2!+3!+…+10! 的值
void main() {
long mm( int n); int i; long s=0; for (i =1; i <=10; i ++)
s+= mm(i ); printf(“\n%ld”,s); }
long mm( int n) { long t=1; int i;
第3章函数和编译预处理

(2)实参 与 形参的类型应相同或赋值兼容。
int add (int x, int y) { int z; z=x+ y ; return z; } void main (void ) { double a, b, c; cin>>a>>b; c=add (a , 3.5) ; cout<<“The sum is”<< c<<endl; }
3.2.2 函数的声明(补述)
说明: (1)函数定义和函数声明是两回事,不要混淆。 (2)之所以函数原型中可以省略形式参数的名 称,是因为形式参数的名称是无关紧要的,且 在调用前形参并不存在。 (3)函数声明的位置。函数声明可以放在主调 函数中,也可放在函数外面,只要出现在函数 调用之前即可。
3.3 函数 的 参数传递(再次说明) (1)在定义函数时指定的形参,在未出现函数调用时,它们并 不占内存中的存储单元,因此称它们是形式参数或虚拟参数, 表示它们并不是实际存在的数据;只有在程序运行并发生函 数调用时,函数中的形参才被分配内存单元,以便接收从实 参传来的数据。在调用结束后,形参所占的内存单元也被释 放。
调用函数过程(动态含义)中的问题:
(1)主调函数 和 被调函数 中 语句的 执行顺序。
(执行流程改变、CPU控制权传递)
(2)参数值传递方向: 实参值 形参 (3) 函数值 的 返回: 调用处
函数类型
int max (int x,int y) { int z; 函数名 z=(x>y)? x : y ; 函数体 return z; 函数值 } void main (void ) 主调函数 将实参a,b的值传 { int a,b,c;
对于教材【例3.2】的求圆柱体体积的函数volume( ),如下声
函数与编译预处理

例6.3 用递归方法计算n!。
long fact(int n) { if(n==0||n==1) return 1; else return n*fact(n-1); } main() { int n; long m; scanf("%d",&n); m=fact(n); printf("%d!=%ld\n",n,m); }
程序举例
1.以下程序的输出结果是 #define M(x,y,z) x*y+z main() {int a=1,b=2,c=3; printf(“%d\n”,M(a+b,b+c,c+a)); }
计算过程: 1+2*2+3+3+1=12
4+4*4+4/2+2*2+2=28
有以下程序执行后输出结果是 #define f(x) x*x main() {int i; i=f(4+4)/f(2+2); printf(“%d\n”,i); }
2.带参数的宏定义
带参数的宏定义的一般形式为: #define 宏名(形参表) 字符串 对带参数的宏,在调用时,不仅要宏展开,而且要用实参去代换形参。 带参数宏调用的一般形式为:宏名(实参表); #define MAX(x,y) x>y?x:y main() { int a,b,m; scanf("%d%d",&a,&b); m=MAX(a,b); printf("max=%d\n",m);
全局变量和局部变量的使用特点 变量存储类别
c语言实验报告18编译预处理、内部函数和外部函数

c语⾔实验报告18编译预处理、内部函数和外部函数《C程序设计》课程实验报告学院:班级:姓名:学号:实验设备:计算机1台实验⽇期:2011年3⽉1⽇实验项⽬名称编译预处理、内部函数和外部函数实验⽬的掌握宏定义、宏调⽤,以及宏展的处理过程,掌握⽂件包含的概念和使⽤。
掌握内部函数和外部函数的定义及使⽤⽅法。
实验要求:掌握宏定义、宏调⽤,以及宏展的处理过程,掌握⽂件包含的概念和使⽤。
掌握内部函数和外部函数的定义及使⽤⽅法。
编写简单程序。
实验内容(包括步骤):1.试分析以下宏替换后的形式,计算输出结果。
要求:先计算运⾏结果,然后利⽤程序验证。
#include "stdio.h"#define CX(y) 2.5+y#define PR(a) printf("%d",(int)(a))#define PR1(a) PR(a); putchar('\n')main(){ int x=2;PR1(CX(5)*x);2.通过宏调⽤⽅式,求从n个数的最⼤值。
要求:数据从键盘输⼊。
3.已知a、b都为整型数,计算a*b。
要求: (1)a、b值从键盘输⼊。
(2)主函数和计算a*b的函数在不同⽂件中存放,求a*b的函数为内部函数,使⽤⽂件包含完成。
4.删除字符串中的指定字符。
要求:(1)字符串和要删除字符都在主函数中输⼊,结果在主函数中输出。
(2)主函数和删除字符串指定字符的函数在不同⽂件中存放,删除字符串指定字符的函数为外部函数。
调试与结果测试:调试正常结果正确。
代码注释:18-1#include "stdio.h"#define CX(y) 2.5+y#define PR(a) printf("%d",(int)(a))#define PR1(a) PR(a); putchar('\n') main(){ int x=2;PR1(CX(5)*x);}#include#define max(x,y) (x)>(y)?(x):(y) int main() {int n,i,t;int a[100];scanf("%d",&n);for(i=0;iscanf("%d",&a[i]);t=a[0];for(i=1;it=max(t,a[i]);printf("最⼤值是%d\n",t);return 0;}18-3-1#include#include int main(){int a,b;scanf("%d%d",&a,&b);printf("a*b=%d\n",f(a,b));return 0;}18-3-2static int f(int x,int y){int s;s=x*y;return s;}18-4-1#include#includeint main(){char c,str1[50];gets(str1);scanf("%c",&c);delete_string(str1,c);printf("%s\n",str1);return 0;}18-4-2extern void delete_string(char str[],char ch) {int i,j;for(i=j=0;str[i]!='\0';i++)if(str[i]!=ch)str[j++]=str[i];str[j]='\0';}――――――――――――以下内容为教师填写―――――――――――――――教师评阅:成绩:良2011年⽉⽇。
C++函数与编译处理(实验)

.西华大学实验报告(计算机类)开课学院及实验室:机械工程与自动化 实验时间 : 2013年4 月 3日一、实验目的1. 掌握函数声明、定义和使用的方法;2. 掌握形参与实参之间的对应关系;3. 掌握函数调用时,形参、实参之间的“值传递”和“引用传递”的区别;4. 掌握函数递归调用的方法;5. 掌握全局变量、局部变量、静态变量的使用方法;6. 掌握文件包含的使用方法。
二、实验内容1. 定义两个函数swap1和swap2,目的是实现两个整数的次序交换,其中swap1的参数是传递值参数,swap2的参数是引用参数,在程序中分别调用这两个函数,其输出结果如下所示:初始值 :x=1,y=2 调用swap1后的结果:x=1 y=2 调用swap2后的结果:x=2 y=1 2. 编写一个函数,用来计算从键盘上输入的整数的阶乘。
3. 编写函数判断一个数是否是素数,在主程序中实现输入、输出。
4. 编写一个程序,设计一个函数可以计算并返回输入的4个数的平均值。
三、使用环境操作系统:Windowns7 C++环境:Visual C++2010四、核心代码及调试过程详细记录核心代码以及程序在调式过程中出现的问题及解决方法。
记录程序执行的结果(运行界面截图)。
实验1:#include <iostream> using namespace std;void swap1(int a,int b)//值传递 { int temp=a; a=b; b=temp;}void swap2(int &a,int &b)//引用传递 { int temp=a; a=b; b=temp; }int main() { int a,b;cout<<"请输入两整数:"; cin>>a>>b;cout<<"两个整数a="<<a<<";b="<<b<<endl; swap1(a,b);cout<<"调用swap1后的值:a="<<a<<";b="<<b<<endl;swap2(a,b);cout<<"调用swap2后的值:a="<<a<<";b="<<b<<endl;return 0;}实验2#include <iostream> using namespace std;int jiecheng(int a) { int ire=1; if (a<0) { cout<<"输入的数是负数"<<endl;}for (int i=a;i>=1;i--){ire*=i;}return ire;}int main() {int num;cout<<"请输入一个整数来计算阶乘:"; cin>>num;cout<<num<<"的阶乘为"<<jiecheng(num)<<endl;return 0;}实验3#include<iostream>using namespace std;bool sushu(int a)//判断是否为素数的函数{int i=2;for(i=2;i<a;i++){if(a%i==0){break;}}if(a==i){return true;}return false;}/***主函数***/int main(){int num=0;while(true){cout<<"请输入一个正整数:";cin>>num;if(num>0){break;}}if(sushu(num)){cout<<num<<"是一个素数"<<endl;}else{cout<<num<<"不是一个素数"<<endl;}return 0;}实验4#include <iostream> using namespace std;double pingju(double a,double b,double c,double d) { return (a+b+c+d)/4;}double pingju(double a[]) { double dre=0; for (int i=0;i<4;i++){dre+=a[i];}return dre/4;}int main() { double a[4];cout<<"请输入4个数"<<endl; cin>>a[0]>>a[1]>>a[2]>>a[3]; cout<<"平均值为"<<pingju(a)<<endl; return 0; }五、总结通过学习,我知道了,函数调用时,有“值传递”和“引用传递”两种方式,前者会把实参的一个副本给了调用函数,调用之后原实参的值不变,后者会把实参的地址给了调用函数,调用函数能够直接修改实参的值,也知道递归就自己调用自己,还有全局变量、局部变量、静态变量的声明方式及其作用范围。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{ if(!x) return;
cout<<(x%10)<<"\t";
output1(x/10);
}
void output2(int x)
{ if(!x) return;
output2(x/10);
cout<<(x%10)<<"\t";
}
int main(void)
{
int a;
cout<<"请输入大于0的正整数:";
cin>>a;
output1(a); cout<<endl;
output2(a); cout<<endl;
return 0;
}
思考:当键盘输入12345时,
1)分析output1函数的执行过程,该函数的功能是什么?
2)分析output2函数的执行过程,该函数的功能是什么?
提示:递归公式为:
xn=1
px(n)=
px(n-1)+(-1)n-1xnn>1
(-1)n-1xn=-(-x)n,可以自己写一个函数double power( double x, int n);
(3)设计一组函数分别计算三角形、矩形和圆面积。要求:
1)使用函数重载;
2)在主函数进行测试。
问题讨论
(1)使用递归方法的条件
实验
实ห้องสมุดไป่ตู้目的
1.掌握函数的定义和调用的方法。
2.学会使用递归方法进行程序设计。
3.掌握变量的作用域与存储类别。
4.学会使用函数重载解决实际问题。
5.学会使用宏
实验内容
1.阅读并运行程序,写出运行结果。
(1)#include <iostream>
using namespace std;
int fun(int x)
(2)如何实现函数重载?
(3)#include <iostream >
using namespace std;
void fun(void)
{ int a=1,b=2;
staticint c; //A
a++;
{ int a=1;
b++;
c++;
cout<<a<<","<<b<<","<<c<<"\n";
}
cout<<a<<","<<b<<","<<c<<"\n";
2)在主函数中输入一个数,调用num函数,判断此整数是否为水仙花数,并输出结果。
(2)编写一个函数doublepx(doublex,int n);用递归的方法求下列级数前n项的和s。
在主函数中定义变量x与n,用键盘输入x与n的值,调用px()函数计算并返回级数前n项和s。最后输出s的值。
输入实验数据:x=1.2 n=10
}
intmain()
{int a=1,b=2,c=3;
fun();
fun();
fun();
return 0;
}
思考:将A行中static删除,运行结果是什么?
2.编程题
(1)编写一个函数,判断一个数是不是水仙花数。在主函数中输入一个整数,输出是否是水仙花数的信息。(所谓水仙花所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。要求:1)编写一个函数int num(int n),返回给定整数n是否为水仙花数。
{ int prime=1;
if(x==0||x==1)
prime=0;
for(int i=2;i<x;i++)//A
if(x%i==0)
prime=0;
return prime;
}
intmain()
{intk=0;
for(int i=5;i<20;i+=2)
if(fun(i))
{ cout<<""<<i;
if(++k&&5==0)
cout<<"\n";//B
}
return 0;
}
思考:1)将A行改为for(int i=2;i<=x/2;i++)或for(int i=2;i<=sqrt(x);i++),结果如何?
2)B行中为什么要用++k?能不能用k++?
(2)#include <iostream>
using namespace std;