Ⅰ c语言。已经有一个字符类型的数组,存储了一个小数,如何将该小数存储在一个dobule变量中
试一试这个:
#include<stdio.h>
#include<string.h>
intmain(void)
{
charbuf[10]="-10.12";
doubledou;
floata;
strcat(buf,"");
sscanf(buf,"%lf",&dou);
printf("%lf",dou);
return0;
}
Ⅱ c语言中结构体数组后加一个点一个变量是为什么
如果info是一个结构体数组,
info[i]就是一个结构体
.是成员运算符
info[i].number就是访问结构体的一个成员number
Ⅲ C语言问题,数组后面加一个 . 再加一个变量是什么意思,如下:
那不是“数组后加一个.”而是数组元素后加一个.。这说明这个数组的元素是复杂类型(通常是自定义的结构、联合什么的),要用“.”来访问复杂类型内部的成员变量!
Ⅳ 在数组后面加小数点英文字母什么意思
C语言里" . "用来引用结构体成员,
注意"."是由结构体变量来引用的,如果是结构体指针变量,就要使用->
如struct A
{
int a;
}
A b;
A *c;
A d[5];
b.a;
c->a;
d[1].a;
两种引用方式要区分开!
Ⅳ C语言中,数组下标可以是小数吗
很有意思的问题,我曾经也想过这个问题。
很遗憾是不可以的,最根本原因是内存寻址必须是正整数。
假设有个整型数组:
int numberGroup = [ 20, 12, 9, 56, 17 ];
下标运算符(即中括号)通过给出的索引来找到指定元素,如:
numberGroup[ 2 ]
索引从 0 开始,因此 numberGroup[ 0 ] 是第一个数字,即“20”,而 numberGroup[ 2 ] 即第3个数字 “9”。
C 是这样找到 numberGroup[ 2 ] 的元素的:
1. 获得数组 numberGroup 的内存地址,假设为 0x3000,内存地址最小单位是字节。
2. int 类型长度目前采用4个字节,数据类型为寻址提供了必要的依据,要取索引为2的元素,偏移量 = 索引 * 类型长度,即 2 * 4,结果是8个字节的偏移量。
3. 因此,需将数组的起始地址 0x3000 加上 8,0x3008 是索引为 2 的元素的起始地址,通过读取 4 个字节(int 的长度)得到 numberGroup[ 2 ] 的元素最终的值。
所以,数组的下标不可以为小数。
Ⅵ C语言中如何保留一位小数点
可以通过printf函数中的输出格式说明符来实现保留一位小数点,要保留一位小数就用printf("%.1f",x),例子如程序中给出那样。
例子如下:
(6)c语言数组后面加一个小数点扩展阅读:
1.printf("%3.0f",floatNum):不保留小数
说明:%3.0f表明待打印的浮点数(floatNum)至少占3个字符宽,且不带小数点和小数部分,整数部分至少占3个位宽;
注意:这里的3只代表整数部分至少占3位,舍弃小数点和小数点后面的部分。
2.printf("%6.2f".floatNum):保留两位小数
说明:%6.2f 表明待打印的数(floatNum)至少占6个字符宽度(包括两位小数和一个小数点),且小数点后面有2位小数,小数点占一位,所以整数部分至少占3位。
注意:这里的6是待打印的数至少占据的字符宽度,包括两位小数(如果小数不够两位用0补位,例如100.1打印出来为100.10)和一个小数点,所以整数部分至少占3个字符宽度。
Ⅶ C语言中int后是一个带有小数的数字,那么它的值是多少
int(2.5+4.7)=7
在C语言中,取int()系统会强制将其他数据类型转换为int型,不会四舍五入直接舍去小数点后面的数字。
例如:
int b=10;//声明变量为int型并初始化赋值
printf("%f",b*5.0);//打印为浮点型的数字,强制将10*5.0结果为50.000000
float a=2.1314;//声明变量为实数型并初始化赋值
int c=(int) a;//声明变量c为int型并将a强制转换为int型所得值赋给c,即c=2
(7)c语言数组后面加一个小数点扩展阅读:
数据类型关键字:
short:修饰int,短整型数据,可省略被修饰的int。(K&R时期引入)
long:修饰int,长整型数据,可省略被修饰的int。(K&R时期引入)
long long:修饰int,超长整型数据,可省略被修饰的int。(C99标准新增)
signed:修饰整型数据,有符号数据类型。(C89标准新增)
unsigned:修饰整型数据,无符号数据类型。(K&R时期引入)
restrict:用于限定和约束指针,并表明指针是访问一个数据对象的唯一且初始的方式。(C99标准新增)
参考资料来源:网络-C语言
Ⅷ C语言如何在很多数中加一个小数点
利用整数的截断效果,将数据小数部分单取出来,乘以10后取整,与原数比较,若不等,则判断大于小数点后1位,依此计算直到相等为止。
在取整时进行小数点后1位四舍五入可部分防止二进制浮点数与真实数据间的舍入误差问题。
Ⅸ C语言关于小数存入数组函数编写
0.12345的小数点后第一位就是tab[0]=(int)(0.12345*10)
第二位就是tab[1]=((int)(0.12345*100)%10
第三位就是tab[2]=((int)(0.12345*1000)%10
以此类推
Ⅹ c语言:数组怎么可以改成可以带小数
如果我没有理解错题目意思的话,楼主是想输入10个数,并且利用指针的方法,让其中最大的数和最后一个数交换,最小的数和最前面一个数交换,然后输出这个数组。
其实你写的程序还是有几个问题的:
1.直接编译会出现提示:变量i没用到。
2.如楼上所说,因为p指向的不是个字符串(或者说字符数组),所以最后并不是'\0'结尾,不能以(p!='\0')作为判断条件,改成(p!=a+10)理论上是可以的。
3.我没看懂你的max, min, max_i, min_i的意思。用我的理解,你可能是想先扫一遍所有的数,把较大(小)的那个数存在max(min)里,较大(小)数的位置存在max_i(min_i)里,那么,max_i和min_i就应该和p的类型相同即指针型以便保存指向。
4.再来是swap过程,注意下交换顺序就ok
我修改的程序如下:
#include "stdio.h"
int main(void)
{
int a[10], max, min, *max_i, *min_i, *p=a;
min_i = a;
max_i = a+9;
for(;p<a+10;p++)
scanf("%d",p);
max = min = a[0];
p=a;
while(p!=a+10)
{
if(max<*p) {max=*p; max_i=p;}
if(min>*p) {min=*p; min_i=p;}
p++;
}
p=a;
*min_i=*p; *p=min;
p=a+9;
*max_i=*p; *p=max;
for(p=a;p<a+10;p++)
printf("%d ",*p);
return(0);
}
编程序前先分析下程序,然后制定好方案,分几步走,然后定义好变量,把每个变量的意义弄清楚。