当前位置:文档之家› 2014年广工离散数学Anyview参考答案

2014年广工离散数学Anyview参考答案

2014年广工离散数学Anyview参考答案
2014年广工离散数学Anyview参考答案

广东工业大学离散数学Anyview习题答案

——更新于2014年12月作者Seasand2014 1.00①试设计一算法,

判断元素与集合之间的关系。

实现下列函数:

/**

* 判断元素与集合之间的关系。元素和集合之间的关系只有两种。

* @param elem:元素

* @param pA:集合

* @return: 如果elem ∈pA,则返回TRUE,否则返回FALSE

*/

Boolean IsInSet(SetElem elem, pSet pA){

//Add your code here

}

//1.00

Boolean IsInSet ( SetElem elem, pSet pA )

{

//Add your code here

SetElem * a = outToBuffer ( pA );

for ( ; *a != '\n'; a++ )

{

if ( elem == *a )

{

return true;

}

}

return false;

}

1.01③试设计一算法,

实现集合的并运算。

实现下列函数:

/**

* 进行两个集合的并运算

* @param pA:要进行并运算的集合

* @param pB:要进行并运算的集合

* @return: 将pA和pB进行并运算后得到的集合

*/

pSet SetUnion(pSet pA, pSet pB){

//Add your code here

}

//1.01

pSet SetUnion ( pSet pA, pSet pB )

{

SetElem * a = outToBuffer ( pA );

SetElem * b = outToBuffer ( pB );

pSet pC = createNullSet();

int i = 0;

for ( ; *b != '\n'; b++ )

{

directInsertSetElem ( pC ,*b );

}

for ( a = outToBuffer ( pA ); *a != '\n'; a++ )

{

if ( isInSet ( pB,*a ) != true )

{

directInsertSetElem ( pC ,*a );

}

}

return pC;

}

1.02②试设计一算法,

实现集合的交运算。

实现下列函数:

/**

* 进行两个集合的交运算

* @param pA:要进行交运算的集合

* @param pB:要进行交运算的集合

* @return: 将pA和pB进行交运算后得到的集合*/

pSet SetIntersection(pSet pA, pSet pB){

//Add your code here

}

//1.02

pSet SetIntersection ( pSet pA, pSet pB )

{

SetElem * a = outToBuffer ( pA );

SetElem * b = outToBuffer ( pB );

pSet pC = createNullSet();

for ( ; *b != '\n'; b++ )

{

if ( isInSet ( pA,*b ) == true )

{

directInsertSetElem ( pC ,*b );

}

}

return pC;

}

1.03②试设计一算法,

实现集合的差运算。

实现下列函数:

/**

* 进行两个集合的差运算

* @param pA:要进行差运算的集合,相当于A - B中的A

* @param pB:要进行差运算的集合,相当于A - B中的B

* @return: 将pA和pB进行差运算后得到的集合

*/

pSet SetSubtraction(pSet pA, pSet pB){

//Add your code here

}

//1.03

pSet SetSubtraction ( pSet pA, pSet pB )

{

SetElem * a = outToBuffer ( pA );

SetElem * b = outToBuffer ( pB );

pSet pC = createNullSet();

for ( ; *a != '\n'; a++ )

{

if ( isInSet ( pB,*a ) == true ) continue;

directInsertSetElem ( pC ,*a );

}

return pC;

}

1.04②试设计一算法,

实现集合的求补集运算。

实现下列函数:

/**

* 进行集合的求补集运算。

* @param pA:要进行求补集运算的集合

* @param pI:全集

* @return: 返回pA相对于pI的补集。注意:有可能存在pA不是PI的子集的情况,* 在这种情况下pA的补集不存在,应当返回NULL

*/

pSet SetComplement(pSet pA, pSet pI){

//Add your code here

}

//1.04

pSet SetComplement ( pSet pA, pSet pI )

{

SetElem * a = outToBuffer ( pA );

SetElem * i = outToBuffer ( pI );

pSet pC = createNullSet();

int b = 0, k = 0;

for ( ; *i != '\n'; i++ )

{

if ( isInSet ( pA,*i ) == true )

{

b++;

continue;

}

directInsertSetElem ( pC ,*i );

}

for ( ; *a != '\n'; a++ )

{

if ( isInSet ( pI,*a ) == true )

{

continue;

}

k++;

directInsertSetElem ( pC ,*i );

}

if ( ( b == 0&&isNullSet ( pA ) != true ) || ( b != 0&&k != 0 ) ) return NULL;

if ( isNullSet ( pA ) == true&&isNullSet ( pI ) != true ) return pI;

else return pC;

}

1.05②试设计一算法,

实现集合的对称差运算。

实现下列函数:

/**

* 进行集合的对称差运算。

* @param pA:需要进行对称差运算的集合

* @param pB:需要进行对称差运算的集合

* @return: 返回pA与pB进行对称差运算后得到的集合。

*/

pSet SetSysmmetricDifference(pSet pA, pSet pB){

//Add your code here

}

//1.05

pSet SetSysmmetricDifference ( pSet pA, pSet pB )

{

//Add your code here

pSet pS;

pS=createNullSet();

SetElem *pAElems;

SetElem *pBElems;

pAElems=outToBuffer ( pA );

pBElems=outToBuffer ( pB );

while ( *pAElems!='\n' )

{

if ( !isInSet ( pB,*pAElems ) )

{

directInsertSetElem ( pS,*pAElems );

}

pAElems++;

}

while ( *pBElems!='\n' )

{

if ( !isInSet ( pA,*pBElems ) )

{

directInsertSetElem ( pS,*pBElems );

}

pBElems++;

}

return pS;

}

1.06③试设计一算法,

判断两个集合之间的包含关系。

实现下列函数:

/**

* 判断两个集合之间的包含关系。规定集合之间的包含关系为:* 真包含,被真包含于,相等。

* @param pA:需要进行包含关系判断的集合

* @param pB:需要进行包含关系判断的集合

* @return: 如果pA真包含pB,返回REALINCLUDING;

* 如果pA被真包含于pB,返回REALINCLUDED;

* 如果pA等于pB,返回EQUAL;

* 对于其它情况,返回NOT_INCLUSIVE。

*/

SetRelationshipStatus SetRelationship(pSet pA, pSet pB){

//Add your code here

}

//1.06

SetRelationshipStatus SetRelationship ( pSet pA, pSet pB )

{

//Add your code here

pSet pS;

pS=createNullSet();

SetElem *pAElems;

SetElem *pBElems;

pAElems=outToBuffer ( pA );

pBElems=outToBuffer ( pB );

pS=pB;

if ( isNullSet ( pA ) &&!isNullSet ( pB ) ) return REALINCLUDED;

if ( !isNullSet ( pA ) &&isNullSet ( pB ) ) return REALINCLUDING;

if ( isNullSet ( pA ) &&isNullSet ( pB ) ) return EQUAL;

if ( !isNullSet ( pA ) &&!isNullSet ( pB ) )

{

while ( *pAElems!='\n' )

{

if ( isInSet ( pS,*pAElems ) ) pAElems++;

else

{

while ( *pBElems!='\n' )

{

if ( isInSet ( pA,*pBElems ) ) pBElems++;

else return NOT_INCLUSIVE;

if ( *pBElems=='\n' ) return REALINCLUDING;

}

}

}

if ( *pAElems=='\n' )

{

while ( *pBElems!='\n' ) if ( isInSet ( pA,*pBElems ) ) pBElems++;

else return REALINCLUDED;

if ( *pBElems=='\n' ) return EQUAL;

}

}

}

1.07⑤试设计一个非递归算法,

实现集合的求幂集运算。

实现下列函数:

/**

* 求一个集合的幂集。

* @param pA:需要进行幂集的集合

* @return: 返回pA的幂集

*/

pSetFamily PowerSet(pSet pA){

//Add your code here

}

//1.07

pSet miji ( pSet pB,pSet pC )

