c语言double数组
Ⅰ c语言中可不可以定义double型的二维数组
原则上来说是可以世激信的,数组在定义时并没有限定数组元素的数据类型
二维数组又称为矩阵,本质上是以数组作为数组元素的数组。数组的定义举例:floata[3][4],b[5][10];定义a为3*4(3行4列)的数组,b为5*10(5行搜轮10列铅李)的数组。注意,不能写成float a[3,4],b[5,10];
综上所述,二维数组可以定义成double型
Ⅱ C语言中如何将double型数据转换为数组
思路是:
先将Double型的数字整数部分变为整型数字一一取到数组中去(用循环整除可以做到,比如double i=123.456,就可以先把整数部分用j=(int)i强制类型转换取出放入整型变量j中,再依次取到数组a中
(a[k++]=i%10;i/=10;)
这两句语句就可以做到(不过数字是倒序的,最后输出时要注意)。
再看小数部分,同理,但不用除法,而用乘法,先去除整数部分
(j=j-(int)j;)
再将小数部分不断的乘10取整,取一位去除一位,存入另一数组:
l=(int)(j*10);
b[k++]=l;
j=j*10-l;...直到j*10==0为止
这样就可以把j中的数按位取到了两个数组中,接下去只要将两数组合并到C数组中去,或者依次输出整数部分和小数部分,中间别忘加小数点,输出成字符在C语言里可以这样:
printf("%c",a[i]+'0');
printf(".");
printf("%c",b[i]+'0');
以上就是我的算法,请高手看了不要笑话,希望能给楼主带来启发。
Ⅲ c语言double型一维数组 初始化
double[10000] = {0.0}
这样初始化可以啊,后面9999个就全都是0.0了
怎么会有误差呢?
Ⅳ c语言中,如何取出double类型数的每一位到一个数组
1、直接用数转换到字符串的方法即可。sprintf(s,"%lf",a);s是字符数组,a是double。这样就把a写到s中了。
2、例程:
#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
char s[12];
double a=123456789876;
sprintf(s,"%lf",a);
printf("%s",s);
return 0;
}
1、在打开的ie浏览器窗口右上衡誉如方点击齿轮图标,咐启选择“Internet选项”,如下图所示:
Ⅳ c语言double类型数组输出的问题
double占8字节 对应的格式为%lf
float占4字节 对应的格式为%f
当两个格式用反时,会造成程序读取数据并赋值时,赋值给变量时字节信息错位,导致数据错误。
float 存储数据格式为:1位的符号位+8位的指数位+23位尾数
double存储数据格式为:1位的符号位+11位的指数位+52位尾数
因此,错位存储的数据,解释输出来就差别非常大了。
Ⅵ C语言,为什么double数组赋值给指针数组报错
类型不匹配,指针要用地址来赋值才对。应该写成:
*(pc+i)=c+i;
Ⅶ c语言,double类型的数组为什么不可以用数组名对数组进行整体输入输出
C语言中,用printf()输出数据时,只有字符串类型数据才可以通过数组名(数组首地址)将其中的数据完整的输出出来。因为,字符串有一个规定,必须以\0结尾,这样,程序,只需要判断是不是遇到\0而决定是否结束输蔽拿出。
可是,对于其它类型的数组,因为没有标识可供机器判定输出结束,所以,只提供数组首地址,机器不知道何时输出结束,也就无法完成对数组整体进行输出了。
关于输入数据,对于字符串类型,虽然是输入多个字符,只要是按了回车,系统就认为输入结束,这一堆字符都却只形成一个字符团并茄串,相当于只是输入了一个数据。
但,对于其它类型数组的输入,完整输入则表示要输入多个数据,因为机器无法判定数组的大小,不知道输入塌察到哪里算是数据输入结束,所以,无法根据数组名进行整体输入。