首页 考试吧论坛 Exam8视线 考试商城 网络课程 模拟考试 考友录 实用文档 求职招聘 论文下载
2011中考 | 2011高考 | 2012考研 | 考研培训 | 在职研 | 自学考试 | 成人高考 | 法律硕士 | MBA考试
MPA考试 | 中科院
四六级 | 职称英语 | 商务英语 | 公共英语 | 托福 | 雅思 | 专四专八 | 口译笔译 | 博思 | GRE GMAT
新概念英语 | 成人英语三级 | 申硕英语 | 攻硕英语 | 职称日语 | 日语学习 | 法语 | 德语 | 韩语
计算机等级考试 | 软件水平考试 | 职称计算机 | 微软认证 | 思科认证 | Oracle认证 | Linux认证
华为认证 | Java认证
公务员 | 报关员 | 银行从业资格 | 证券从业资格 | 期货从业资格 | 司法考试 | 法律顾问 | 导游资格
报检员 | 教师资格 | 社会工作者 | 外销员 | 国际商务师 | 跟单员 | 单证员 | 物流师 | 价格鉴证师
人力资源 | 管理咨询师考试 | 秘书资格 | 心理咨询师考试 | 出版专业资格 | 广告师职业水平
驾驶员 | 网络编辑
卫生资格 | 执业医师 | 执业药师 | 执业护士
会计从业资格考试会计证) | 经济师 | 会计职称 | 注册会计师 | 审计师 | 注册税务师
注册资产评估师 | 高级会计师 | ACCA | 统计师 | 精算师 | 理财规划师 | 国际内审师
一级建造师 | 二级建造师 | 造价工程师 | 造价员 | 咨询工程师 | 监理工程师 | 安全工程师
质量工程师 | 物业管理师 | 招标师 | 结构工程师 | 建筑师 | 房地产估价师 | 土地估价师 | 岩土师
设备监理师 | 房地产经纪人 | 投资项目管理师 | 土地登记代理人 | 环境影响评价师 | 环保工程师
城市规划师 | 公路监理师 | 公路造价师 | 安全评价师 | 电气工程师 | 注册测绘师 | 注册计量师
缤纷校园 | 实用文档 | 英语学习 | 作文大全 | 求职招聘 | 论文下载 | 访谈 | 游戏
您现在的位置: 考试吧(Exam8.com) > 软件水平考试 > 复习资料 > 软件设计师 > 正文

软件设计师试题疑难解答(2):选择排序

