c4.5c语言

4.5 C语言 m=a>b为什么为真?

典型的错误!

是书上印错了。

应该是:

因第一个表达式 m=ab为假,所以被短路,第二个表达式就不计算了。

c4.5c语言

c语言程序设计的一道题,4.5那一题为什么是2不是1

你的问题应该是为什么是2不是3吧?

答案是else自动寻找上面离它最近的未配对的if进行配对,因此,else是和if(b0)配对的,而不是和if(ab)配对的,所以整个判断语句都没有执行,c的值没有变

C语言中%4.5f,中4.5是什么意思啊?

?:合在一起是个三目运算,表达式规范为:

e1

?

e2

:

e3

表示当e1为真是时,执行e2否则执行e3

如:

int

a=5,b=3,x

;

x=(ab)?a:b

;

结果为x=5

;

跪求C4.5算法,C语言的……

具体算法步骤如下; 1创建节点N 2如果训练集为空,在返回节点N标记为Failure 3如果训练集中的所有记录都属于同一个类别,则以该类别标记节点N 4如果候选属性为空,则返回N作为叶节点,标记为训练集中最普通的类; 5for each 候选属性 attribute_list 6if 候选属性是联系的then 7对该属性进行离散化 8选择候选属性attribute_list中具有最高信息增益的属性D 9标记节点N为属性D 10for each 属性D的一致值d 11由节点N长出一个条件为D=d的分支 12设s是训练集中D=d的训练样本的集合 13if s为空 14加上一个树叶,标记为训练集中最普通的类 15else加上一个有C4.5(R – {D},C,s)返回的点

C++代码你可以参考下

C4.5算法源代码(C++)

// C4.5_test.cpp : Defines the entry point for the console application.

//

#include “stdafx.h”

#include stdio.h

#include math.h

#include “malloc.h”

#include stdlib.h

const int MAX = 10;

int** iInput;

int i = 0;//列数

int j = 0;//行数

void build_tree(FILE *fp, int* iSamples, int* iAttribute,int ilevel);//输出规则

int choose_attribute(int* iSamples, int* iAttribute);//通过计算信息增益率选出test_attribute

double info(double dTrue,double dFalse);//计算期望信息

double entropy(double dTrue, double dFalse, double dAll);//求熵

double splitinfo(int* list,double dAll);

int check_samples(int *iSamples);//检查samples是否都在同一个类里

int check_ordinary(int *iSamples);//检查最普通的类

int check_attribute_null(int *iAttribute);//检查attribute是否为空

void get_attributes(int *iSamples,int *iAttributeValue,int iAttribute);

int _tmain(int argc, _TCHAR* argv[])

{

FILE *fp;

FILE *fp1;

char iGet;

int a = 0;

int b = 0;//a,b是循环变量

int* iSamples;

int* iAttribute;

fp = fopen(“c:\\input.txt”,”r”);

if (NULL == fp)

{

printf(“error\n”);

return 0;

}

iGet = getc(fp);

while ((‘\n’ != iGet)(EOF != iGet))

{

if (‘,’ == iGet)

{

i++;

}

iGet = getc(fp);

}

i++;

iAttribute = (int *)malloc(sizeof(int)*i);

for (int k = 0; ki; k++)

{

iAttribute[k] = (int)malloc(sizeof(int));

iAttribute[k] = 1;

}

while (EOF != iGet)

{

if (‘\n’ == iGet)

{

j++;

}

iGet = getc(fp);

}

j++;

iInput = (int **)malloc(sizeof(int*)*j);

iSamples = (int *)malloc(sizeof(int)*j);

for (a = 0;a j;a++)

{

iInput[a] = (int *)malloc(sizeof(int)*i);

iSamples[a] = (int)malloc(sizeof(int));

iSamples[a] = a;

}

a = 0;

fclose(fp);

fp=fopen(“c:\\input.txt”,”r”);

iGet = getc(fp);

while(EOF != iGet)

{

if ((‘,’ != iGet)(‘\n’ != iGet))

{

iInput[a][b] = iGet – 48;

b++;

}

if (b == i)

{

a++;

b = 0;

}

iGet = getc(fp);

}

fp1 = fopen(“d:\\output.txt”,”w”);

build_tree(fp1,iSamples,iAttribute,0);

fclose(fp);

return 0;

}

void build_tree(FILE * fp, int* iSamples, int* iAttribute,int level)//

