1.19 试编写算法,计算i! * 2^i(i = 0, 1, ..., n - 1)的值并分别存入数组a[arrsize]的各个分量中。假设计算机中允许的整数最大值为MAXINT,则当n > arrsize或对某个k(0 <= k <= n - 1)使k! * 2^k > MAXINT时,应按出错处理。注意选择你认为较好的出错处理方法。
我的代码如下,大家看一下有没有问题:
#include <stdio.h> #include <stdlib.h> typedef unsigned int uint; #define MAXINT 0xFFFFFFFFU #define ARRSIZE 20 // 求阶乘 // num: 要计算的阶乘数字 // status: 状态-1表示溢出、1表示计算争取 uint jie_chen(uint num, int &status) { uint result = 1; if(num < 0) { exit(1); } int i = num; while(i > 0) { // 检验是否溢出 // 如果MAXINT除result小于i,则result * i将会大于MAXINT,将会出现溢出 if((float)MAXINT / (float)result < i) { // 出现溢出则返回-1 status = -1; return 0; } result *= i; --i; } status = 1; return result; } // 计算结果 // jiechen:之前计算出来的阶乘 // num: 2的多少次方 // status: 状态-1表示溢出,1表示计算正确 uint zhi_shu(uint jiechen, int num, int &status) { uint result = jiechen; for(int i = 1; i <= num; ++i) { // 判断是否溢出 if((float)MAXINT / (float)result < 2) { status = -1; return 0; } result *= 2; } status = 1; return result; } int main(int argc, char* argv[]) { uint a_res[ARRSIZE] = {0}; int i = 0; int status = -1; uint zhishu = 0; uint jiechen = 0; for(; i < ARRSIZE; ++i) { jiechen = jie_chen(i, status); if(status == 1) zhishu = zhi_shu(jiechen, i, status); if(status == 1) { a_res[i] = zhishu; } else { break; } } else { break; } } for(int j = 0; j < i; j++) { printf("%2u:%-20u", j, a_res[j]); if((j + 1) % 3 == 0) { printf("\n"); } } return 0; }
输出结果如下:
这结果对吗?
相关推荐
这些题目涵盖了计算机二级C语言考试中的多个核心概念和语法点,包括函数定义、文件操作、指针、数据类型、循环结构、条件判断、数组、内存管理等。下面将逐一解析这些知识点: 1. 函数参数:例如`fun(___1___ *std)...
总的来说,通过深入学习C语言、数据结构和操作系统,并利用题库进行练习,不仅可以提升理论知识,还能锻炼编程和问题解决能力,为后续的计算机科学学习打下坚实基础。在学习过程中,要注重理解概念,动手实践,多...
C语言练习题19.pdf 本资源是C语言练习题的第19份资源,旨在帮助程序员和开发者提高C语言编程能力。下面是该资源中的一些重要知识点: 1. 变量和数据类型:C语言中有多种数据类型,如整数、浮点数、字符、数组、...
这份名为“广工11-19年数据结构与C语言(831)考研试卷与题目解析.zip”的压缩包,包含了从2011年至2019年的全部真题,为考生提供了宝贵的复习资源。 一、数据结构篇 数据结构是计算机科学的基础,它研究如何组织...
数组是C语言中的一种数据结构,用于存储多个相同类型的数据。例如题目15,将一个整数的各个数位从低位到高位输出,需要使用数组来存储每个数位。 5. 结构体: 结构体是C语言中的一种复杂数据类型,用于存储多个...
根据给定文件的信息,我们可以总结出一系列与C语言相关的知识点,包括C语言的基本概念、语法特点、数据类型、数组操作以及函数使用等。下面将详细解释这些知识点。 ### C语言基础知识 1. **C语言的基本单位**:在...
8. 结构体:在C语言中,结构体是一种常用的数据结构,用于组织多个变量。结构体的成员可以通过结构体变量或指针来访问。 9. 函数指针:在C语言中,函数指针可以用于实现函数的间接调用。函数指针需要注意函数指针的...
1. **程序设计和C语言**:程序是由数据结构和算法组成的。程序定义了计算机执行的动作和顺序,而算法是解决问题的方法和步骤,具有有穷性、确定性、可执行性、至少0个输入和至少0个输出的特性。 2. **控制结构**:...
C语言练习题选择题解析 本资源为C语言练习题选择题,共包含21道选择题,每道题目都有明确的答案。本文将对每道题目的知识点进行详细的解析。 一、单项选择 第1题:下列字符序列中,可用作C标识符的一组字符序列是...
1. 数组操作:在C语言中,数组是一种重要的数据结构,用于存储同类型的数据集合。题目中涉及到数组的遍历、计算平均分、存储特定条件下的元素等,这要求对数组的基本操作有深入理解。 2. 函数设计:函数是C语言中...
数据结构与C语言程序设计是计算机科学中的基础且重要的课程,尤其对于北航991考试来说,这两方面的知识是考生必须掌握的核心内容。这个压缩包文件集合包含了历年北航991考试的真题以及相关复习资料,为备考者提供了...
### 数据结构与算法描述知识点详解 #### 一、前言 本书《数据结构与算法分析》(第三版,C++版本)由Clifford A. Shaffer撰写,是一本广泛应用于计算机科学教育领域的教材。作者Clifford A. Shaffer是弗吉尼亚理工...
根据给定的C语言基础练习题及其描述,我们可以总结出一系列重要的C语言知识点,这些知识点不仅对于在校大学生,而且对于所有初学者都是极其宝贵的。下面将详细解释这些知识点: ### 1. C语言标识符规则 C语言中的...
这些知识点覆盖了C语言的基础语法、控制结构、数据类型、运算符、函数调用、字符串处理和文件操作等多个方面,是C语言学习的重要组成部分。理解和掌握这些知识点对于C语言的专升本复习至关重要。
C语言中的选择结构是编程中非常基础且重要的概念,它包括条件判断语句(if...else)、switch语句以及相关的逻辑运算符。以下是对题目中各个问题的详细解答: 1. 非法的赋值语句:在C语言中,选项C `++(i+1)` 是非法...
1. **面向方面编程(AOP)在C语言中的实现**:探讨如何在C语言中引入面向方面的编程思想,以提高代码的可维护性和模块化。 2. **C语言在数字信号处理(DSP)中的应用**:研究如何利用C语言高效地编写 DSP 序列,...
通过这些练习,可以系统地学习C语言的基础知识,包括各种数据类型的转换、运算符的使用、位运算、控制结构以及基本的程序设计技巧。这些练习有助于加深对C语言核心概念的理解,并提高编程能力。
《C语言编程练习100题》是一份旨在帮助学习者深入理解和熟练掌握C语言编程技巧的资源。C语言作为计算机科学的基础语言之一,对于理解计算机底层运作原理以及培养编程思维具有重要作用。这份资料集包含了100道精心...
4. **代码优化**:C语言的特性允许直接操作内存,优化可能体现在更高效的数据结构设计,如使用数组代替链表,或者使用位运算来加速比较和交换。 5. **算法分析**:通过更细致的复杂度分析,找出算法中的瓶颈,并...
通过这些题目,我们可以复习C语言的基础知识,理解数据结构、算法、软件工程和数据库系统的基本概念,为C语言二级考试或其他相关IT认证做准备。学习这些知识将有助于构建扎实的编程基础,提升问题解决能力。