c语言作业题
【问题描述】输入一组无序的整数,输出其中出现次数最多的整数及其出现次数。10
0-5006325813-509-500632
【样例输出】
-50 3
0 3
哪里出错了
#include "stdio.h"
#include "string.h"
int main()
{
int i,j, n;
int flag,count;
int arr;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",arr);
}
for(i=0;i<n-1;i++)
{
for(j=1;j<=n;j++)
{
if(arr==arr)
{
flag=arr;
count=0;
count++;
}
}
{
printf("%d",flag);
printf("%d",count);
}
}
return 0;
}
本帖最后由 jackz007 于 2021-1-29 18:13 编辑
#include <stdio.h>
int main(void)
{
int i , j , k , n , m , t , arr , dat , cnt ;
scanf("%d" , & n) ;
for(i = 0 ; i < n ; i ++) scanf("%d" , & arr) ; // 读入数据
for(dat = arr , i = m = 1 ; i < n ; i ++) { // 把 arr 中总共 m 个不同数据存入 dat 中
for(k = 0 ; k < m && arr != dat ; k ++) ; // 把 arr 中总共 m 个不同数据存入 dat 中
if (k == m) dat = arr ; // 把 arr 中总共 m 个不同数据存入 dat 中
} // 把 arr 中总共 m 个不同数据存入 dat 中
for(i = 0 ; i < m - 1 ; i ++) { // 对 dat[] 按从小到大的顺序排序
for(j = i + 1 ; j < m ; j ++) { // 对 dat[] 按从小到大的顺序排序
if(dat > dat) { // 对 dat[] 按从小到大的顺序排序
t = dat ; // 对 dat[] 按从小到大的顺序排序
dat = dat ; // 对 dat[] 按从小到大的顺序排序
dat = t ; // 对 dat[] 按从小到大的顺序排序
} // 对 dat[] 按从小到大的顺序排序
} // 对 dat[] 按从小到大的顺序排序
} // 对 dat[] 按从小到大的顺序排序
for(i = 0 ; i < m ; i ++) cnt = 0 ; // 初始化计数数组 cnt
for(i = 0 ; i < m ; i ++) for(j = 0 ; j < n ; j ++) if(dat == arr) cnt ++ ; // 用 cnt 对 arr 进行不同数值的统计计数
for(k = 0 , i = 1 ; i < m ; i ++) if(cnt > cnt) k = i ; // 找到出现次数的多的次数,k 是索引。
for(i = 0 ; i < m ; i ++) if(cnt == cnt) printf("%d %d\n" , dat , cnt) ; // 把最多次数的数及出现次数统统显示出来
} 1.为啥声明变量不初始化?
2.scanf("%d",&n);scanf("%d",arr);把你这个改成scanf_s应该就可以了,边界安全问题,应该是编译器阻止了
jackz007 发表于 2021-1-29 18:10
你的理解是正确的,有这个学习态度一定能学好,加油!
页:
[1]