Ⅰ c语言怎么定义无穷数组啊
内存有限,不可能无穷。最好限制在一定范围内,否则会浪费大量空间。考虑好在执行时最多需要多少,好的程序是不会浪费资源的,要合理利用空间。尽量不要不定义数组元素个数。从开始学编程就应该养成注重程序效率及资源问题,这样才能编个好程序。
Ⅱ c语言中怎么存储一个很大很大的数
C语言的系统类型,均有大小的限制。超出这个存储范围,就无法用该类型进行存储。所以需要根据数据规模,来选择存储类型。
当需要存储的数很大很大,超出所有可以类型可以表示的范围时,比如一个100位的10进制数,就需要用字符串的方式进行存储。这种存储方式,在算法中称为大数存储,对这种大数的计算,称为大数计算。
(2)c语言如何存储一个无穷位的数扩展阅读:
顺序结构:
顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。
例如:a = 3,b = 5,现交换a,b的值,这个问题就好像交换两个杯子里面的水,这当然要用到第三个杯子,假如第三个杯子是c,那么正确的程序为:c = a; a = b; b = c;执行结果是a = 5,b = c = 3如果改变其顺序。
写成:a = b; c = a; b =c;则执行结果就变成a = b = c = 5,不能达到预期的目的,初学者最容易犯这种错误。顺序结构可以独立使用构成一个简单的完整程序,常见的输入、计算、输出三步曲的程序就是顺序结构。
例如计算圆的面积,其程序的语句顺序就是输入圆的半径r,计算s = 3.14159*r*r,输出圆的面积s。不过大多数情况下顺序结构都是作为程序的一部分,与其它结构一起构成一个复杂的程序,例如分支结构中的复合语句、循环结构中的循环体等。
Ⅲ C语言如何存放大数(超过500位的) 越详细越好
超过500位的话,就必须用到高精度!
比如输入 一个数字 123
那么我们就用一个数组 a[501]={1,2,3};
如果是键盘输入:
scanf("%d",&n);//大数的位数
for(i=1;i<=n;i++) scanf("%1d",&a[i]);//读入每一位
这样就可以了!
Ⅳ c语言中怎么存储一个很大很大的数
C语言的系统类型,均有大小的限制。超出这个存储范围,就无法用该类型进行存储。
所以需要根据数据规模,来选择存储类型。
当需要存储的数很大很大,超出所有可以类型可以表示的范围时,比如一个100位的10进制数,就需要用字符串的方式进行存储。这种存储方式,在算法中称为大数存储,对这种大数的计算,称为大数计算。
以下是一个输入最多不超过1000位的10进制数,并将其输出的代码:
#include <stdio.h>
int main()
{
char s[1001];
scanf("%s",s);//输入数据
printf("%s\n",s);//输出读取到的大数。
return 0;
}
Ⅳ 怎么用C语言定义一个无限长的数组
C语言支持定义一个不显式定义长度的数组,即通过初始化数据来分配数组长度。
比如int a[] = {1,2,3,4,5}; 数组a的长度没有显式给出,由于有5个初始化数据,所以分配空间长度为5个int型。
但是无论如何定义,数组的长度都是固定的,在定义的时候就已经分配好空间,从这个角度上C语言无法定义无限长的数组。但很多实际应用中又事先无法确定数组的长度,对于这类情况,一般有两种方法可以使用。
1 由malloc和realloc两个函数,分配动态空间,随时按需改变数组的最大长度。
通过下面例子来理解该方法:
#include<stdio.h>
#include<stdlib.h>
intmain()
{
intsize=100;//最初为100个元素空间。
int*a=NULL;
inti=0;
a=malloc(sizeof(int)*size);
if(a==NULL)return-1;
while(scanf("%d",a+i)==1)//循环向a中输入数据,直到输入非数值字符为止
{
i++;
if(i==size)//数组空间不足
{
size*=2;//将数组空间扩大二倍,也可以改用size+=100;之类的操作,使size每次增加固定值。
a=realloc(a,size);//分配新的空间
if(a==NULL)
{
return-1;//这种情况下运行载体(如PC)内存不足以提供,中断程序。
}
}
}
if(a)free(a);//对申请的内存进行释放。
return0;
}
从以上程序可以看到,这种方式的原理就是每当数组空间不足时,利用函数realloc分配一段新的内存空间以增大数组长度。 直到占满所有剩余空间。
如果到占满所有空间还是无法存下数据,那么是硬件无法支持了。
所以这种方法可以做到软件意义上的无限大数组空间。
但是这种方法代码量比较大,而且需要频繁的进行内存的分配,如果实现知道数据的最大可能规模,那么可以用另一个方法。
2 事先知道数据的最大规模,比如统计一个班的分数时,一个班最多不超过百人,那么可以直接定义一个长度为100的数组,或者保险起见,定义一个长度为1000的数组,并对其操作。这样在操作范围内,这个就是一个“无限长”的数组了。
Ⅵ 在C语言中INT怎么表示无穷大(小)
int不能表达真正的无穷大或者无穷小。
在C语言中,int为整型类型,根据不同平台不同,有16位(2字节)和32位(4字节)两种,其中32位int为目前主流。
无论哪种int类型都有其表达范围,其中
16位int能表示的范围为-32768~+32767
32位int能表示的范围为-2147483648~+2147483647
从这个可以看出,int是无法表达真正的无穷大和无穷小的。
但数学中的无穷大和无穷小是指一种概念上存在实际上永远无法达到的数值,这样在编程中,就可以根据程序要求使用一些值来替代无穷大和无穷小的概念。
一般有如下两种情况:
1 程序中对处理的数据规模有限制,比如程序中输入的数值只在0~100之间,那么可以设定无穷大为101,而无穷小为-1。因为它们也是在使用中无法达到的值。
2 程序中对数据规模没有明确的规定。但是既然应用的int类型,就必须是int类型可以容纳的,否则出现溢出就可能导致错误。 这样,可以用int所能表示的最大值和最小值用做无穷大和无穷小。
比如在32位情况下,无穷小可以是-2147483648,无穷大是2147483647。
如此长的一段数据是很难记忆的,由计算机对整型数据的存储原理可以得知,这两个数值的二进制值分别为0x80000000和0x7FFFFFFF。
类似的在16位下,无穷大为0x7FFF,无穷小为0x8000。
Ⅶ 请问在C 语言中无限个整数怎么表示
用动态数组就可以
给你一个例子吧:
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
int main()
{
int *a;//动态数组声明时,先定义一个指针
int N,i,j,temp;
printf("请输入N值: ");
scanf("%d",&N);
a=(int *)malloc(N*sizeof(int));//给动态数组申请空间
printf("请输入%d个数: \n",N);
for(i=0;i<N;i++)
{
printf("%d : ",i+1);
fflush(stdin);
scanf("%d",&a[i]);//这里就和通常的数组一样使用了
}
//下面进行排序
for(i=0;i<N;i++)
for(j=0;j<N;j++)
if(a[i]<a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
printf("排序后的结果为: \n");
for(i=0;i<N;i++) printf("%d ",a[i]);
free(a);//动态数组使用完毕后要释放
getch();
return 1;
}
Ⅷ 如何用c语言显示小数点后无穷多位
没有哪门语言是可以的,c语言的双精度浮点型也是有位数限制的,你想计算机中的数据存储始终是一个固定值,所已无论存放的二进制数以何种编码方式存在都是一个固定值,而小数点后无穷多位这样的无理数只存在于逻辑层面,实际还是只能用浮点数去逼近的。
Ⅸ c语言中超大数如何存储
用数组,比如魔方的排列状态可以用个 unsigned long a[4]来存起来。