考试网 >> IT认证 >> 水平 >> 软件指导 >> 软件设计师试题疑难解答之二

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

发布时间:2006-06-28 05:10     点击:
分页:[1] 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] 2  下一页
版权申明:未经书面授权请勿转载本站信息!!作品版权归所属媒体与作者所有!!
发表评论: 匿名发表 用户名: 查看评论
您将承担一切因您的行为、言论而直接或间接导致的民事或刑事法律责任
留言板管理人员有权保留或删除其管辖留言中的任意内容
本站提醒:不要进行人身攻击。谢谢配合。
在本站搜索相关信息
2003-2005 Ksw123.com All Rights Reserved. - TOP
Copyright © 2006 Ksw123.com. All rights reserved.中国考题网 版权所有