long factorial(int n) { long t=1;int i; for(i=1;i<=n;i++)
t=t*i;
return t; }
long sum(int m) { long s=0;int i; for(i=1;i<=m;i++)
s=s+factorial(i); return s;
} main() {
int k,num; long result=0; scanf(\for(k=1;k<=num;k++)
result=result+sum(k); printf(\result); }
(7) 编写函数reverse(s),s是一个字符串,实现将字符串s逆序存放。
#include
for(i=0,j=t-1;i } } (8) 写一个函数transpose(b),b是一个3阶方阵,实现对方阵的转置,即行列互换。 int transpose(int b[3][3]) { int i,j,t; for(i=0;i<3;i++) for(j=i+1;j>=i&&j<3;j++) { t=b[i][j];b[i][j]=b[j][i];b[j][i]=t; } } main() { int a[3][3];int i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) scanf(\ for(i=0;i<3;i++) { for(j=0;j<3;j++) printf(\ printf(\ } transpose(a); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf(\ printf(\ } } (9) 某数列为K(n)的定义为:用递归的方法求该数列的第6项k(6)。 #include int k(int n) { int c; if(n==1) c=1; else if(n%2==0) c=k(n-1)*2; else c=k(n-1)*3; return c; } main() { int m; 26 scanf(\if(m>=1) printf(\ } else printf(\ 习题8 一、选择题 (1)下面有关宏替换的叙述不正确的是( )。 A.宏替换不占用运行时间 B.宏名无类型 C.宏替换只是字符替换 D.宏名必须用大写字母表示 (2)以下叙述中正确的是( )。 A.预处理命令行必须位于C源程序的起始位置 B.在C语言中,预处理命令行都以“#”开头 C.每个C程序必须在开头包括预处理命令行:#include D.C语言的预处理不能实现宏定义和条件编译的功能 (3)下列关于#include命令的叙述中,错误的是( )。 A.#include命令中,文件名可以用双引号或尖括号括起来 B.一个被包含文件中又可以包含另一个被包含文件 C.一个#include命令中可以指定多个被包含文件 D.一个#include命令中只能指定一个被包含文件 二、填空题 (1)以下程序输出结果是 【1】 。 #include (2)以下程序运行的输出结果是 【2】 。 #include (3)以下程序中的for循环执行的次数是 【3】 。 #define N 2 #define M N+1 #define NUM 2*M+1 void main() { int i; for(i=1;i<=NUM;i++)printf(\} 三、编程题 1、用带参数的宏来实现从3个数中找出最大数。 2、请设计输出整数的格式,整数用“]”格式输出。要求: ① 一行内输出2个整数; ② 一行内输出3个整数。 3、输入两个整数,求它们相除的余数,请用带参数的宏来实现。 27 一.选择题 D B C 二.填空题 (1) 100 (2) 161 (3) 1 2 3 4 5 三.编程题 1、用带参数的宏来实现从3个数中找出最大数。具体程序为: #include #define MAX2(x,y) (x)>(y)?(x):(y) int max(int a,int b, int c) { int t1 = MAX2(a, b); int t2 = MAX2(b, c); int t3 = MAX2(t1, t2); return t3; } void main() { int d,e,f,m; scanf(\ m = max(d, e, f); printf(\最大数为%d\} 2、请设计输出整数的格式,整数用“]”格式输出。要求: ① 一行内输出2个整数; ② 一行内输出3个整数。 具体程序为: 3、输入两个整数,求它们相除的余数,请用带参数的宏来实现。 具体程序为: /* exa8-3-3.c */ #include #define MOD(a, b) ((a) % (b)) void main() { int a, b; printf(\ scanf(\ printf(\} 28 【参考答案】 习题9 29 30