{

SetElem *pBElems;

SetElem *pCElems;

pSet pS;

pS=createNullSet();

pBElems=outToBuffer ( pB );

pCElems=outToBuffer ( pC );

while ( *pBElems!='\n' )

{

directInsertSetElem ( pS,*pBElems );

pBElems++;

}

while ( *pCElems!='\n' )

{

if ( !isInSet ( pB,*pCElems ) )

{

directInsertSetElem ( pS,*pCElems );

}

++pCElems;

}

return pS;

}

pFamilyOfSet PowerSet ( pSet pA )

{

//Add your code here

int i;

pSet pI=createNullSet();

pFamilyOfSet pF=createNullFamilyOfSet();

SetElem *pBElems=outToBuffer ( pA ); insertToFamilyOfSet ( pF,pI );

if ( isNullSet ( pA ) ==FALSE )

while ( *pBElems!='\n' )

{

pSet pK=createNullSet();

directInsertSetElem ( pK,*pBElems );

pSet *pS=outFamilyOfSetToBuffer ( pF );

for ( i=0; * ( pS+i ) !=NULL; i++ )

insertToFamilyOfSet ( pF,miji ( pK,* ( pS+i ) ) );

pBElems++;

}

return pF;

}

1.08④试设计一个递归算法,

实现集合的求幂集运算。

实现下列函数:

/**

* 求一个集合的幂集。

* @param pA:需要进行幂集的集合

* @return: 返回pA的幂集

*/

pFamilyOfSet PowerSet(pSet pA){

//Add your code here

}

//1.08

pSet miji ( pSet pB,pSet pC )

{

SetElem *pBElems;

SetElem *pCElems;

pSet pS;

pS=createNullSet();

pBElems=outToBuffer ( pB );

pCElems=outToBuffer ( pC );

while ( *pBElems!='\n' )

{

directInsertSetElem ( pS,*pBElems );

pBElems++;

}

while ( *pCElems!='\n' )

{

if ( !isInSet ( pB,*pCElems ) )

{

directInsertSetElem ( pS,*pCElems );

}

++pCElems;

}

return pS;

}

pFamilyOfSet PowerSet ( pSet pA )

{

//Add your code here

int i;

pSet pI=createNullSet();

pFamilyOfSet pF=createNullFamilyOfSet();

SetElem *pBElems=outToBuffer ( pA ); insertToFamilyOfSet ( pF,pI );

if ( isNullSet ( pA ) ==FALSE )

while ( *pBElems!='\n' )

{

pSet pK=createNullSet();

directInsertSetElem ( pK,*pBElems );

pSet *pS=outFamilyOfSetToBuffer ( pF );

for ( i=0; * ( pS+i ) !=NULL; i++ )

insertToFamilyOfSet ( pF,miji ( pK,* ( pS+i ) ) );

pBElems++;

}

return pF;

}

3.01⑤试设计一个非递归算法,

验证一个表达式是不是命题公式(statement formula)。

实现下列函数:

/**

* 判断一个表达式是不是命题公式。

* @param pFormula: 要进行判断的表达式。该表达式的最后一个元素为“#”,而且规定* '#'仅用于指示该表达式的结尾,并不属于表达式的一部分。

* @return: 如果pFormula是命题公式,返回TRUE;否则返回FALSE。

*/

Boolean IsStatementFormula(pStatementFormula pFormula){

//Add your code here

}

Boolean IsStatementFormula(pStatementFormula pFormula){ //Add your code here StatementFormulaSymbles preS,currS,nextS;

int leftNum = 0,rightNum = 0;

preS = getCurrentSymbleType(pFormula);

switch(preS){

case Exception:return false;

case Conjunction:

case Disjunction:

case Implication:

case Equivalence:

case LeftParenthesis:leftNum++;break;

case RightParenthesis:

case EndOfFormula:return true; } nextPos(pFormula); currS = getCurrentSymbleType(pFormula);

switch(currS){

case LeftParenthesis:leftNum++;break;

case RightParenthesis:rightNum++;break;

case PropositionalVariable:

if(preS == PropositionalVariable)

return false; }

while (nextS != EndOfFormula){

nextPos(pFormula);

nextS = getCurrentSymbleType(pFormula);

if(nextS == LeftParenthesis) leftNum++;

if(nextS == RightParenthesis) rightNum++;

if(preS == Exception||currS == Exception||nextS == Exception)

return false;

if(currS == PropositionalVariable)

if(nextS == PropositionalVariable||preS == PropositionalVariable)

return false;

if(currS == Conjunction||currS == Disjunction||currS == Implication||currS == Equivalence)

if((preS != PropositionalVariable && preS != RightParenthesis) || (nextS != PropositionalVariable && nextS != LeftParenthesis && nextS != Negation))

return false;

if(nextS == Negation)

if(currS == PropositionalVariable||currS == RightParenthesis)

return false;

preS = currS;

currS = nextS; }

if(leftNum != rightNum)

return false;

return true; }

3.02⑤试设计一个递归算法,

验证一个表达式是不是命题公式(statement formula)。

实现下列函数:

/**

* 判断一个表达式是不是命题公式。

* @param pFormula: 要进行判断的表达式。该表达式的最后一个元素为“#”,而且规定

* '#'仅用于指示该表达式的结尾,并不属于表达式的一部分。

* @return: 如果pFormula是命题公式,返回TRUE;否则返回FALSE。

*/

Boolean IsStatementFormula(pStatementFormula pFormula){

//Add your code here

}

Boolean Function(int leftNum,int rightNum,StatementFormulaSymbles preS,StatementFormulaSymbles currS,StatementFormulaSymbles nextS,pStatementFormula pFormula)

{

nextPos(pFormula);//解释同上题所示

nextS = getCurrentSymbleType(pFormula);

if(nextS == LeftParenthesis)

leftNum++;

if(nextS == RightParenthesis)

rightNum++;

if(preS == Exception||currS == Exception||nextS == Exception)

return false;

if(currS == PropositionalVariable)

if(nextS == PropositionalVariable||preS == PropositionalVariable)

return false;

if(currS == Conjunction||currS == Disjunction||currS == Implication||currS == Equivalence) if((preS != PropositionalVariable && preS != RightParenthesis) || (nextS != PropositionalVariable && nextS != LeftParenthesis && nextS != Negation))

return false;

if(nextS == Negation)

if(currS == PropositionalVariable||currS == RightParenthesis)

return false;

preS = currS;

currS = nextS;

if(nextS != EndOfFormula)

{

return Function(leftNum,rightNum,preS,currS,nextS,pFormula);

}

if(leftNum != rightNum)

return false;

return true;

}

