`

练习:数据结构C语言描述(1_19)

 
阅读更多

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;
}

 

 

输出结果如下:



 这结果对吗?

  • 大小: 56.3 KB
  • 大小: 37.4 KB
分享到:
评论

相关推荐

    计算机二级C语言题库找题目录.pdf

    这些题目涵盖了计算机二级C语言考试中的多个核心概念和语法点,包括函数定义、文件操作、指针、数据类型、循环结构、条件判断、数组、内存管理等。下面将逐一解析这些知识点: 1. 函数参数:例如`fun(___1___ *std)...

    c语言_数据结构_操作系统-题库

    总的来说,通过深入学习C语言、数据结构和操作系统,并利用题库进行练习,不仅可以提升理论知识,还能锻炼编程和问题解决能力,为后续的计算机科学学习打下坚实基础。在学习过程中,要注重理解概念,动手实践,多...

    C语言练习题19.pdf

    C语言练习题19.pdf 本资源是C语言练习题的第19份资源,旨在帮助程序员和开发者提高C语言编程能力。下面是该资源中的一些重要知识点: 1. 变量和数据类型:C语言中有多种数据类型,如整数、浮点数、字符、数组、...

    广工11-19年数据结构与C语言(831)考研试卷与题目解析.zip

    这份名为“广工11-19年数据结构与C语言(831)考研试卷与题目解析.zip”的压缩包,包含了从2011年至2019年的全部真题,为考生提供了宝贵的复习资源。 一、数据结构篇 数据结构是计算机科学的基础,它研究如何组织...

    c语言实验练习题620.doc

    数组是C语言中的一种数据结构,用于存储多个相同类型的数据。例如题目15,将一个整数的各个数位从低位到高位输出,需要使用数组来存储每个数位。 5. 结构体: 结构体是C语言中的一种复杂数据类型,用于存储多个...

    C语言练习题及答案

    根据给定文件的信息,我们可以总结出一系列与C语言相关的知识点,包括C语言的基本概念、语法特点、数据类型、数组操作以及函数使用等。下面将详细解释这些知识点。 ### C语言基础知识 1. **C语言的基本单位**:在...

    C语言程序设计期末练习题及答案.doc

    8. 结构体:在C语言中,结构体是一种常用的数据结构,用于组织多个变量。结构体的成员可以通过结构体变量或指针来访问。 9. 函数指针:在C语言中,函数指针可以用于实现函数的间接调用。函数指针需要注意函数指针的...

    C语言教学课件:_19-1_上半部分习题.ppt

    1. **程序设计和C语言**:程序是由数据结构和算法组成的。程序定义了计算机执行的动作和顺序,而算法是解决问题的方法和步骤,具有有穷性、确定性、可执行性、至少0个输入和至少0个输出的特性。 2. **控制结构**:...

    C语言练习题-选择题(带答案).doc

    C语言练习题选择题解析 本资源为C语言练习题选择题,共包含21道选择题,每道题目都有明确的答案。本文将对每道题目的知识点进行详细的解析。 一、单项选择 第1题:下列字符序列中,可用作C标识符的一组字符序列是...

    c语言基础100题练习

    1. 数组操作:在C语言中,数组是一种重要的数据结构,用于存储同类型的数据集合。题目中涉及到数组的遍历、计算平均分、存储特定条件下的元素等,这要求对数组的基本操作有深入理解。 2. 函数设计:函数是C语言中...

    北航991数据结构与C语言程序设计历年真题集合

    数据结构与C语言程序设计是计算机科学中的基础且重要的课程,尤其对于北航991考试来说,这两方面的知识是考生必须掌握的核心内容。这个压缩包文件集合包含了历年北航991考试的真题以及相关复习资料,为备考者提供了...

    数据结构与算法描述英文版

    ### 数据结构与算法描述知识点详解 #### 一、前言 本书《数据结构与算法分析》(第三版,C++版本)由Clifford A. Shaffer撰写,是一本广泛应用于计算机科学教育领域的教材。作者Clifford A. Shaffer是弗吉尼亚理工...

    c语言基础练习题及答案

    根据给定的C语言基础练习题及其描述,我们可以总结出一系列重要的C语言知识点,这些知识点不仅对于在校大学生,而且对于所有初学者都是极其宝贵的。下面将详细解释这些知识点: ### 1. C语言标识符规则 C语言中的...

    C语言练习题和答案

    这些知识点覆盖了C语言的基础语法、控制结构、数据类型、运算符、函数调用、字符串处理和文件操作等多个方面,是C语言学习的重要组成部分。理解和掌握这些知识点对于C语言的专升本复习至关重要。

    c语言选择结构试题带答案.pdf

    C语言中的选择结构是编程中非常基础且重要的概念,它包括条件判断语句(if...else)、switch语句以及相关的逻辑运算符。以下是对题目中各个问题的详细解答: 1. 非法的赋值语句:在C语言中,选项C `++(i+1)` 是非法...

    关于C语言的毕业论文题目100个.docx

    1. **面向方面编程(AOP)在C语言中的实现**:探讨如何在C语言中引入面向方面的编程思想,以提高代码的可维护性和模块化。 2. **C语言在数字信号处理(DSP)中的应用**:研究如何利用C语言高效地编写 DSP 序列,...

    暑假C语言集训练习全集

    通过这些练习,可以系统地学习C语言的基础知识,包括各种数据类型的转换、运算符的使用、位运算、控制结构以及基本的程序设计技巧。这些练习有助于加深对C语言核心概念的理解,并提高编程能力。

    C语言编程练习100题

    《C语言编程练习100题》是一份旨在帮助学习者深入理解和熟练掌握C语言编程技巧的资源。C语言作为计算机科学的基础语言之一,对于理解计算机底层运作原理以及培养编程思维具有重要作用。这份资料集包含了100道精心...

    push_swap::card_file_box:push_swap @ 19-优化的堆栈排序

    4. **代码优化**:C语言的特性允许直接操作内存,优化可能体现在更高效的数据结构设计,如使用数组代替链表,或者使用位运算来加速比较和交换。 5. **算法分析**:通过更细致的复杂度分析,找出算法中的瓶颈,并...

    c语言基础练习题 word文档

    通过这些题目,我们可以复习C语言的基础知识,理解数据结构、算法、软件工程和数据库系统的基本概念,为C语言二级考试或其他相关IT认证做准备。学习这些知识将有助于构建扎实的编程基础,提升问题解决能力。

Global site tag (gtag.js) - Google Analytics