{

int iTest_Attribute = 0;

int iAttributeValue[MAX];

int k = 0;

int l = 0;

int m = 0;

int *iSamples1;

for (k = 0; kMAX; k++)

{

iAttributeValue[k] = -1;

}

if (0 == check_samples(iSamples))

{

fprintf(fp,”result: %d\n”,iInput[iSamples[0]][i-1]);

return;

}

if (1 == check_attribute_null(iAttribute))

{

fprintf(fp,”result: %d\n”,check_ordinary(iSamples));

return;

}

iTest_Attribute = choose_attribute(iSamples,iAttribute);

iAttribute[iTest_Attribute] = -1;

get_attributes(iSamples,iAttributeValue,iTest_Attribute);

k = 0;

while ((-1 != iAttributeValue[k])(k MAX))

{

l = 0;

m = 0;

while ((-1 != iSamples[l])(l j))

{

if (iInput[iSamples[l]][iTest_Attribute] == iAttributeValue[k])

{

m++;

}

l++;

}

iSamples1 = (int *)malloc(sizeof(int)*(m+1));

l = 0;

m = 0;

while ((-1 != iSamples[l])(l j))

{

if (iInput[iSamples[l]][iTest_Attribute] == iAttributeValue[k])

{

iSamples1[m] = iSamples[l];

m++;

}

l++;

}

iSamples1[m] = -1;

if (-1 == iSamples1[0])

{

fprintf(fp,”result: %d\n”,check_ordinary(iSamples));

return;

}

fprintf(fp,”level%d: %d = %d\n”,level,iTest_Attribute,iAttributeValue[k]);

build_tree(fp,iSamples1,iAttribute,level+1);

k++;

}

}

int choose_attribute(int* iSamples, int* iAttribute)

{

int iTestAttribute = -1;

int k = 0;

int l = 0;

int m = 0;

int n = 0;

int iTrue = 0;

int iFalse = 0;

int iTrue1 = 0;

int iFalse1 = 0;

int iDepart[MAX];

int iRecord[MAX];

double dEntropy = 0.0;

double dGainratio = 0.0;

double test = 0.0;

for (k = 0;kMAX;k++)

{

iDepart[k] = -1;

iRecord[k] = 0;

}

k = 0;

while ((l!=2)(k(i – 1)))

{

if (iAttribute[k] == -1)

{

l++;

}

k++;

}

if (l == 1)

{

for (k = 0;k(k-1);k++)

{

if (iAttribute[k] == -1)

{

return iAttribute[k];

}

}

}

for (k = 0;k (i-1);k++)

{

l = 0;

iTrue = 0;

iFalse = 0;

if (iAttribute[k] != -1)

{

while ((-1 != iSamples[l])(l j))

{

if (0 == iInput[iSamples[l]][i-1])

{

iFalse++;

}

if (1 == iInput[iSamples[l]][i-1])

{

iTrue++;

}

l++;

}

for (n = 0;nl;n++)//计算该属性有多少不同的值并记录

{

m = 0;

while((iDepart[m]!=-1)(m!=MAX))

{

if (iInput[iSamples[n]][iAttribute[k]] == iDepart[m])

{

break;

}

m++;

}

if (-1 == iDepart[m])

{

iDepart[m] = iInput[iSamples[n]][iAttribute[k]];

}

}

while ((iDepart[m] != -1)(m!=MAX))

{

for (n = 0;nl;n++)

{

if (iInput[iSamples[n]][iAttribute[k]] == iDepart[m])

{

if (1 == iInput[iSamples[n]][i-1])

{

iTrue1++;

}

if (0 == iInput[iSamples[n]][i-1])

{

iFalse1++;

}

iRecord[m]++;

}

}

dEntropy += entropy((double)iTrue1,(double)iFalse1,(double)l);

iTrue1 = 0;

iFalse1 = 0;

m++;

}

double dSplitinfo = splitinfo(iRecord,(double)l);

if (-1 == iTestAttribute)

{

iTestAttribute = k;

dGainratio = (info((double)iTrue,(double)iFalse)-dEntropy)/dSplitinfo;

}

else

{

test = (info((double)iTrue,(double)iFalse)-dEntropy)/dSplitinfo;

if (dGainratio test)

{

iTestAttribute = k;

dGainratio = test;

}

}

}

}

return iTestAttribute;

}

double info(double dTrue,double dFalse)

{

double dInfo = 0.0;

dInfo = ((dTrue/(dTrue+dFalse))*(log(dTrue/(dTrue+dFalse))/log(2.0))+(dFalse/(dTrue+dFalse))*(log(dFalse/(dTrue+dFalse))/log(2.0)))*(-1);

return dInfo;

}

