c语言的问题,为什么输出是nan?
c语言的问题,为什么输出是nan?#include<stdio.h>#include<string.h>#include<math.h>inta=0;intA,B,C=0...
c语言的问题,为什么输出是nan?#include<stdio.h>
#include<string.h>
#include<math.h>
int a = 0;
int A,B,C= 0;
double info = 0;
char color[1000][1000] = {0};
char found[1000][1000] = {0};
char stroke[1000][1000] = {0};
char texture[1000][1000] = {0};
char navel[1000][1000] = {0};
char touch[1000][1000] = {0};
char good[1000][1000] = {0};
int main(void)
{
int i;
for(i = 0; ;i++)
{
printf("输入敲声元素第%d个,s结束:",i+1);
scanf("%s",stroke[i]);
if(strcmp(stroke[i],"s") == 0)
{
break;
}
}
for(i = 0; ;i++)
{
printf("输入纹理元素第%d个,s结束:",i+1);
scanf("%s",texture[i]);
if(strcmp(texture[i],"s") == 0)
{
break;
}
}
for(i = 0; ;i++)
{
printf("输入脐部元素第%d个,s结束:",i+1);
scanf("%s",navel[i]);
if(strcmp(navel[i],"s") == 0)
{
break;
}
}
for(i = 0; ;i++)
{
printf("输入触感元素第%d个,s结束:",i+1);
scanf("%s",touch[i]);
if(strcmp(touch[i],"s") == 0)
{
break;
}
}
for(i = 0; ;i++)
{
printf("输入好瓜元素第%d个,s结束:",i+1);
scanf("%s",good[i]);
if(strcmp(good[i],"s") == 0)
{
break;
}
else
a = a+1;
}
for(i = 0;i<=a-1;i++)
{
if(strcmp(good[i],"是") == 0)
A = A+1;
else
C = C+1;
}
info = -(A/a)*log(A/a)/log10(2)-C/a*log10(C/a)/log10(2);
printf(" %lf",info);
} 展开
#include<string.h>
#include<math.h>
int a = 0;
int A,B,C= 0;
double info = 0;
char color[1000][1000] = {0};
char found[1000][1000] = {0};
char stroke[1000][1000] = {0};
char texture[1000][1000] = {0};
char navel[1000][1000] = {0};
char touch[1000][1000] = {0};
char good[1000][1000] = {0};
int main(void)
{
int i;
for(i = 0; ;i++)
{
printf("输入敲声元素第%d个,s结束:",i+1);
scanf("%s",stroke[i]);
if(strcmp(stroke[i],"s") == 0)
{
break;
}
}
for(i = 0; ;i++)
{
printf("输入纹理元素第%d个,s结束:",i+1);
scanf("%s",texture[i]);
if(strcmp(texture[i],"s") == 0)
{
break;
}
}
for(i = 0; ;i++)
{
printf("输入脐部元素第%d个,s结束:",i+1);
scanf("%s",navel[i]);
if(strcmp(navel[i],"s") == 0)
{
break;
}
}
for(i = 0; ;i++)
{
printf("输入触感元素第%d个,s结束:",i+1);
scanf("%s",touch[i]);
if(strcmp(touch[i],"s") == 0)
{
break;
}
}
for(i = 0; ;i++)
{
printf("输入好瓜元素第%d个,s结束:",i+1);
scanf("%s",good[i]);
if(strcmp(good[i],"s") == 0)
{
break;
}
else
a = a+1;
}
for(i = 0;i<=a-1;i++)
{
if(strcmp(good[i],"是") == 0)
A = A+1;
else
C = C+1;
}
info = -(A/a)*log(A/a)/log10(2)-C/a*log10(C/a)/log10(2);
printf(" %lf",info);
} 展开
展开全部
NaN 的意思是 “Not a Number”, 不是一个数值,或无法表示的数值,例如溢出了, 负数求对数了,分母为0了。
用户可以加入一些打印语句,检查数据是否有错。
扩展资料:
C语言函数
C语言log()函数:返回x的自然对数(以e为底的对数)
C语言ldiv()函数:求两个数的商和余数(针对long类型)
C语言ceil()函数:求不小于x的最小整数(向上取整)
C语言floor()函数:求不大于x的最大整数(向下取整)
int iscntrl(int ch) 若ch是作废字符(0x7F)或普通控制字符(0x00-0x1F)
double cabs(struct complex znum) 返回复数znum的绝对值
参考资料来源:百度百科-c语言
参考资料来源:百度百科-C语言函数
展开全部
NaN 的意思是 “Not a Number”, 不是一个数值,或无法表示的数值,例如 溢出了, 负数求对数了,分母为0了。
你可以加入一些打印语句,检查数据是否有错。
再有 A/a 这种运算 是 整除 运算,不是浮点运算 ! 这是不是 自己想要的。
你可以加入一些打印语句,检查数据是否有错。
再有 A/a 这种运算 是 整除 运算,不是浮点运算 ! 这是不是 自己想要的。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Not a Number
我的错误是用 memset 对double数组进行赋值了。
我的错误是用 memset 对double数组进行赋值了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询