问题1
本程序从键盘输入N(0<N<100)个整数,计算并输出其中出现次数最多且数值最大的元素及其出现的次数;
    # include<stdio.h>
    # define N 100
    void main()   
 {     int a[N],n,i,j,ind,c1,c2;
      do{
     printf(“输入n(0<n<100);\n”);
    scanf(“%d”,&n);
    }while(n<=0|| n>99 );  空1
    printf(“输入数组元素:\n”);
    for(i=0;i<n;i++)
    scanf(“%d”,&a[i]);
    for(c2=I=0;I<n;I++)
    {
     for(c1=1,j=I+1;j<n;j++)
       if(a[j]==a[I]) c1=c1+1;  空2
    if (c1>c2 空三||c1==c2&&a[I]>a[ind]
    {
      c2==c1; ind=I;空四
    }
    }
    printf(“其中%d出现%d次\n”,a[ind], c2)空五;
    }
    在这道题目中我认为C1,为数组元素下标,用来追踪数组元素;C2为数组元素出现的次数;所以空2中C1加1;那空三如何解释呢??a[ind]为原来找到的最大数,所以ind=I;既然要打印出最大数据出现的次数,那为什么空5为C2,不是C1呢???
    解答:
      题目中C1是用来计算元素的出现次数的,如果出现了相同的则C1+1,直到最后一个元素。那么C2就是用来存储出现次数最多的元素出现的次数。所以空三的解释就是用C2来记录C1的最大值;
    a[ind]为原来找到的最大数,所以ind=I;,也正因为如此,最后打印出最大数据出现的次数是C2;   

    问题2
关于选择排序:下面的选择排序的算法:
    void ss_sort(int e[], int n)
    {   int i, j, k, t;
           for(i=0; i< n-1; i++) {
                  for(k=i, j=i+1; j<n; j++)
问题1
本程序从键盘输入N(0<N<100)个整数,计算并输出其中出现次数最多且数值最大的元素及其出现的次数;
    # include<stdio.h>
    # define N 100
    void main()   
 {     int a[N],n,i,j,ind,c1,c2;
      do{
     printf(“输入n(0<n<100);\n”);
    scanf(“%d”,&n);
    }while(n<=0|| n>99 );  空1
    printf(“输入数组元素:\n”);
    for(i=0;i<n;i++)
    scanf(“%d”,&a[i]);
    for(c2=I=0;I<n;I++)
    {
     for(c1=1,j=I+1;j<n;j++)
       if(a[j]==a[I]) c1=c1+1;  空2
    if (c1>c2 空三||c1==c2&&a[I]>a[ind]
    {
      c2==c1; ind=I;空四
    }
    }
    printf(“其中%d出现%d次\n”,a[ind], c2)空五;
    }
    在这道题目中我认为C1,为数组元素下标,用来追踪数组元素;C2为数组元素出现的次数;所以空2中C1加1;那空三如何解释呢??a[ind]为原来找到的最大数,所以ind=I;既然要打印出最大数据出现的次数,那为什么空5为C2,不是C1呢???
    解答:
      题目中C1是用来计算元素的出现次数的,如果出现了相同的则C1+1,直到最后一个元素。那么C2就是用来存储出现次数最多的元素出现的次数。所以空三的解释就是用C2来记录C1的最大值;
    a[ind]为原来找到的最大数,所以ind=I;,也正因为如此,最后打印出最大数据出现的次数是C2;   

    问题2
关于选择排序:下面的选择排序的算法:
    void ss_sort(int e[], int n)
    {   int i, j, k, t;
           for(i=0; i< n-1; i++) {
                  for(k=i, j=i+1; j<n; j++)
                         if(e[k]>e[j]) k=j;
                  if(k!=i) {
                         t=e[i]; e[i]=e[k]; e[k]=t;
                  }
           }
    }
    我在作题和理解算法的时候总是忘记了k=j;我觉得这好象没有意义,那去掉为什么不可以,能帮我解释k=j的含义吗??
    解答:
    首先这个语句是不能去掉的,因为所有排序的判断都需要它。
    if(e[k]>e[j]) k=j;的意思是如果有一个元素比e[k]小,那么就要把K的值更改为较小元素的下标,也就是j,更改过后就要判断
    if(k!=i)是否成立,如果K的值变化就要做元素的顺序调整,否则就不变,所以针对这个算法,建议你看一下专门的数据结构的排序算法,弄清楚原理后再理解;
     
    3.如何调试ASP页面?

  答:当ASP页面在运行出错时,虽然浏览器会报告一些简单的错误信息,但信息太简约,一般仅提示出现HTTP 500号错误,即服务器内部错误。为此,在调试时,可在IIS管理器中打开服务器端的ASP脚本调试功能,其打开方法为:
打开IIS管理器主目录配置应用程序调试,然后选中启用ASP服务器端脚本调试。
    4.ASP、PHP和JSP有什么区别?
  答:这三个都是用来开发动态网页的。彼此间的差异主要在于所使用的编程脚本不同,运行速度不同。ASP一般采用VBScript进行服务器端编程;PHP使用的是自身的脚本语言,很类似于C语言的语法,优点运行速度比ASP略快,支持跨平台运行;JSP的编程采用的是Java编程语言,运行速度很快,效率较快,支持跨平台运行。
文章搜索
软件水平考试栏目导航
版权声明:如果软件水平考试网所转载内容不慎侵犯了您的权益,请与我们联系800@exam8.com,我们将会及时处理。如转载本软件水平考试网内容,请注明出处。