PTA
7-58 求整数序列中出现次数最多的数
- #include<stdio.h>
- #define N 1000
- int main() {
- int i,j,k,t,n,cnt,m=0,flag;
- int a[N],b[N][2];
- scanf("%d",&n);
- for(i=0; i<n; i++) {
- scanf("%d",&a[i]);
- }
- for(i=0; i<n; i++) {
- cnt = 0;
- flag = 0;
- t = a[i];
- // 若为老数字, 退出
- for(k=0; k<m; k++) {
- if(t==b[k][0]) {
- flag = 1;
- break;
- }
- }
- // 若为新数字, 将此数和出现次数存在数组 b 中
- if(flag==0) {
- b[m][0]=t;
- cnt++;
- for(j=i+1; j<n; j++) {
- if(a[j]==t) {
- cnt++;
- }
- }
- b[m][1]=cnt;
- m++;
- }
- }
- /*
- for(i=0;i<m;i++){
- printf("%d %d\n",b[i][0],b[i][1]);
- }
- */
- t=0;
- for(i=0; i<m; i++) {
- if(b[i][1]>t) {
- t=b[i][1];
- k=i;
- }
- }
- printf("%d %d",b[k][0],b[k][1]);
- }
分析:
1, 一开始会报错, 就写了 35-37 用来查看输出, 结果发现是变量没归零 (11-12)
2, 变量分类如下:
(1) 循环变量: i,j, 不嵌套的话可重复使用
(2) 临时变量: t, 可重复使用
(3) 存储变量: a[],b[], 唯一不可变
(4) 特殊用途变量: flag,cnt,m, 注意在循环中根据实际情况该清零的要清零
来源: http://www.bubuko.com/infodetail-3037339.html