double entropy(double dTrue, double dFalse, double dAll)

{

double dEntropy = 0.0;

dEntropy = (dTrue + dFalse)*info(dTrue,dFalse)/dAll;

return dEntropy;

}

double splitinfo(int* list,double dAll)

{

int k = 0;

double dSplitinfo = 0.0;

while (0!=list[k])

{

dSplitinfo -= ((double)list[k]/(double)dAll)*(log((double)list[k]/(double)dAll));

k++;

}

return dSplitinfo;

}

int check_samples(int *iSamples)

{

int k = 0;

int b = 0;

while ((-1 != iSamples[k])(k j-1))

{

if (iInput[k][i-1] != iInput[k+1][i-1])

{

b = 1;

break;

}

k++;

}

return b;

}

int check_ordinary(int *iSamples)

{

int k = 0;

int iTrue = 0;

int iFalse = 0;

while ((-1 != iSamples[k])(k i))

{

if (0 == iInput[iSamples[k]][i-1])

{

iFalse++;

}

else

{

iTrue++;

}

k++;

}

if (iTrue = iFalse)

{

return 1;

}

else

{

return 0;

}

}

int check_attribute_null(int *iAttribute)

{

int k = 0;

while (k (i-1))

{

if (-1 != iAttribute[k])

{

return 0;

}

k++;

}

return 1;

}

void get_attributes(int *iSamples,int *iAttributeValue,int iAttribute)

{

int k = 0;

int l = 0;

while ((-1 != iSamples[k])(k j))

{

l = 0;

while (-1 != iAttributeValue[l])

{

if (iInput[iSamples[k]][iAttribute] == iAttributeValue[l])

{

break;

}

l++;

}

if (-1 == iAttributeValue[l])

{

iAttributeValue[l] = iInput[iSamples[k]][iAttribute];

}

k++;

}

}

求c语言解下面4.5,4.6,4.7

/*

求连个数的最大公约数和最小公倍数

*/

#include stdio.h

int main()

{

int m,n,a,b;

printf(“请输入两个数:\n”);

scanf(“%d%d”,a,b);

m = a;

n = b;

while( a != b )

{

if( a  b )

a = a – b;

else

b = b – a;

}

printf(“m,n的最大公约数是%d\n”,a);

printf(“m,n的最小公倍数是%d\n”,m*n/a);

}

#includestdio.h

#includestring.h

int main()

{

char a[50];

int i, p  = 0, q = 0, m = 0, n = 0;

printf(“请输入需要统计的字符串:”);

gets(a);

for(i = 0; a[i] != ‘\0’; i++)

{

if((a[i] = 65  a[i] = 90) || (a[i] = 97  a[i] = 122))

p++;

else if(a[i] == ‘ ‘)

q++;

else if(a[i] = 48  a[i] = 57)

m++;

else

n++;

}

printf(“英文字母个数: %d\n”,p);

printf(“空格个数    : %d\n”,q);

printf(“数字的个数  : %d\n”,m);

printf(“其它字符个数: %d\n”,n);

return 0;

}

#include stdio.h

int fac(int a);

int main()

{

int sum = 0;

int i;

for(i = 1; i = 20; i++)

{

sum += fac(i);

}

printf(“sum = %d\n”,sum);

return 0;

}

int fac(int a)

{

int j;

if( a  0 )

printf(“a  0,输入错误”);

else if( a == 0 || a== 1)

j = 1;

else

j = fac(a – 1)*a;

return j;

}

C语言,%c和%数字c, 例 “a=%c,%4.5c”,a,a 输出的两个a有什么区别

你好, 

按照你写的格式输出, 编译是要报错的。

输出结果:a,    a

%4.5  表示占位符4个, 保留小数位5个。

修改程序如下:修改为浮点数

可以看到。  %4.2f

4 :  表示占位4个, 如果超过四个就原样输出。 

.2 : 表示保留小数点后两位。

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月28日 14:52:16
下一篇 2024年3月28日 15:00:28

