#define M 20 #define N 10 #define L(r) r*r void main( ) {
cout< cout< (5)#include int add(int x,int y=8); void main( ) { int a=4; cout< int add(int x,int y) { return x+y; } (6)#include int fun(double a,double b); void main( ) { cout< int fun(double a,double b) { return a*b; } (7)#include #include char str[20]=\ cout< void fun(char string[ ] ) { int i; for(i=0;i if (string[i]>='a' && string[i]<='z') } string[i]-=32; 3.编写函数将化氏温度转换为摄氏温度,公式为C=(F-32)*5/9;并在主函数中调用。 4.分别利用非递归和递归的方法编写函数求斐波那契数列第n项。 5.编写函数将字符串按逆序存放。 6.编写函数实现字符串拷贝功能。 7.编写函数利用数组名作参数计算数组arr[3][4]所有元素的和。 8.编写函数利用递归的方法计算x的n阶勒让德多项式的值。该公式如下: (n?0)?1 ?PX(x)??x (n?1) ?((2?n-1)?x?Pn-1(x)-(n-1)?Pn-2(x))/n (n?1)?9.利用重载编写求整数绝对值和求实数绝对值两个函数。 10.利用全局变量并编写函数统计数组中奇数和偶数的个数。 第5章 复习思考题 1.指出下面程序中的错误 #include { char x[5]=\; cout< 2.指出下面各题列出的代码中的错误。 (1)试图打印数组a的第5个元素值: cout< (4)char a[12]= \; 3.有一个数组,内放10个整数,要求找出最小的数和它的下标。然后把它和数组中最前面的元素对换。 4.邮票组合。某人有4张3分的和3张5分的邮票。用这些邮票中的一张或若干张可以得到多少种不同的邮资? 5.用筛选法求100以内的素数。 6.有n个数,已按由小到大顺序排列好,要求输入一个数,把它插入到原有数列中,而且仍然保持有序,同时输出新的数列。 7.打印如下的杨辉三角形(要求打印出10行) 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 … … … … … … 8.有17个人围成一个圈(编号0~16),从第0号的人开始从1报数,凡报到3的倍数的人离开圈子,然后再数下去。直到最后只剩下一个人为止。问此人原来的位置是多少号? 9.将螺旋方阵存放到n×n的二维数组中并把它打印输出。要求由程序自动生成下图所示螺旋方阵。n由程序读入。 1 16 15 14 13 2 17 24 23 12 3 18 25 22 11 4 19 20 21 10 5 6 7 8 9 10.水仙花数。如果一个正整数等于组成该数的各个数字的立方和,则称该数为水仙花数,亦称阿姆斯特朗数。如407=43+03+73,407是一个水仙花数。试编写求100~999之间的所有水仙花数的程序。 11. 输入一个n×n矩阵各元素的值,求出两条对角线元素值之和。 12. 有一行字符,要求将每个单词中的第一个字母改成大写字母(如果已经是大写则不变)。 13.有三行文字,找出其中共有多少个空格、多少个单词。规定单词以一个或多个空格相隔。如果一个单词恰好在行末结束,则下一行开头应有空格。句号或逗号后面亦应有空格。(提示:注意要考虑当最后一行最后一个单词恰好结束在最后一列的情况) 14.有一行文字,要求删去其中某个字符。此行文字和要删的字符均由键盘输入。要删的字符以字符形式输入(如输入a表示要删去所有的a字符有)。 15.编写一程序,将两个字符串连接起来,不用strcat函数。 16.编写一程序,将字符串s1和s2比较,如果s1>s2,输出一个正数;s1=s2,输出0;s1 17.编写一程序,将字符数组s2中的全部字符拷贝到字符数组s1中。不用strcpy函数。拷贝时,?\\0?也要拷贝过去。?\\0?后面的字符不拷贝。 第6章 复习思考题 1.选择题: (1)如果x是整型变量,则合法的形式是( )。 A.&(x+5) ≤10)。 A.p[i] B.*(*(a+i)) C.a[p-a] D.*(&a[i]) (3)以下程序的输出结果是( )。 #include { int a[3]={10,15,20}; int *p1=a,*p2=&a[1]; *p1=*(p2-1)+5; *(p1+1)=*p1-5; cout< B.10 C.15 D.20 (4)执行以下程序段后,m的值为 ( )。 int a[2][3]={{1,2,3},{4,5,6}}; int m,*p=&a[0][0]; m=(*p)*(*(p+2))*(*(p+4)); A.15 B.14 C.13 D.12 (5)以下程序的输出结果是( )。 #include void fun(int x,int y,int *cp,int *dp) { *cp=x+y; } void main() { int a,b,c,d; } A.50,30 ( )。 A.funa(int *x,int *y) { int *p; *p=*x; *x=*y; *y=*p; B.funb(int x,int y) { int t; t=x; x=y; y=t; B.30,50 C.80,-20 D.80,20 (6)要求函数的功能是交换x和y中的值,且通过正确调用返回交换结果。能正确执行此功能的函数是 a=30,b=50; fun(a,b,&c,&d); cout< B.*x C.&*x D.*&x (2)若有语句int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则( )不是对a数组元素的正确引用(其中0≤i