or 

一.C语言试题

  一个无向连通图G点上的哈密尔顿(Hamiltion)回路是指从图G上的某个顶点出发,经过图上所有其他顶点一次且仅一次,最后回到该顶点的路劲。一种求解无向图上哈密尔顿回路算法的基础实现如下:

  假设图G存在一个从顶点V0出发的哈密尔顿回路V1——V2——V3——...——Vn-1——V0。算法从顶点V0出发,访问该顶点的一个未被访问的邻接顶点V1,接着从顶点V1出发,访问V1一个未被访问的邻接顶点V2,..。;对顶点Vi,重复进行以下操作:访问Vi的一个未被访问的邻接接点Vi+1;若Vi的所有邻接顶点均已被访问,则返回到顶点Vi-1,考虑Vi-1的下一个未被访问的邻接顶点,仍记为Vi;知道找到一条哈密尔顿回路或者找不到哈密尔顿回路,算法结束。

  【C代码】

  下面是算法的C语言实现。

  (1)常量和变量说明

    n :图G中的顶点数

    c[][]:图G的邻接矩阵

    k:统计变量,当期已经访问的定点数为k+1

    x[k]:第k个访问的顶点编号,从0开始

    visited[x[k]]:第k个顶点的访问标志,0表示未访问,1表示已访问

  (2)C程序

 #include <stido.h>
#include <stidb.h>
#define MAX 100 void Hamilton(int n,int x[MAX,int c[MAX][MAX]){
  in t ;
  in t visited[MAX];
  int k;
  /*初始化x数组和visited数组*/
  for(i=:i<n;i++){
    x[i]=;
    visited[i]=;
  }
  /*访问起始顶点*/
   k=0;
  (visited[0]=1);
  x[]=0;
18   k=k+1;
  /*访问其他顶点*/
