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