《c++语言程序设计教程》习题及解答(7)

2019-08-31 12:42

a=1,b=4

3.

#include int fac(int); void main() {

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 int fun(char *,char *); void main() {

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 void fun(int,int,int *); void main() {

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 add(int,int =5); void main() {

int a(8);

cout<<\

cout<<\

cout<<\ }

int add(int i,int j) {

return i+j; }

答: sum1=13 sum2=21 sum3=29

7.

#include void swap(int &,int &); void main() {

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;imax) max=b[i]; return max; }

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 void convert(int); void main() {

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 prime(int); void main() {

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 页


《c++语言程序设计教程》习题及解答(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:三相短路电流计算

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: