程序题 ①求1!+2!+.....+20! #include <stdio.h> Void main() {double s =0,t=1; Int n; For (n=1;n<=20;n++) { T=t*n; S=s+t; } Printf("1!+2!+...+20!=%22.15e\n",s); } ②求一个3*3的整形二维数组对角线元素之和 #include <stdio.h> Void main () { Int a[3] [3] ,sum=0; Int i,j; Printf( "enter data:\n") ; ### C语言程序题知识点解析 #### 一、求1!+2!+…+20! **题目描述:** 编写一个C程序来计算并输出1到20的阶乘之和。 **代码分析:** ```c #include <stdio.h> void main() { double s = 0, t = 1; int n; for (n = 1; n <= 20; n++) { t = t * n; s = s + t; } printf("1!+2!+...+20!=%22.15e\n", s); } ``` - **包含头文件**:`#include <stdio.h>`用于引入标准输入输出库。 - **变量声明**:定义了两个变量`s`和`t`,其中`s`用来存储阶乘之和,`t`用来存储当前项的阶乘值。 - **循环结构**:使用`for`循环从1到20迭代计算每个数的阶乘,并累加到`s`中。 - **输出结果**:使用`printf`函数输出最终的阶乘之和。 **注意事项:** - 使用`double`类型来存储阶乘值,因为阶乘增长得非常快,可能会超出整型范围。 - 输出格式`%22.15e`表示输出的数值以科学计数法形式显示,总宽度为22位,小数部分保留15位。 #### 二、求一个3×3的整形二维数组对角线元素之和 **题目描述:** 编写一个C程序来计算并输出一个3×3的二维数组主对角线上的元素之和。 **代码分析:** ```c #include <stdio.h> void main() { int a[3][3], sum = 0; int i, j; printf("enter data:\n"); for (i = 0; i < 3; i++) for (j = 0; j < 3; j++) scanf("%d", &a[i][j]); for (i = 0; i < 3; i++) sum = sum + a[i][i]; printf("sum=%6d\n", sum); } ``` - **包含头文件**:`#include <stdio.h>`用于引入标准输入输出库。 - **变量声明**:定义了一个3×3的二维数组`a`以及一个变量`sum`来存储对角线元素之和。 - **输入数据**:使用嵌套的`for`循环读取用户输入的数据。 - **计算对角线元素之和**:再次使用`for`循环遍历数组,并通过`a[i][i]`访问主对角线元素,累加到`sum`中。 - **输出结果**:使用`printf`函数输出最终的对角线元素之和。 **注意事项:** - 输入数据时需要确保输入正确的数据格式。 - 输出格式`%6d`表示输出的数值占据6位空间。 #### 三、筛选100内的素数 **题目描述:** 编写一个C程序来筛选出1至100之间的所有素数。 **代码分析:** ```c #include <stdio.h> #include <math.h> void main() { int i, j, n, a[101]; for (i = 1; i <= 100; i++) a[i] = i; a[1] = 0; for (i = 2; i < sqrt(100); i++) for (j = i + 1; j <= 100; j++) if (a[i] != 0 && a[j] != 0) if (a[j] % a[i] == 0) a[j] = 0; printf("\n"); for (i = 2, n = 0; i <= 100; i++) if (a[i] != 0) { printf("%5d", a[i]); n++; } if (n == 10) { printf("\n"); n = 0; } printf("\n"); } ``` - **包含头文件**:`#include <stdio.h>`用于引入标准输入输出库;`#include <math.h>`用于引入数学库,主要用于计算平方根。 - **变量声明**:定义了一个长度为101的一维数组`a`来存储1至100的整数,其中`a[1]`设为0表示1不是素数。 - **筛选素数**:使用嵌套的`for`循环进行筛选,内层循环从`i + 1`开始到100结束,如果`a[j]`能被`a[i]`整除,则`a[j]`设为0表示不是素数。 - **输出结果**:再次使用`for`循环遍历数组,并输出所有非0的元素。 **注意事项:** - 筛选素数的过程是基于“埃拉托斯特尼筛法”实现的。 - 输出素数时每10个换一行,便于查看。 - 为了提高效率,外层循环只需要到`sqrt(100)`即可。 以上三个题目涵盖了C语言中的基本语法、控制结构、数组操作等知识点,对于初学者来说具有很好的学习价值。
剩余8页未读,继续阅读
- 粉丝: 4
- 资源: 17
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助