软件设计师试题 疑难解答之二

互联网 | 编辑: 2006-04-10 00:00:00转载

  问题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编程语言,运行速度很快,效率较快,支持跨平台运行。

每日精选

点击查看更多

首页 手机 数码相机 笔记本 游戏 DIY硬件 硬件外设 办公中心 数字家电 平板电脑