c-大神们,程序有什么不完善的请加以斧正

问题描述

大神们,程序有什么不完善的请加以斧正

问题描述
  编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20。然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来。如果有两个元素值出现的次数相同,即并列第一,那么只打印比较小的那个值。
  输入格式:第一行是一个整数N,N? ?? 20;接下来有N行,每一行表示一个整数,并且按照从小到大的顺序排列。
  输出格式:输出只有一行,即出现次数最多的那个元素值。
输入输出样例
样例输入
5
100
150
150
200
250
样例输出
150
#include
int main()
{
int N,i,max=0,sum,ans;
scanf("%d",&N);
int a[N];
for(i=0;i<N;i++)
scanf("%d",&a[i]);
sum=1;
for(i=0;i<N;i++)
{
if(a[i]==a[i+1])//判断是否相等的个数
sum++;//从1计数每个相等数的个数
else
{
if(max<sum)
{
max=sum;
ans=i;
}
sum=1;//重新置1
}
}
printf("%dn",a[ans]);
return 0;
}
评测点序号 评测结果 得分 CPU使用 内存使用 下载评测数据
1 正确 10.00 0ms 1.597MB 输入 输出
2 正确 10.00 0ms 1.597MB VIP特权
3 正确 10.00 0ms 1.597MB VIP特权
4 正确 10.00 0ms 1.597MB VIP特权
5 正确 10.00 0ms 1.597MB VIP特权
6 错误 0.00 0ms 1.597MB VIP特权
7 错误 0.00 0ms 1.597MB VIP特权
8 正确 10.00 0ms 1.597MB VIP特权
9 正确 10.00 0ms 1.597MB VIP特权
10 正确 10.00 0ms 1.601MB VIP特权

解决方案

你的程序不满足
如果有两个元素值出现的次数相同,即并列第一,那么只打印比较小的那个值。
如果输入5 3 3 1 1 2,按理说输出1,结果你输出3

解决方案二:

给你写了一个

 #include<stdio.h>
int main()
{
    int N=0, x=0;
    int i;
    scanf("%d",&N);
    int a[20];
    int b[20];
    int n1 = 0;
    for(i=0;i<N;i++)
    {
        scanf("%d", &x);
        int f = 0;
        for (int i = 0; i < n1; i++)
        {
            if (x == a[i]) {b[i]++; f = 1; break;}
        }
        if (!f)
        {
            a[n1++] = x;
            b[n1 - 1] = 1;
        }
    }
    int max = 0;
    for (i = 0; i < n1; i++)
    {
        if (b[i] > b[max]) max = i;
        if (b[i] == b[max] && a[i] < a[max]) max = i;
    }
    printf("%dn", a[max]);
    return 0;
}

解决方案三:

当i=N-1时,a[i+1]下标就出界了

 for(i=0;i<N;i++)
{
if(a[i]==a[i+1])//判断是否相等的个数

解决方案四:

数组的定义不能使用变量,只能是常量。

时间: 2024-10-01 01:15:22

c-大神们,程序有什么不完善的请加以斧正的相关文章

c++-请问大神这个程序怎么写,主要是不知道 文件名怎么传

问题描述 请问大神这个程序怎么写,主要是不知道 文件名怎么传 解决方案 #include<iostream>#include<vector>using namespace std;int main(){ vector<double> vec_num; vec_num.push_back(1.1); vec_num.push_back(1.5); vec_num.push_back(1.2); vector<double>::reverse_iterator

请问这段代码为什么输出null,求大神解答程序执行的顺序?

问题描述 请问这段代码为什么输出null,求大神解答程序执行的顺序? public class xieCheng { private String baseName="Base"; public xieCheng(){ this.callName(); } public void callName(){ System.out.println(baseName); } } public class Sub extends xieCheng { private String baseNam

请问通过AD采集电压如转换成STC12C5A60S2单片机中PWM信号恒压跟踪向电池充电求大神C程序

问题描述 请问通过AD采集电压如转换成STC12C5A60S2单片机中PWM信号恒压跟踪向电池充电求大神C程序 解决方案 用 STC12C5A60S2 产生PWM波

据说不知道这些大神的程序员不是真正的程序员

简评:据说不知道这些大神的程序员不是真正的程序员,这些大神有的可以凭借一本未完成的书获得ACM图灵奖,有的微软开出百万年薪盖茨亲自来挖人,更甚者用自己发明的语言重新开发一套操作系统.这些大神不仅极大地促进了计算机行业的发展和软件技术的革新,而且也让我们这些后生的程序员能够在他们的技术铺垫上,利用他们开发的平台工具或是语言更好地开发软件.所以作为程序员的我们在学习技术的同时也应该多去了解这些大神背后的故事,在敬仰之余也去学习下他们不断进取,富有开创性的精神. D.E Knuth(高纳德. 克努特)

单片机-求大神看看程序问题该怎么改

问题描述 求大神看看程序问题该怎么改 请大神帮我看看我到底应该怎么改. 解决方案 delay 10ms 之间有个空格,函数和变量的名称不能有大写字母.小写字母.下划线.数字之外的其他字符, 应该为void delay10ms(); 解决方案二: 命名函数的时候不要以数字开头

C语言初学妹子求大神解决程序错误问题,求正解

问题描述 C语言初学妹子求大神解决程序错误问题,求正解 /*分别用while.do-while和for循环求:1!+2!+...+n!. 设计一个主界面,实现连续读入不同的n值并求解:*/ #include //用while实现 int main() { while(1) { int i=1,j=1,s=0,m=1; int n; printf("请输入n的值:n"); scanf("%dn",&n); if(n<1) break; else { s=

c语言-求助大神c程序的verilog写法

问题描述 求助大神c程序的verilog写法 5C 将下列c程序改为verilog程序#include #include int f0(int int int);int f1(int int int);int f2(int int int);int f3(int int int); int main(int argc char ** argv){ unsigned int s[5]={0X123456780X234567890X3456789A0X456789AB0X56789ABC}; uns

图片-前端大神、程序猿、看过来,这里的问题真精彩~

问题描述 前端大神.程序猿.看过来,这里的问题真精彩~ 我有一组ui li像这样: 代码1: <ui class="main_lower_ui"> <li>选集</li> <li class="selected">历史</li> </ui> 代码1效果图: 现在我想用jquery实现当我点击选集的时候 历史的字体颜色变回去 选集的颜色变浅色 像这样: 求解答~拜谢 解决方案 代码 $('.mai

mfc c c++-请教 大神 C程序内存读写错误。

问题描述 请教 大神 C程序内存读写错误. //定义两个全局变量 CNetSecure *pSecure=NULL; CHardWare *pHaredWare=NULL; //硬件信息按钮触发事件 void CFireWallTempDlg::OnBnClickedHardware() { //删除空间防止有残留 DeleteMem(); // TODO: 在此添加控件通知处理程序代码 CRect rect; GetDlgItem(IDC_PICSTATIC)->GetWindowRect(&am