Boolean IsStatementFormula(pStatementFormula pFormula){

//Add your code here

StatementFormulaSymbles preS,currS,nextS;

/int leftNum = 0,rightNum = 0;

preS = getCurrentSymbleType(pFormula);

switch(preS)

{

case Exception:return false;//若取得了公式外的字符,则不是合法的命题公式case Conjunction:return false;

case Disjunction:return false;

case Implication:return false;

case Equivalence:return false;

case LeftParenthesis:leftNum++;break;//若为左括号,则leftNum的值自增一case RightParenthesis:return false;

case EndOfFormula:return true;//若命题公式只有结束符号‘#’,则为合法的命题公式

}

nextPos(pFormula);//指示器指向下一个字符

currS = getCurrentSymbleType(pFormula);

switch(currS)

{

case LeftParenthesis:leftNum++;break;//若为左括号,则leftNum的值自增一case RightParenthesis:rightNum++;break;//若为有括号,则RightNum的值自增一

case PropositionalVariable:

if(preS == PropositionalVariable)//当currS为命题变元时,若preS也为命题变元return false;

}

return Function(leftNum,rightNum,preS,currS,nextS,pFormula); //返回值的真假,同时调用函数Function }

6.01③试设计一算法,

实现集合的卡氏积运算。

实现下列函数:

/**

* 进行两个集合的卡氏积运算

* @param pA:要进行卡氏积运算的集合

* @param pB:要进行卡氏积运算的集合

* @return: 将pA和pB进行卡氏积运算后得到的集合

*/

pCartersianSet CartesianProduct(pOriginalSet pA, pOriginalSet pB)

{

//Add your code here

}

CH06 EX01

pCartersianSet CartesianProduct(pOriginalSet pA, pOriginalSet pB)

{

pOriginalSetElem pX=NULL;

pOriginalSetElem pY=NULL;

pOrderedCouple pOrder=NULL;

pCartersianSet pCarter=createNullCartersianSet(); //创建空的卡氏积集合

if(!isNullOriginalSet(pA) && !isNullOriginalSet(pB)) { //判断集合是否为空

resetOriginalSet(pA); //使A集合指针指向第一个元素

while(!isEndOfOriginalSet(pA)){

pX=getCurrentOriginalSetElem(pA); //取得A集合当前指针指向的元素

resetOriginalSet(pB); //使B集合指针指向第一个元素

while(!isEndOfOriginalSet(pB)){

pY=getCurrentOriginalSetElem(pB); //取得B集合当前指针指向的元素

pOrder=createOrderedCouple(pX,pY); //构造序偶对

OrderedCoupleInsertToCartersianSet(pCarter,pOrder); //将序偶插入到卡氏积集合

nextOriginalSetPos(pB); //指针后移

}

nextOriginalSetPos(pA); //指针后移

}

}

return pCarter;

}

6.02②试设计一算法,

给定集合A、集合B和集合C,判断集合C是否为A到B的一个二元关系。

实现下列函数:

/**

* 给定集合A、集合B和集合C,判断集合C是否为A到B的一个二元关系。

* @param pA:集合A

* @param pB:集合B

* @param pC:集合C

* @return: 如果集合C是A到B的一个二元关系,则返回true,否则返回false。

*/

boolean isBinaryRelation(pOriginalSet pA, pOriginalSet pB, pCartersianSet pC)

{

//Add your code here

}

CH06 EX02

boolean isBinaryRelation(pOriginalSet pA, pOriginalSet pB, pCartersianSet pC)

{

pOriginalSetElem pX=NULL;

pOriginalSetElem pY=NULL;

pOrderedCouple pZ=NULL;

pOrderedCouple pOrder=NULL;

pCartersianSet pCarter=createNullCartersianSet(); //创建空的卡氏积集合

boolean b=true;

if(!isNullOriginalSet(pA) && !isNullOriginalSet(pB)) { //判断集合是否为空

resetOriginalSet(pA); //使A集合指针指向第一个元素

while(!isEndOfOriginalSet(pA)){

pX=getCurrentOriginalSetElem(pA); //取得A集合当前指针指向的元素

resetOriginalSet(pB); //使B集合指针指向第一个元素

while(!isEndOfOriginalSet(pB)){

pY=getCurrentOriginalSetElem(pB); //取得B集合当前指针指向的元素

pOrder=createOrderedCouple(pX,pY); //构造序偶对

OrderedCoupleInsertToCartersianSet(pCarter,pOrder); //将序偶插入到卡氏积集合

nextOriginalSetPos(pB); //指针后移

}

nextOriginalSetPos(pA); //指针后移

}

}

resetCartersianSet(pC); //使C集合指针指向第一个元素

while(!isNullCartersianSet(pC) && !isEndOfCartersianSet(pC)){

pZ=getCurrentCartersianSetElem(pC); //取得C集合当前指针指向的元素

b=isInCartersianSet(pCarter,pZ); //判断序偶是否在pCArter集合中

if(b==false) break;

nextCartersianSetPos(pC); //指针后移

}

return b;

}

6.03②试设计一算法,求集合A上的恒等关系。

实现下列函数:

/**

* 给定集合A,求集合A上的恒等关系。

* @param pSet:原始集合

* @return: 集合A上的恒等关系。

*/

pCartersianSet IdentityRelation(pOriginalSet pSet)

{

//Add your code here

}

CH06 EX03

pCartersianSet IdentityRelation(pOriginalSet pSet)

{

pOriginalSetElem pX=NULL;

pOrderedCouple pOrder=NULL;

pCartersianSet pCarter=createNullCartersianSet(); //创建空的卡氏积集合

if(!isNullOriginalSet(pSet)) { //判断集合是否为空

resetOriginalSet(pSet); //使集合指针指向第一个元素

while(!isEndOfOriginalSet(pSet)){

pX=getCurrentOriginalSetElem(pSet); //取得集合当前指针指向的元素

pOrder=createOrderedCouple(pX,pX); //构造序偶对

OrderedCoupleInsertToCartersianSet(pCarter,pOrder); //将序偶插入到卡氏积集合

nextOriginalSetPos(pSet); //指针后移

}

}

return pCarter;

}

6.04③试设计一算法,求两个卡氏积集合的复合运算。

实现下列函数:

/**

* 给定两个集合,求该两个集合的复合运算。

* @param pA:卡氏积集合

* @param pB:卡氏积集合

* @return: pA与pB的复合运算结果。

*/

pCartersianSet CompositeOperation(pCartersianSet pA, pCartersianSet pB)

{

//Add your code here

}

CH06 EX04

pCartersianSet CompositeOperation(pCartersianSet pA, pCartersianSet pB)

{

pOriginalSetElem pX;

pOriginalSetElem pY;

pOriginalSetElem pXX;

pOriginalSetElem pYY;

pOrderedCouple pOrderA=NULL;

pOrderedCouple pOrderB=NULL;

pOrderedCouple pOrder=NULL;

pCartersianSet pCarter=createNullCartersianSet(); //创建空的卡氏积集合

if(!isNullCartersianSet(pA) && !isNullCartersianSet(pB))

{

resetCartersianSet(pA); //使A集合指针指向第一个元素

while(!isEndOfCartersianSet(pA)){

pOrderA=getCurrentCartersianSetElem(pA); //取得A集合当前指针指向的元素

resetCartersianSet(pB); //使B集合指针指向第一个元素

while(!isEndOfCartersianSet(pB)){

pOrderB=getCurrentCartersianSetElem(pB); //取得B集合当前指针指向的元素

pX=getFirstElemOfOrderedCouple(pOrderA); //取得A序偶的第一元

pY=getSecondElemOfOrderedCouple(pOrderA); //取得A序偶的第二元

pXX=getFirstElemOfOrderedCouple(pOrderB); //取得B序偶的第一元

pYY=getSecondElemOfOrderedCouple(pOrderB); //取得B序偶的第二元

if(pY==pXX)

{

pOrder=createOrderedCouple(pX,pYY); //构造序偶对

OrderedCoupleInsertToCartersianSet(pCarter,pOrder); //将序偶插入到卡氏积集合}

nextCartersianSetPos(pB); //指针后移

}

nextCartersianSetPos(pA); //指针后移

}

}

return pCarter;

}

6.05②试设计一算法,求一个关系的逆运算。

实现下列函数:

/**

* 求一个关系的逆运算。

* @param pA:卡氏积集合

* @return: pA的逆运算结果。

*/

pCartersianSet InverseOperation(pCartersianSet pA)

{

//Add your code here

}

CH06 EX05

pCartersianSet InverseOperation(pCartersianSet pA)

{

pOriginalSetElem pX;

pOriginalSetElem pY;

pOrderedCouple pOrderA=NULL;

pOrderedCouple pOrder=NULL;

pCartersianSet pCarter=createNullCartersianSet(); //创建空的卡氏积集合

if(!isNullCartersianSet(pA))

{

resetCartersianSet(pA); //使A集合指针指向第一个元素

while(!isEndOfCartersianSet(pA)){

pOrderA=getCurrentCartersianSetElem(pA); //取得A集合当前指针指向的元素

pX=getFirstElemOfOrderedCouple(pOrderA); //取得A序偶的第一元

pY=getSecondElemOfOrderedCouple(pOrderA); //取得A序偶的第二元

pOrder=createOrderedCouple(pY,pX); //构造序偶对

OrderedCoupleInsertToCartersianSet(pCarter,pOrder); //将序偶插入到卡氏积集合

nextCartersianSetPos(pA); //指针后移

}

}

return pCarter;

}

6.06④试设计一算法,对某集合A上的一个二元关系,求该关系的幂运算。

实现下列函数:

/**

* 求一个关系的幂运算。

* @param pA:原始集合

* @param pBinaryRelationR:pA上的关系R

* @param n:幂运算的次数,且n >= 0

* @return: pBinaryRelationSet的n次幂运算结果。

*/

pCartersianSet PowOperation(pOriginalSet pA,

pCartersianSet pBinaryRelationR,

int n)

{

//Add your code here

}

CH06 EX06

pCartersianSet CompositeOperation(pCartersianSet pA, pCartersianSet pB)

{ pCartersianSet pC=createNullCartersianSet();

for(resetCartersianSet(pA);!isEndOfCartersianSet(pA); nextCartersianSetPos(pA))

{

for(resetCartersianSet(pB);!isEndOfCartersianSet(pB); nextCartersianSetPos(pB))

if(isEqualOriginalSetElem(getSecondElemOfOrderedCouple(getCurrentCartersianSetElem(pA)),getFirstElemOfOrd eredCouple(getCurrentCartersianSetElem(pB))))

//获取A卡氏积中序偶的第二元//获取第二元

OrderedCoupleInsertToCartersianSet(pC,createOrderedCouple(getFirstElemOfOrderedCouple(getCurrentCartersia nSetElem(pA)),getSecondElemOfOrderedCouple(getCurrentCartersianSetElem(pB))) );

}

return pC;

}

pCartersianSet PowOperation(pOriginalSet pA,

pCartersianSet pBinaryRelationR,

int n)

{

pCartersianSet pC=createNullCartersianSet();

pC=copyCartersianSet(pBinaryRelationR);

if(n==0)

{

广工Anyview试题答案第八章

/********** 【习题】请编写函数func(char s[], char t[], int n), 由数组s中长度为n的字符序列构造其逆序列,并存储在数组t中。例如,由给定字符序列?慜敲求得逆序列?敜慲;由?瑜浩履 求得?敜業屴。 **********/ void func(char s[], char t[], int n) /* 数组s的前n个元素存放给定的字符序列, 数组t的前n个元素存放s的逆序列。 注意:数组的下标从0开始。 */ { for(int i=0;i

山东大学离散数学题库及答案

《离散数学》题库答案 一、选择或填空 (数理逻辑部分) 1、下列哪些公式为永真蕴含式?( ) (1)?Q=>Q →P (2)?Q=>P →Q (3)P=>P →Q (4)?P ∧(P ∨Q)=>?P 答:(1),(4) 2、下列公式中哪些就是永真式?( ) (1)(┐P ∧Q)→(Q →?R) (2)P →(Q →Q) (3)(P ∧Q)→P (4)P →(P ∨Q) 答:(2),(3),(4) 3、设有下列公式,请问哪几个就是永真蕴涵式?( ) (1)P=>P ∧Q (2) P ∧Q=>P (3) P ∧Q=>P ∨Q (4)P ∧(P →Q)=>Q (5) ?(P →Q)=>P (6) ?P ∧(P ∨Q)=>?P 答:(2),(3),(4),(5),(6) 4、公式?x((A(x)→B(y,x))∧ ?z C(y,z))→D(x)中,自由变元就是( ),约束变元就是( )。 答:x,y, x,z 5、判断下列语句就是不就是命题。若就是,给出命题的真值。( ) (1) 北京就是中华人民共与国的首都。 (2) 陕西师大就是一座工厂。 (3) 您喜欢唱歌不? (4) 若7+8>18,则三角形有4条边。 (5) 前进! (6) 给我一杯水吧! 答:(1) 就是,T (2) 就是,F (3) 不就是 (4) 就是,T (5) 不就是 (6) 不就是 6、命题“存在一些人就是大学生”的否定就是( ),而命题“所有的人都就是要死的”的否定就是( )。 答:所有人都不就是大学生,有些人不会死 7、设P:我生病,Q:我去学校,则下列命题可符号化为( )。 (1) 只有在生病时,我才不去学校 (2) 若我生病,则我不去学校 (3) 当且仅当我生病时,我才不去学校(4) 若我不生病,则我一定去学校 答:(1) P Q →? (2) Q P ?→ (3) Q P ?? (4)Q P →? 8、设个体域为整数集,则下列公式的意义就是( )。 (1) ?x ?y(x+y=0) (2) ?y ?x(x+y=0) 答:(1)对任一整数x 存在整数 y 满足x+y=0(2)存在整数y 对任一整数x 满足x+y=0 9、设全体域D 就是正整数集合,确定下列命题的真值: (1) ?x ?y (xy=y) ( ) (2) ?x ?y(x+y=y) ( ) (3) ?x ?y(x+y=x) ( ) (4) ?x ?y(y=2x) ( ) 答:(1) F (2) F (3)F (4)T 10、设谓词P(x):x 就是奇数,Q(x):x 就是偶数,谓词公式 ?x(P(x)∨Q(x))在哪个个体域中为真?( ) (1) 自然数 (2) 实数 (3) 复数 (4) (1)--(3)均成立 答:(1) 11、命题“2就是偶数或-3就是负数”的否定就是( )。 答:2不就是偶数且-3不就是负数。 12、永真式的否定就是( ) (1) 永真式 (2) 永假式 (3) 可满足式 (4) (1)--(3)均有可能

离散数学题库及答案

数理逻辑部分 选择、填空及判断 ?下列语句不就是命题的( A )。 (A) 您打算考硕士研究生不? (B) 太阳系以外的星球上有生物。 (C) 离散数学就是计算机系的一门必修课。 (D) 雪就是黑色的。 ?命题公式P→(P∨?P)的类型就是( A ) (A) 永真式(B) 矛盾式 (C) 非永真式的可满足式(D) 析取范式 ?A就是重言式,那么A的否定式就是( A ) A、矛盾式 B、重言式 C、可满足式 D、不能确定 ?以下命题公式中,为永假式的就是( C ) A、p→(p∨q∨r) B、(p→┐p)→┐p C、┐(q→q)∧p D、┐(q∨┐p)→(p∧┐p) ?命题公式P→Q的成假赋值就是( D ) A、 00,11 B、 00,01,11 C、10,11 D、 10 ?谓词公式) x xP∧ ?中,变元x就是 ( B ) R , ( x ) (y A、自由变元 B、既就是自由变元也就是约束变元 C、约束变元 D、既不就是自由变元也不就是约束变元 ?命题公式P→(Q∨?Q)的类型就是( A )。 (A) 永真式 (B) 矛盾式 (C) 非永真式的可满足式 (D) 析取范式 ?设B不含变元x,) x x→ ?等值于( A ) A ) ( (B A、B (D、B x xA→ x ?) ( ( ?C、B x∧ A ?) (B、) ?) xA→ x ) ( A x (B x∨ ?下列语句中就是真命题的就是( D )。 A.您就是杰克不? B.凡石头都可练成金。 C.如果2+2=4,那么雪就是黑的。 D.如果1+2=4,那么雪就是黑的。 ?从集合分类的角度瞧,命题公式可分为( B ) A、永真式、矛盾式 B、永真式、可满足式、矛盾式 C、可满足式、矛盾式 D、永真式、可满足式 ?命题公式﹁p∨﹁q等价于( D )。 A、﹁p∨q B、﹁(p∨q) C、﹁p∧q D、 p→﹁q ?一个公式在等价意义下,下面写法唯一的就是( D )。 (A) 范式 (B) 析取范式 (C) 合取范式 (D) 主析取范式 ?下列含有命题p,q,r的公式中,就是主析取范式的就是( D )。

离散数学答案屈婉玲版第二版 高等教育出版社课后答案

离散数学答案屈婉玲版 第二版高等教育出版社课后答案 第一章部分课后习题参考答案 16 设p、q的真值为0;r、s的真值为1,求下列各命题公式的真值。 (1)p∨(q∧r)?0∨(0∧1) ?0 (2)(pr)∧(﹁q∨s) ?(01)∧(1∨1) ?0∧1?0. (3)(?p∧?q∧r)(p∧q∧﹁r) ?(1∧1∧1) (0∧0∧0)?0 (4)(?r∧s)→(p∧?q) ?(0∧1)→(1∧0) ?0→0?1 17.判断下面一段论述是否为真:“π是无理数。并且,如果3是无理数,则2也是无理数。另外6能被2整除,6才能被4整除。” 答:p: π是无理数 1 q: 3是无理数0 r: 2是无理数 1 s:6能被2整除 1 t: 6能被4整除0 命题符号化为:p∧(q→r)∧(t→s)的真值为1,所以这一段的论述为真。19.用真值表判断下列公式的类型: (4)(p→q) →(?q→?p) (5)(p∧r) ?(?p∧?q) (6)((p→q) ∧(q→r)) →(p→r) 答:(4) p q p→q ?q ?p ?q→?p (p→q)→(?q→?p) 0 0 1 1 1 1 1 0 1 1 0 1 1 1 1 0 0 1 0 0 1 1 1 1 0 0 1 1 所以公式类型为永真式 (5)公式类型为可满足式(方法如上例) (6)公式类型为永真式(方法如上例)

第二章部分课后习题参考答案 3.用等值演算法判断下列公式的类型,对不是重言式的可满足式,再用真值表法求出成真赋值. (1) ?(p∧q→q) (2)(p→(p∨q))∨(p→r) (3)(p∨q)→(p∧r) 答:(2)(p→(p∨q))∨(p→r)?(?p∨(p∨q))∨(?p∨r)??p∨p∨q∨r?1所以公式类型为永真式 (3)P q r p∨q p∧r (p∨q)→(p∧r) 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 1 0 0 0 1 1 1 0 0 1 0 0 1 0 0 1 0 1 1 1 1 1 1 0 1 0 0 1 1 1 1 1 1 所以公式类型为可满足式 4.用等值演算法证明下面等值式: (2)(p→q)∧(p→r)?(p→(q∧r)) (4)(p∧?q)∨(?p∧q)?(p∨q) ∧?(p∧q) 证明(2)(p→q)∧(p→r) ? (?p∨q)∧(?p∨r) ??p∨(q∧r)) ?p→(q∧r) (4)(p∧?q)∨(?p∧q)?(p∨(?p∧q)) ∧(?q∨(?p∧q) ?(p∨?p)∧(p∨q)∧(?q∨?p) ∧(?q∨q) ?1∧(p∨q)∧?(p∧q)∧1 ?(p∨q)∧?(p∧q) 5.求下列公式的主析取范式与主合取范式,并求成真赋值 (1)(?p→q)→(?q∨p)

广工Anyview试题答案第五章

/********** 【习题5.002】编写程序,利用while语句在同一行中 逐个显示从1至5的数字,每个数字之前保留2个空格。**********/ void main() { int i=1; while(i<=5) { printf(" %d",i); i++; } } /********** 【习题5.003】编写程序,利用for语句在同一行中逐个 显示从1至6的数字,每个数字之前保留2个空格。 **********/ void main() { for(int i=1;i<=6;i++) printf(" %d",i);

} /********** 【习题5.004】n是系统给定的外部整型变量(不需要 自行定义)。编写程序,利用循环语句在同一行中逐 个显示从1至n的数字,每个数字之前保留2个空格。**********/ void main() { for(int i=1;i<=n;i++) printf(" %d",i) ; } /********** 【习题5.012】请仅在程序空缺处填入合适内容,使其 实现功能:依次输入5个整数,计算它们之和并输出。**********/ #include void main() { int i,sum=0,n; for (i=1;i<=5;i++)

{ scanf("%d",&n); sum=sum+n; } printf("sum = %d",sum); } /********** 【习题5.020】n和s是系统给定的外部整型变量(不需要 自行定义)。编写程序,求1到n之间的整数之和,并将结果存放到s。 **********/ void main() { for(int i=1;i<=n;i++) s+=i; } /********** 【习题5.022】n是系统给定的外部变量。编写程序, 求1到n间的自然数之和。请定义局部变量s存放求和 的结果,并用下列语句输出结果 printf("1+2+...+n=%d\n",s);

《离散数学》题库及答案

《离散数学》题库与答案 一、选择或填空 (数理逻辑部分) 1、下列哪些公式为永真蕴含式?( A ) (1)?Q=>Q→P (2)?Q=>P→Q (3)P=>P→Q (4)?P∧(P∨Q)=>?P 答:在第三章里面有公式(1)是附加律,(4)可以由第二章的蕴含等值式求出(注意与吸收律区别) 2、下列公式中哪些是永真式?( ) (1)(┐P∧Q)→(Q→?R) (2)P→(Q→Q) (3)(P∧Q)→P (4)P→(P∨Q) 答:(2),(3),(4)可用蕴含等值式证明 3、设有下列公式,请问哪几个是永真蕴涵式?( ) (1)P=>P∧Q (2) P∧Q=>P (3) P∧Q=>P∨Q (4)P∧(P→Q)=>Q (5) ?(P→Q)=>P (6) ?P∧(P∨Q)=>?P 答:(2)是第三章的化简律,(3)类似附加律,(4)是假言推理,(3),(5),(6)都可以用蕴含等值式来证明出是永真蕴含式 4、公式x((A(x)B(y,x))z C(y,z))D(x)中,自由变元是( ),约束变元是( )。 答:x,y, x,z(考察定义在公式x A和x A中,称x为指导变元,A为量词的辖域。在x A和x A的辖域中,x的所有出现都称为约束出现,即称x为约束变元,A中不是约束出现的其他变项则称为自由变元。于是A(x)、B(y,x)和z C(y,z)中y为自由变元,x和z为约束变元,在D(x)中x为自由变元) 5、判断下列语句是不是命题。若是,给出命题的真值。( )

(1)北京是中华人民共和国的首都。(2) 陕西师大是一座工厂。 (3) 你喜欢唱歌吗?(4) 若7+8>18,则三角形有4条边。 (5) 前进!(6) 给我一杯水吧! 答:(1)是,T (2)是,F (3)不是(4)是,T (5)不是(6)不是(命题必须满足是陈述句,不能是疑问句或者祈使句。) 6、命题“存在一些人是大学生”的否定是( ),而命题“所有的人都是要死的”的否定是( )。 答:所有人都不是大学生,有些人不会死(命题的否定就是把命题前提中的量词“换成存在,换成”,然后将命题的结论否定,“且变或或变且”) 7、设P:我生病,Q:我去学校,则下列命题可符号化为( )。 (1) 只有在生病时,我才不去学校(2) 若我生病,则我不去学校 (3) 当且仅当我生病时,我才不去学校(4) 若我不生病,则我一定去学校答:(1)P ?(注意“只有……才……”和“除非……就……”两者都是一个 Q→ 形式的)(2)Q P→ ? P? ?(4)Q P? →(3)Q 8、设个体域为整数集,则下列公式的意义是( )。 (1) x y(x+y=0) (2) y x(x+y=0) 答:(1)对任一整数x存在整数y满足x+y=0 (2)存在整数y对任一整数x满足x+y=0 9、设全体域D是正整数集合,确定下列命题的真值: (1) x y (xy=y) ( ) (2) x y(x+y=y) ( ) (3) x y(x+y=x) ( ) (4) x y(y=2x) ( ) 答:(1)F (反证法:假若存在,则(x- 1)*y=0 对所有的x都成立,显然这个与前提条件相矛盾) (2)F (同理)(3)F (同理)(4)T(对任一整数x存在整数y满足条件y=2x 很明显是正确的)

离散数学试题与答案

试卷二试题与参考答案 一、填空 1、 P:您努力,Q:您失败。 2、 “除非您努力,否则您将失败”符号化为 ; “虽然您努力了,但还就是失败了”符号化为 。 2、论域D={1,2},指定谓词P P (1,1) P (1,2) P (2,1) P (2,2) T T F F 则公式x ??真值为 。 3设A={2,3,4,5,6}上的二元关系}|,{是质数x y x y x R ∨<><=,则 R= (列举法)。 R 的关系矩阵M R = 。 4、设A={1,2,3},则A 上既不就是对称的又不就是反对称的关系 R= ;A 上既就是对称的又就是反对称的关系R= 。 5、设代数系统,其中A={a,b,c}, 则幺元就是 ;就是否有幂等 性 ;就是否有对称性 。 6、4阶群必就是 群或 群。 7、下面偏序格就是分配格的就是 。 8、n 个结点的无向完全图K n 的边数为 ,欧拉图的充要条件就是 。 * a b c a b c a b c b b c c c b

二、选择 1、在下述公式中就是重言式为( ) A.)()(Q P Q P ∨→∧; B.))()(()(P Q Q P Q P →∧→??; C.Q Q P ∧→?)(; D.)(Q P P ∨→。 2、命题公式 )()(P Q Q P ∨?→→? 中极小项的个数为( ),成真赋值的个数为 ( )。 A.0; B.1; C.2; D.3 。 3、设}}2,1{},1{,{Φ=S ,则 S 2 有( )个元素。 A.3; B.6; C.7; D.8 。 4、设} 3 ,2 ,1 {=S ,定义S S ?上的等价关系 },,,, | ,,,{c b d a S S d c S S b a d c b a R +=+?>∈∈<><><<=则由 R 产 生的S S ?上一个划分共有( )个分块。 A.4; B.5; C.6; D.9 。 5、设} 3 ,2 ,1 {=S ,S 上关系R 的关系图为 则R 具有( )性质。 A.自反性、对称性、传递性; B.反自反性、反对称性; C.反自反性、反对称性、传递性; D.自反性 。 6、设 ο,+ 为普通加法与乘法,则( )>+<ο,,S 就是域。 A.},,3|{Q b a b a x x S ∈+== B.},,2|{Z b a n x x S ∈== C.},12|{Z n n x x S ∈+== D.}0|{≥∧∈=x Z x x S = N 。 7、下面偏序集( )能构成格。

大学本科高等数学《离散数学》试题及答案

本科高等数学离散数学试题及答案 一、填空题 1设集合A,B,其中A={1,2,3}, B= {1,2}, 则A - B=____________________; ρ(A) - ρ(B)=__________________________ . 2. 设有限集合A, |A| = n, 则|ρ(A×A)| = __________________________. 3.设集合A = {a, b}, B = {1, 2}, 则从A到B的所有映射是__________________________ _____________, 其中双射的是__________________________. 4. 已知命题公式G=?(P→Q)∧R,则G的主析取范式是_______________________________ __________________________________________________________. 5.设G是完全二叉树,G有7个点,其中4个叶点,则G的总度数为__________,分枝点数为________________. 6设A、B为两个集合, A= {1,2,4}, B = {3,4}, 则从A?B=_________________________; A?B=_________________________;A-B=_____________________ . 7. 设R是集合A上的等价关系,则R所具有的关系的三个特性是______________________, ________________________, _______________________________. 8. 设命题公式G=?(P→(Q∧R)),则使公式G为真的解释有__________________________,_____________________________, __________________________. 9. 设集合A={1,2,3,4}, A上的关系R1 = {(1,4),(2,3),(3,2)}, R1 = {(2,1),(3,2),(4,3)}, 则 R1?R2 = ________________________,R2?R1 =____________________________, R12 =________________________. 10. 设有限集A, B,|A| = m, |B| = n, 则| |ρ(A?B)| = _____________________________. 11设A,B,R是三个集合,其中R是实数集,A = {x | -1≤x≤1, x∈R}, B = {x | 0≤x < 2, x∈R},则A-B = __________________________ , B-A = __________________________ , A∩B = __________________________ , . 13.设集合A={2, 3, 4, 5, 6},R是A上的整除,则R以集合形式(列举法)记为___________ _______________________________________________________. 14. 设一阶逻辑公式G = ?xP(x)→?xQ(x),则G的前束范式是__________________________ _____. 15.设G是具有8个顶点的树,则G中增加_________条边才能把G变成完全图。

2016最新广工anyview数据结构答案

【题目】若两棵二叉树T1和T2皆为空,或者皆不空且T1的左、右子树和T2的左、右子树分别相似,则称二叉树T1和T2相似。试编写算法,判别给定两棵二叉树是否相似。 二叉链表类型定义: typedef struct BiTNode { TElemType data; struct BiTNode *lchild, *rchild; } BiTNode, *BiTree; **********/ Status Similar(BiTree T1, BiTree T2) /* 判断两棵二叉树是否相似的递归算法*/ { if(!T1&&!T2)//同为空时,两树相似 return TRUE;

else if(T1&&T1){ if(Similar(T1 -> lchild,T2 -> lchild) && Similar(T1 -> rchild,T2 -> rchild)) //两树都不为空时,判断左右子树是否相似 return TRUE; else return FALSE; }else//以上两种情况都不符合,就直接返回FALSE return FALSE; } /********** 【题目】编写递归算法,求对二叉树T先序遍历时 第k个访问的结点的值。 二叉链表类型定义: typedef struct BiTNode {

TElemType data; struct BiTNode *lchild, *rchild; } BiTNode, *BiTree; **********/ TElemType PreOrder(BiTree T, int &k) { TElemType x='#'; if(T==NULL)return '#'; if(k==1)return T->data; if(T->lchild!=NULL) { k--; x=PreOrder(T->lchild,k); } if(T->rchild!=NULL&&x=='#')

中国石油大学大学《离散数学》期末复习题及答案

《离散数学》期末复习题 一、填空题(每空2分,共20分) 1、集合A上的偏序关系的三个性质是、 和。 2、一个集合的幂集是指。 3、集合A={b,c},B={a,b,c,d,e},则A?B= 。 4、集合A={1,2,3,4},B={1,3,5,7,9},则A?B= 。 5、若A是2元集合, 则2A有个元素。 6、集合A={1,2,3},A上的二元运算定义为:a* b = a和b两者的最大值,则 2*3= 。 7、设A={a, b,c,d }, 则∣A∣= 。 8、对实数的普通加法和乘法,是加法的幂等元, 是乘法的幂等元。 9、设a,b,c是阿贝尔群的元素,则-(a+b+c)= 。 10、一个图的哈密尔顿路是。 11、不能再分解的命题称为,至少包含一个联结词的命题称 为。 12、命题是。 13、如果p表示王强是一名大学生,则┐p表示。 14、与一个个体相关联的谓词叫做。 15、量词分两种:和。 16、设A、B为集合,如果集合A的元素都是集合B的元素,则称A是B 的。 17、集合上的三种特殊元是、 及。 18、设A={a, b},则ρ(A) 的四个元素分别 是:,,,。

19、代数系统是指由及其上的或 组成的系统。 20、设是代数系统,其中是*1,*2二元运算符,如果*1,*2都满 足、,并且*1和*2满足,则称是格。 21、集合A={a,b,c,d},B={b },则A \ B= 。 22、设A={1, 2}, 则∣A∣= 。 23、在有向图中,结点v的出度deg+(v)表示,入度deg-(v)表示 以。 24、一个图的欧拉回路是。 25、不含回路的连通图是。 26、不与任何结点相邻接的结点称为。 27、推理理论中的四个推理规则 是、、、。 二、判断题(每题2分,共20分) 1、空集是唯一的。 2、对任意的集合A,A包含A。 3、恒等关系不是对称的,也不是反对称的。 4、集合{1,2,3,3}和{1,2,2,3}是同一集合。 5、图G中,与顶点v关联的边数称为点v的度数,记作deg(v)。 6、在实数集上,普通加法和普通乘法不是可结合运算。 7、对于任何一命题公式,都存在与其等价的析取范式和合取范式。 8、设(A,*)是代数系统,a∈A,如果a*a=a,则称a为(A,*)的等幂元。 9、设f:A→B,g:B→C。若f,g都是双射,则gf不是双射。 10、无向图的邻接矩阵是对称阵。 11、一个集合不可以是另一个集合的元素。 12、映射也可以称为函数,是一种特殊的二元关系。 13、群中每个元素的逆元都不是惟一的。

离散数学试题及答案(1)

离散数学试题及答案 一、填空题 1设集合A,B,其中A={1,2,3}, B= {1,2}, 则A - B=____________________; ρ(A) - ρ(B)=__________________________ . 2. 设有限集合A, |A| = n, 则|ρ(A×A)| = __________________________. 3.设集合A = {a, b}, B = {1, 2}, 则从A到B的所有映射是__________________________ _____________, 其中双射的是__________________________. 4. 已知命题公式G=?(P→Q)∧R,则G的主析取范式是_______________________________ __________________________________________________________. 5.设G是完全二叉树,G有7个点,其中4个叶点,则G的总度数为__________,分枝点数为________________. 6设A、B为两个集合, A= {1,2,4}, B = {3,4}, 则从A?B=_________________________; A?B =_________________________;A-B=_____________________ . 7. 设R是集合A上的等价关系,则R所具有的关系的三个特性是______________________, ________________________, _______________________________. 8. 设命题公式G=?(P→(Q∧R)),则使公式G为真的解释有__________________________, _____________________________, __________________________. 9. 设集合A={1,2,3,4}, A上的关系R1 = {(1,4),(2,3),(3,2)}, R1 = {(2,1),(3,2),(4,3)}, 则 R1?R2 = ________________________,R2?R1 =____________________________, R12 =________________________. 10. 设有限集A, B,|A| = m, |B| = n, 则| |ρ(A?B)| = _____________________________. 11设A,B,R是三个集合,其中R是实数集,A = {x | -1≤x≤1, x∈R}, B = {x | 0≤x < 2, x∈R},则A-B = __________________________ , B-A = __________________________ , A∩B = __________________________ , . 13.设集合A={2, 3, 4, 5, 6},R是A上的整除,则R以集合形式(列举法)记为___________ _______________________________________________________. 14. 设一阶逻辑公式G = ?xP(x)→?xQ(x),则G的前束范式是__________________________ _____. 15.设G是具有8个顶点的树,则G中增加_________条边才能把G变成完全图。

广工Anyview试题答案-第五章

广工Anyview试题答案-第五章

/********** 【习题5.002】编写程序,利用while语句在同一行中 逐个显示从1至5的数字,每个数字之前保留2个空格。 **********/ void main() { int i=1; while(i<=5) { printf(" %d",i); i++; } } /********** 【习题5.003】编写程序,利用for语句在同一行中逐个 显示从1至6的数字,每个数字之前保留2个空格。 **********/

void main() { for(int i=1;i<=6;i++) printf(" %d",i); } /********** 【习题5.004】n是系统给定的外部整型变量(不需要 自行定义)。编写程序,利用循环语句在同一行中逐 个显示从1至n的数字,每个数字之前保留2个空格。 **********/ void main() { for(int i=1;i<=n;i++) printf(" %d",i) ; } /********** 【习题5.012】请仅在程序空缺处填入合适内容,

使其 实现功能:依次输入5个整数,计算它们之和并输出。 **********/ #include void main() { int i,sum=0,n; for (i=1;i<=5;i++) { scanf("%d",&n); sum=sum+n; } printf("sum = %d",sum); } /********** 【习题5.020】n和s是系统给定的外部整型变量(不需要 自行定义)。编写程序,求1到n之间的整数之和,并将结 果存放到s。 **********/

山东大学离散数学题库及答案

《离散数学》题库答案 一、选择或填空 (数理逻辑部分) 1、下列哪些公式为永真蕴含式?( ) (1)?Q=>Q →P (2)?Q=>P →Q (3)P=>P →Q (4)?P ∧(P ∨Q)=>?P 答:(1),(4) 2、下列公式中哪些是永真式?( ) (1)(┐P ∧Q)→(Q →?R) (2)P →(Q →Q) (3)(P ∧Q)→P (4)P →(P ∨Q) 答:(2),(3),(4) 3、设有下列公式,请问哪几个是永真蕴涵式?( ) (1)P=>P ∧Q (2) P ∧Q=>P (3) P ∧Q=>P ∨Q (4)P ∧(P →Q)=>Q (5) ?(P →Q)=>P (6) ?P ∧(P ∨Q)=>?P 答:(2),(3),(4),(5),(6) 4、公式 x((A(x) B(y ,x)) z C(y ,z))D(x)中,自由变元是( ),约束变元是( )。 答:x,y, x,z 5、判断下列语句是不是命题。若是,给出命题的真值。( ) (1) 北京是中华人民共和国的首都。 (2) 陕西师大是一座工厂。 (3) 你喜欢唱歌吗? (4) 若7+8>18,则三角形有4条边。 (5) 前进! (6) 给我一杯水吧! 答:(1) 是,T (2) 是,F (3) 不是 (4) 是,T (5) 不是 (6) 不是 6、命题“存在一些人是大学生”的否定是( ),而命题“所有的人都是要死的”的否定是( )。 答:所有人都不是大学生,有些人不会死 7、设P :我生病,Q :我去学校,则下列命题可符号化为( )。 (1) 只有在生病时,我才不去学校 (2) 若我生病,则我不去学校 (3) 当且仅当我生病时,我才不去学校(4) 若我不生病,则我一定去学校 答:(1) P Q →? (2) Q P ?→ (3) Q P ?? (4)Q P →? 8、设个体域为整数集,则下列公式的意义是( )。 (1) x y(x+y=0) (2) y x(x+y=0) 答:(1)对任一整数x 存在整数 y 满足x+y=0(2)存在整数y 对任一整数x 满足x+y=0 9、设全体域D 是正整数集合,确定下列命题的真值: (1) x y (xy=y) ( ) (2) x y(x+y=y) ( ) (3) x y(x+y=x) ( ) (4) x y(y=2x) ( ) 答:(1) F (2) F (3)F (4)T 10、设谓词P(x):x 是奇数,Q(x):x 是偶数,谓词公式 x(P(x)Q(x))在哪个个体域中为真?( ) (1) 自然数 (2) 实数 (3) 复数 (4) (1)--(3)均成立 答:(1) 11、命题“2是偶数或-3是负数”的否定是( )。 答:2不是偶数且-3不是负数。 12、永真式的否定是( ) (1) 永真式 (2) 永假式 (3) 可满足式 (4) (1)--(3)均有可能 答:(2) 13、公式(?P ∧Q)∨(?P ∧?Q)化简为( ),公式 Q →(P ∨(P ∧Q))可化简为( )。 答:?P ,Q →P

离散数学章练习题及答案

离散数学练习题 第一章 一.填空 1.公式) ∨ ? ∧的成真赋值为 01;10 ? p∧ ( (q ) p q 2.设p, r为真命题,q, s 为假命题,则复合命题) ? ? →的真值为 0 p→ ( q (s ) r 3.公式) ∨ ? p∧ q ?与共同的成真赋值为 01;10 ? ∧ p ( ) ) (q q p ( 4.设A为任意的公式,B为重言式,则B A∨的类型为重言式 5.设p, q均为命题,在不能同时为真条件下,p与q的排斥也可以写成p与q的相容或。 二.将下列命题符合化 1. 7不是无理数是不对的。 解:) ? ?,其中p: 7是无理数;或p,其中p: 7是无理数。 (p 2.小刘既不怕吃苦,又很爱钻研。 解:其中 ?p: 小刘怕吃苦,q:小刘很爱钻研 p∧ ,q 3.只有不怕困难,才能战胜困难。 解:p →,其中p: 怕困难,q: 战胜困难 q? 或q →,其中p: 怕困难, q: 战胜困难 p? 4.只要别人有困难,老王就帮助别人,除非困难解决了。 解:) → ?,其中p: 别人有困难,q:老王帮助别人,r: 困难解决了 p (q r→ 或:q ?) (,其中p:别人有困难,q: 老王帮助别人,r: 困难解决了r→ ∧ p 5.整数n是整数当且仅当n能被2整除。 解:q p?,其中p: 整数n是偶数,q: 整数n能被2整除 三、求复合命题的真值 P:2能整除5, q:旧金山是美国的首都, r:在中国一年分四季 1. )) p∧ → q ∨ r → ∧ ((q r ( ) ( ) p 2.r ?) → (( → (( ∨ ) ( )) p r p ∨ p q ? ∧ ? q∧ 解:p, q 为假命题,r为真命题 1.)) p∧ → q ∨的真值为0 r → ∧ ( ) ( ) ((q p r

广工Anyview试题答案第八章

/**********【习题】请编写函数func(char s[], char t[], int n), 由数组s中长度为n的字符序列构造其逆序列,并存储在数组t中。 例如,由给定字符序列s="are"求得逆序列t="era";由s="time" 求得t="emit"。 **********/ void func(char s[], char t[], int n) /* 数组s的前n个元素存放给定的字符序列, 数组t的前n个元素存放s的逆序列。 注意:数组的下标从0开始。 */ { for(int i=0;i

021046[离散数学(2)] 天津大学机考题库答案

1 / 15 离散数学(2)复习题 一、单项选择题 1、由集合运算定义,下列各式正确的有( A )。 A.X ?X ?Y B.X ?X ?Y C.X ?X ?Y D.Y ?X ?Y 2、设A B -=?,则有( C )。 A.B =? B.B ≠? C.A B ? D.A B ? 3、对任意的集合A 、全集U ,下列命题为假的是( D )。 A.A ?? =A , B.A ?U = U C.A ?? = ?, D.A ?U = U 4、集合A={1,2,…,10}上的关系R={|x+y=10,x ∈A,y ∈A},则R 的性质为( B )。 A.自反的 B.对称的 C.传递的,对称的 D.反自反的,传递的 5、设R 和S 是集合A 上的任意关系,则下列命题为真的是( A )。 A.若R 和S 是自反的,则R S 也是自反的 B.若R 和S 是反自反的,则R S 也是反自反的 C.若R 和S 是对称的,则R S 也是对称的 D.若R 和S 是传递的,则R S 也是传递的 6、设R 和S 是非空集合A 上的等价关系,则下面是A 上的等价关系的是( D )。 A.()A A R ?- B.S R ? C.S R - D.S R ? 7、设函数f :N→N (N 为自然数集),f(n)=n+1,下面四个命题为真的是( A )。 A.f 是单射 B.f 是满射 C.f 是双射的 D.f 非单射非满射 8、图G 和'G 的结点和边分别存在一一对应关系是G 和'G 同构的( B )。 A.充分条件 B.必要条件 C.充要条件 D.既不充分也不必要条件 9、平面图(如下)的三个面的次数分别是( A )。 A .11,3,4 B .11,3,5 C .12,3,6 D .10,4,3 10、G 是连通平面图,有5个顶点、6个面,则G 的边数为( D )。

广工Anyview试题答案 第四章

/********** 【习题4.011】关系表达式,if语句第一种形式 在以下程序空缺处填写合适内容,使得程序判断用户输入的字符是否为'@',若是则显示:"输入正确"。**********/ #include void main() { char c; scanf("%c",&c); if( c=='@' ) printf("输入正确\n"); } /********** 【习题4.012】关系表达式,if语句第一种形式 在以下程序空缺处填写合适内容,使得程序输入 一个整数赋给变量a,计算并输出a的绝对值a1。**********/ #include #include void main() { int a,a1; scanf("%d",&a); a1=abs(a); printf("|%d| = %d\n",a,a1); } /********** 【习题4.013】逻辑表达式,if语句第一种形式 在以下程序空缺处填写合适内容,使得程序对 输入的整型变量x的值进行判断,若变量x值为“假”时输出“False”。 **********/ #include int main( ) { int x; scanf("%d",&x); if(x==0 )

printf("False!\n"); return 0; } /********** 【习题4.016】if语句的子句为复合语句 在以下程序空缺处填写合适内容,使得程序将输入到变量a和b的两个整数按照由大到小的顺序输出。**********/ #include void main( ) { inta,b,t; scanf("%d %d",&a,&b); if(ab成立则将b的平方值赋予 c,否则将0赋予c;最后显示c的值。 **********/ void main() { intc,d; c=( else c=0; printf("c=%d\n",c); } /********** 【习题4.211】已知3个非零整数被分别输入到整型

离散数学习题答案(耿素云屈婉玲)

离散数学习题答案 习题二及答案:(P38) 5、求下列公式的主析取范式,并求成真赋值: (2)()()p q q r ?→∧∧ 解:原式()p q q r ?∨∧∧q r ?∧()p p q r ??∨∧∧ ()()p q r p q r ??∧∧∨∧∧37m m ?∨,此即公式的主析取范式, 所以成真赋值为011,111。 6、求下列公式的主合取范式,并求成假赋值: | (2)()()p q p r ∧∨?∨ 解:原式()()p p r p q r ?∨?∨∧?∨∨()p q r ??∨∨4M ?,此即公式的主合取范式, 所以成假赋值为100。 7、求下列公式的主析取范式,再用主析取范式求主合取范式: (1)()p q r ∧∨ 解:原式()(()())p q r r p p q q r ?∧∧?∨∨?∨∧?∨∧ ()()()()()()p q r p q r p q r p q r p q r p q r ?∧∧?∨∧∧∨?∧?∧∨?∧∧∨∧?∧∨∧∧ ()()()()()p q r p q r p q r p q r p q r ??∧?∧∨?∧∧∨∧?∧∨∧∧?∨∧∧ 13567m m m m m ?∨∨∨∨,此即主析取范式。 ; 主析取范式中没出现的极小项为0m ,2m ,4m ,所以主合取范式中含有三个极大项0M ,2M ,4M ,故原式的主合取范式024M M M ?∧∧。 9、用真值表法求下面公式的主析取范式: (1)()()p q p r ∨∨?∧ 解:公式的真值表如下:

, 由真值表可以看出成真赋值的情况有7种,此7种成真赋值所对应的极小项的析取即为主析取范式,故主析取范式 1234567m m m m m m m ?∨∨∨∨∨∨ 习题三及答案:(P52-54) 11、填充下面推理证明中没有写出的推理规则。 前提:,,,p q q r r s p ?∨?∨→ 结论:s 证明: ① p 前提引入 ② p q ?∨ 前提引入 — ③ q ①②析取三段论 ④ q r ?∨ 前提引入 ⑤ r ③④析取三段论 ⑥ r s → 前提引入 ⑦ s ⑤⑥假言推理 15、在自然推理系统P 中用附加前提法证明下面推理: (2)前提:()(),()p q r s s t u ∨→∧∨→ 结论:p u → 证明:用附加前提证明法。 ' ① p 附加前提引入 ② p q ∨ ①附加 ③ ()()p q r s ∨→∧ 前提引入

相关主题
文本预览
相关文档 最新文档