相关推荐

  • c语言改写模式,c语言实现修改功能

    c语言程序修改? 1、这个程序有4个错误,我都加粗了,第一个是m没有赋初值,第二个是while表达式中的ch=getchar()需要括号括起来,第三个是m=m*10+ch-0中的0也需要用单引号括起来,第四个是第2个while中为m!=0。 2、define容易造成误会,因为不符合一般的编程习惯,false 0, true 1;scanf放在你的那个地方是达…

    2024年5月23日
    3900
  • c语言控制代码的换码序列,c语言交换代码

    求C语言编程大神解答一下下面这个编程代码? k==5,用5去除125余0,所以r=125%5中r为0。由于!0为1,所以执行while循环体:先打印出5(k的值),再n=n/k==125/5=25;由于251则再打印出*号。这一循环结果输出是5*。 下面是我的代码,三个函数分别对应三个问题。 在实现基本要求的前提下,拓展了可以从键盘输入的功能,以下为各题代码…

    2024年5月23日
    5600
  • c语言扫描io脚状态,c语言端口扫描

    求51单片机的上升沿和下降沿C语言检测程序列子,端口就是普通IO口。 上升沿触发是当信号有上升沿时的开关动作,当电位由低变高而触发输出变化的就叫上升沿触发。也就是当测到的信号电位是从低到高也就是上升时就触发,叫做上升沿触发。 单片机怎么计算1s内下降沿的个数的C语言程序或者计算两个下降沿的时间(检测脉冲频率)计算1s内下降沿的个数方法是,一个定时器设置定时1…

    2024年5月23日
    4400
  • c语言mallloc使用的简单介绍

    C语言中使用malloc必须加#includemallo.h? 1、在C语言中使用malloc函数进行动态内存分配。malloc的全称是memory allocation,中文叫动态内存分配。原型:extern void malloc(unsigned int num_bytes);功能:分配长度为num_bytes字节的内存块。 2、你可以看一下C语言那本…

    2024年5月23日
    4400
  • c语言三位小数,C语言三位小数

    怎样用C++语言输出精确到小数点后三位的数? 1、用C++语言输出精确到小数点后三位的数,可以参考下面给出的代码:coutsetiosflags(ios:fixed)setprecision(3)。其中 setiosflags中set是设置的意思。ios是iostream的缩写,即输入输出流。flags是标志的意思。 2、要精确到小数点后若干位,则数据类型为…

    2024年5月23日
    7300
  • c语言21点游戏,二十一点游戏代码c语言

    如何使用C语言编写简单小游戏? 1、数学知识:长方形的面积S=a*b 长方形周长L=2*(a+b)其中a b分别为长方形的宽和高。算法分析:长方形面积及周长均依赖于宽和高,所以先要输入宽高值,然后根据公式计算,输出结果即可。 2、/*也不知道你是什么级别的,我是一个新手,刚接触编程语言,以下是我自己变得一个小程序,在所有c语言的编译器(vc++0、turbo…

    2024年5月23日
    6400
  • c语言当中的null,C语言当中的符号

    C/C++中,NULL和null的区别是什么? nul 和 null要看编译器,不同的编译器有所区别。 所以C或者C++中都使用一个特殊定义NULL表示无效值,其本质就是未定义具体数据类型的0值。 null是是什么都没有的意思。在java中表示空对象。 本意是“空的;元素只有零的”意思。计算机中通常表示空值,无结果,或是空集合。\x0d\x0a在ASCII码…

    2024年5月23日
    4500
  • 包含c语言对txt文件命名的词条

    如何在C语言编程里面修改源文件名字 如果你是在WINDOWS的话,简单了,随便用个编辑器,比如记事本,然后写c源程序,保存到你想要保存的位置。如果你在DOS下,可以用edit,写好以后,按alt键,选择文件菜单,然后保存。 用open打开文件,注意操作模式使用“修改”或者“添加” 用write或者fprintf向文件中写入你的内容。 用close关闭文件。 …

    2024年5月23日
    4900
  • 学c语言编程,学c语言编程用什么软件

    编程开发必须要学C语言吗? 1、要学习。编程开发的学习内容主要包括c语言、python和c+语言。C语言作为一种简单灵活的高级编程语言,它是一个面向过程的语言,一般是作为计算机专业的基础入门语言课程。 2、C语言。对于刚接触编程的人来说,先学习C语言是非常重要的。C语言可以说是是计算机编程语言的鼻祖,其他的编程语言几乎全是由C语言变化衍生出来的。 3、不需要…

    2024年5月23日
    3500
  • c语言用string定义字符串,c语言中用string类型来处理字符串类型

    C++怎样定义定义字符串 1、第一是字符数组来表示字符串。用下面的语句声明:char a[10];C语言中字符数组与字符串的唯一区别是字符串末尾有一个结束符\0,而字符数组不需要。 2、在C中定义字符串有下列几种形式:字符串常量,char数组,char指针 字符串常量 即:位于一对双括号中的任何字符。双引号里的字符加上编译器自动提供的结束标志\0字符,作为 …

    2024年5月23日
    4300

发表回复

登录后才能评论



关注微信