20   while(k>=){
    x[k]=x[k]+;
    while(x[k]><n){
      if(visited[x[k]]==0) &&c[x-[k-]][x[k]=){/*邻接顶点x[k]未被访问过*/
        break;
      }else{
        x[k] = x[k] + 1;
      }
    }
    if(x[k]<n-&&visited[x[k]]==1){ /*找到一条哈密尔顿回路*/
      for(k=;k<n;k++){
        prinf(〝%d--〝,x[k] ; /*输出哈密尔顿回路*/
      }
      prinf(〝%d--〝,x[] ;
      return;
    }else if x[k]<n&&k<n-){/*设置当期顶点的访问标志,继续下一个顶点*/
      visited[x[k]]=1;
37       k=k+;
    }else{/*没有未被访问过的邻接顶点,回退到上一个顶点*/
      x[k]=;
      visited x[k]=;
      k=k-1;
    }
43   }

  【问题1】(10分)

    根据题干说明。填充C代码中的空(1)~(5).

    答案:代码中标注红色的即为答案!

  【问题2】(5分)

    根据题干说明和C代码,算法采用的设计策略为(6),该方法在遍历图的顶点时,采用的是(7)方法(深度优先或广度优先)。

    答案:

    6:回溯法

    7:深度优先

二.面向对象语言试题

  1.

  

  

  2.

  

  

  

三.备注

  面向对象程序设计五大原则:

  1单一职责原则:对一个类来说,应该仅有一个引起它变化的原因。

  2开放封闭原则:软件组成实体应该是可扩展的,但是不可修改的。

  3替换原则:子类应当可以替换父类并出现在父类能出现的任何地方。

  4依赖原则:在进行业务设计时,与特定业务有关的依赖关系应该尽量依赖接口和抽象类,而不是具体类。

  5接口分离原则:采用多个与特定客户类有关的接口比采用一个通用的涵盖多个业务方法的接口要好。

C语言程序试题的更多相关文章

  1. C语言程序猿必会的内存四区及经典面试题解析

    前言: 为啥叫C语言程序猿必会呢?因为特别重要,学习C语言不知道内存分区,对很多问题你很难解释,如经典的:传值传地址,前者不能改变实参,后者可以,知道为什么?还有经典面试题如下: #include & ...

  2. C语言面试题汇总之一

    C语言面试题汇总之一 1.static有什么用途?(请至少说明两种) l 限制变量的作用域: 设置变量的存储域. 2.引用和指针有什么区别? 引用必须被初始化,指针不必: 引用初始化以后不能被改变,指 ...

  3. 12个有趣的C语言面试题

    摘要:12个C语言面试题,涉及指针.进程.运算.结构体.函数.内存,看看你能做出几个! 1.gets()函数 问:请找出下面代码里的问题: #include<stdio.h> int ma ...

  4. c语言面试题之sizeof

    c语言面试题之sizeof */--> c语言面试题之sizeof Table of Contents 1. sizeof 1 sizeof sizeof是c语言中判断数据类型或者表达式的长度符 ...

  5. C语言面试题(嵌入式开发方向,附答案及点评)

    整理自C语言面试题(嵌入式开发方向,附答案及点评) 预处理器(Preprocessor) 1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SEC ...

  6. 转 C语言面试题大汇总

    转 C语言面试题大汇总,个人觉得还是比较全地!!! \主 题:   C语言面试题大汇总,个人觉得还是比较全地!!!  作 者:   free131 (白日?做梦!)   信 誉 值:   100    ...

  7. 12个有趣的c语言面试题&nbsp;

    1.gets()函数 问:请找出下面代码里的问题: #include int main(void) { char buff[10]; memset(buff,0,sizeof(buff)); gets ...

  8. 嵌入式开发—C语言面试题

    嵌入式开发—C语言面试题 源地址:http://blog.csdn.net/xdx2ct1314/article/details/7358929   1. 用预处理指令#define 声明一个常数,用 ...

  9. 第一个C语言程序

    从第一个C语言程序了解C语言 了解关键字 了解函数 注释 C语言的执行流程 标识符 C语言的学习重难点 从第一个C语言程序了解C语言 上图是一个在控制台上显示“Hello, World!”的C语言源代 ...

随机推荐

  1. C# Winform同时启动多个窗体类

    首先创建一个类,存放将要同时显示的窗体 using System; using System.Collections.Generic; using System.Linq; using System. ...

  2. Ubuntu16.04安装Anaconda (转)

    一. Anaconda下载 Anaconda 官方下载链接: https://www.continuum.io/downloads 根据自己的系统选择下载32位还是64位.   二. 进入下载目录 如 ...

  3. (转)Linux内核参数之arp_ignore和arp_announce

    原文:https://blog.csdn.net/ccy19910925/article/details/79960599 一.arp_ignore和arp_announce介绍 arp_ignore ...

  4. rsync排除多个文件实现同步

    首先创建exclude目录放入xx.list排除文件. [root@localhost tmp]# cat /exclude/a_exclude.list a.txt lai ———————————— ...

  5. Java_反射demo

    package com.cnit.reflect; import java.lang.reflect.Field; import java.lang.reflect.Method; public cl ...

  6. Docker数据卷容器备份、恢复

    1.备份数据卷容器 使用数据卷来备份数据,通过指定本地的一个文件路径,对应到容器中的路径,运行tar命令将重要的文件打包备份. $ cd /home/xm6f/dev $ docker run --v ...

  7. 逆向知识之CS辅助/外挂专题.2.实现CS1.6透视原理

    逆向知识之CS辅助/外挂专题.2.实现CS1.6透视原理 一丶透视简介 我们涉及到FPS游戏.免不了说透视.自瞄什么的. 在CS1.6中. 有OpenGl.也有D3D. 透视的方法很多. gl透视(也 ...

  8. [深度学习]CNN--卷积神经网络中用1*1 卷积有什么作用

    1*1卷积过滤器 和正常的过滤器一样,唯一不同的是它的大小是1*1,没有考虑在前一层局部信息之间的关系.最早出现在 Network In Network的论文中 ,使用1*1卷积是想加深加宽网络结构 ...

  9. 使用GitHub搭建个人博客

    博客已经从博客园慢慢搬到GitHub  上,可能在博客园上显示不是很规整,可以移步到另外的一个上面看 Blog 两边博客同时更新. 欢迎各位star 和 follower 搭建过程 在搭建博客时候也踩 ...

  10. Django学习(5)优雅地分页展示网页

    在我们平时浏览网页时,经常会遇到网页里条目很多的情形,这时就会用到分页展示的功能.那么,在Django中,是如何实现网页分类的功能的呢?答案是Paginator类. 本次分享讲具体展示如何利用Djan ...