a=1,b=4
3.
#include
int s(0);
for(int i(1);i<=5;i++) s+=fac(i);
cout<<\ }
int fac(int n) {
static int b=1; b*=n; return b; }
答: 5!+4!+3!+2!+1!=153
4.
#include
char *p1,*p2; p1=\ p2=\ int n=fun(p1,p2); cout< } int fun(char *s1,char *s2) { while(*s1&&*s2&&*s1++= =*s2++) ; s1--; s2--; return *s1-*s2; } 答: 2 5. #include int a,b,c; fun(5,6,&a); fun(7,a,&b); fun(a,b,&c); 第 31 页 共 77 页 cout< void fun(int i,int j,int *k) { j+=i; *k=j-i; } 答: 6,6,6 6. #include int a(8); cout<<\ cout<<\ cout<<\ } int add(int i,int j) { return i+j; } 答: sum1=13 sum2=21 sum3=29 7. #include int a(8),b(5); cout<<\ swap(a,b); cout<<\ } void swap(int &i,int &j) { int t; t=i; i=j; j=t; } 答: a=8,b=5 a=5,b=8 8. #include void print(int),print(char),print(char *); void main() { int a(800); print(a); print('a'); print(\ } void print(int i) { cout< 第 32 页 共 77 页 void print(char i) { cout< void print(char *i) { cout< 5.5 编程题 1. 从键盘上输入8个浮点数,编程求出其和以及平均值。要求写出求和以及平均值的函数。 答:编程如下: #include double s,sum(double b[],int n),average(int n); void main() { double a[8]; cout<<\输入8个double型数 ;\ for(int i=0;i<8;i++) cin>>a[i]; s=sum(a,8); double ave=average(8); cout<<\VERAGE=\ } double sum(double b[],int n) { double sum=0; for(int i=0;i double average(int n) { return s/n; } 2. 从键盘上输入8个整型数,编辑求出它们中间最大的数和最小的数。要求写出求最大 数和最小数的函数。 答:编程如下: #include int max(double b[],int n),min(double b[],int n); void main() { int a[8]; cout<<\输入8个int型数 ;\ for(int i=0;i<8;i++) cin>>a[i]; cout<<\最大数为 \最小数为 \ } int max(double b[],int n) 第 33 页 共 77 页 { int max=b[0]; for(int i=0;i int min(double b[],int n) { int min=b[0]; for(int i=0;i 3. 给定某个年、月、日,计算出这一天是属于该年的第几天。要求写出计算闰年的函数 和计算日期的函数。 答:编程如下: #include int sum_day(int,int),leap(int); void main() { int year,month,day; cout<<\请输入一个日期(yyyy mm dd): \ cin>>year>>month>>day; int days=sum_day(month,day); if(leap(year)&&month>2) days++; cout< int sum_day(int month,int day) { int day_month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; for(int i=1;i int leap(int year) { int leap=year%4==0&&year0!=0||year@0==0; return leap; } 4. 使用递归方法将一个n位整数转换为一个字符串。编写转换函数。 答:编程如下: #include int num; cout<<\请输入一个整型数: \ 第 34 页 共 77 页 cin>>num; cout<<\输出的字符串是\ convert(num); cout< void convert(int n) { int a; if((a=n/10)!=0) convert(a); char c=n+'0'; cout< 5. 编写一个程序验证:任何一个充分大的偶数(≥6)总可以表示成两个素数之和。要求编 写一个求素数的函数prine(),它有一个int型参数,当参数值为素数时返回1,否则返回0。 答:编程如下: #include int n; cout<<\请输入一个大于或等于6的偶数: \ cin>>n; int i,j; cout<<\两个素数的所有可能有:\\n\ for(i=2;i<=n/2;i++) { j=n-i; if(prime(i)&&prime(j)) cout<<\ } } int prime(int n) { int j=2; while(n%j!=0) j++; if(n==j) return 1; else return 0; } 5.6 简单回答下列问题 1. 没有返回值的函数是否有函数类型?函数参数类型与函数的类型是否有关系? 答:没有返回值的函数的类型为void。没有关系。 2. 函数的缺省的存储类是什么?函数的存储类与函数什么关系? 答:函数的缺省的存储类是外部类。函数的存储类决定了函数的作用域。 3. 函数的调用方式有哪两种?传址和引用调用方式有何不同? 答:函数的调用方式有两种:传值调用和引用调用。传址调用时实参用地址值,形参用指 第 35 页 共 77 页