}
let[ch-'a']++;
for (i=0;i<26;i++)
printf(\
return 0;
}
5.编写程序输出以下杨辉三角形(要求打印出10行)。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 ??
#include
int i,j,k; int a[N][N]; for(i=0;i a[i][0]=1; a[i][i]=1; } for(i=2;i a[i][j]=a[i-1][j-1]+a[i-1][j]; for(i=0;i for(j=0;j<=i;j++) printf(\ printf(\ } } 6.编写程序输入并求一个4×4矩阵的两条对角线元素之和、四周靠边元素之和。 #include int a[N][N]; int i,j; int sum1=0; //对角线元素之和 int sum2=0; //四周靠边元素之和 printf(\请输入%d*%d矩阵:\\n\ for(i=0;i scanf(\ printf(\产生的矩阵如下:\\n\ for(i=0;i for(j=0;j printf(\ printf(\ } //计算对角线元素之和 for(i=0;i if(i==j||i+j==N-1) sum1+=a[i][j]; printf(\两条对角线上的元素之和为:]\\n\ for(i=0;i if(i==0||i==N-1||j==0||j==N-1) sum2+=a[i][j]; printf(\四周靠边的元素之和为:]\\n\} 练习题7参考答案 一、选择题 序号 参考答案 序号 参考答案 序号 参考答案 1 A 11 B 21 A 2 D 12 C 3 B 13 A 4 D 14 C 5 C 15 C 6 A 16 C 7 D 17 C 8 A 18 D 9 A 19 A 10 B 20 C 二、填空题 1.下列程序的输出结果是 5 6 。 2.下面程序的运行结果是 10 。 3.下面程序的运行结果是 A+B=9 。 4.以下程序的输出结果是 246 。 三、程序设计题 1.编写程序在主函数中键盘输入两个整数,通过调用两个函数分别求出两个整数的最大公约数和最小公倍数,并输出结果。 #include int gcd(int m,int n) //最大公约数函数定义 { int r; r=m%n; while(r!=0) //先判断后执行,有可能一次也不执行循环体。 { m=n; n=r; r=m%n; } return n; } //最小公倍数函数定义 int lcm(int m,int n) //最大公约数在前面已定义,调用前可不作函数声明 { return m*n/gcd(m,n); } int main() { int a,b; int gcd(int m,int n); //函数声明 int lcm(int m,int n); //函数声明 printf(\输入两个数:\ scanf(\ printf(\最大公约数:%d\\n\ printf(\最小公倍数:%d\\n\ return 0; } 2.编写程序在主函数输入一个整数,通过调用一个判素数的函数求素数,并输出是否是素数的信息。 #include int prime(int x); //在函数外部声明,作用域为整个文件 int main() { int m; while(1) //可实现多次判断 { printf(\请输入数字(输入0退出):\ scanf(\ if (m == 0) return 0; if (prime(m)) printf(\是素数!\ else printf(\不是素数!\ } return 0; } int prime(int x) //不同方法,同一算法思想 { int n,flag=1; for(n=2;n flag=0; break; } return flag; } 3.编写程序在主函数中输入一个给定的3×3的二维整型数组,通过调用一个用函数将这个二维整型数组进行转置,最后输出转置后的二维数组。 #include void convert(int a[3][3]); int i,j,a[3][3]; for(i=0;i<3;i++) for(j=0;j<3;j++) scanf(\ convert(a); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf(\ printf(\ } getchar(); } void convert(int a[3][3]) { int i,j,t; for(i=0;i<3;i++) for(j=0;j<3;j++) b[j][i]=a[i][j]; } 10.编写程序用函数递归的方法求n阶勒让德多项式的值,递归公式为: ?1 n?0?pn(x)??x n?1 ?((2n?1)?x?p(x)?(n?1)*p(x))/n n?1n?1n?2?#include #include float p(int n,float x) { if (n==0) return 1; else if (n==1) return x; else return ((2 * n - 1) * x - p(n - 1 , x) - (n - 1) * p(n - 2, x)) / n; } int main() { int n,x; float result; printf(\ scanf(\ result = p(n,x); printf(\ return 0; } 练习题8参考答案 一、选择题 序号 参考答案 1 C 2 C 3 B 4 C 5 B 二、填空题 1. C 提供的预处理功能主要有__条件编译___、_宏定义____、__文件包含_等三种。 2. C 规定预处理命令必须以 # 开头;定义宏的关键字是_define______。 3. 在预编译时将宏名替换成___字符串_______的过程称为宏展开。 4. 预处理命令不是 C 语句,不必在行末加____分号_____。 5. 以头文件 stdio.h 为例,文件包含的两种格式为:______#include 6.下面程序的运行结果为 12 。 7.以下程序的输出结果是 28 。 8.以下程序输出的结果是 c=0 。 三、程序设计题 1. 定义一个带参的宏,求两个整数的余数。通过宏调用,输出求得的结果。 #include #define R(m,n) (m)%(n) void main() { int m,n; printf(\ scanf(\ printf(\